Aide - Recherche - Membres - Calendrier
Version complète : PDB et base de données
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
Pierre R.
bonjour,

je débute dans la gestion des bases de données sous Palm (je veux parler des base que l'on gère avec les API Dm....)

1- Supposons que je crée des enregistrements dans mon programme dans une base , est ce que lors de la synchro, un fichier PDB va être crée ?

2 - à l'inverse, si je crée sur mon PC un fichier PDB, pourrais je le lire depuis mon appli palm avec les mêmes API ? (DmOpenDatabase...)

merci
Patrice
1- Je peux me tromper mais je crois qu'il faut que tu positionnes explicitement l'attribut backup de ta base pour qu'elle soit effectivement sauvegardée sur ton PC (et là c'est automatique). Tu dois trouver une API du style DmSetAttribute() pour faire ça.

2- Sans problème (exemple : les pdb de métro ou des horaires AF anim_wink.gif ). Il faut simplement respecter scrupuleusement le format de fichier PDB dont la description est disponible dans la doc qui accompagne le SDK de PalmSource (FileFormats.pdf ou quelque chose comme ça). Tu peux aussi trouver des outils qui te génèrent un pdb à partir de diverses sources. Enfin, pour l'instant je n'ai pas trop le temps, mais si cela intéresse d'autres développeurs, je pourrais vous proposer un petit tutorial rapide et court ( icon_lol2.gif ) sur la question.
Pierre R.
ah oui, le fichier s'appelle "Palm File Format Spec.pdf" j'avais pas vu. icon_bla.gif

sinon, bien sur que je suis intéressé par ta doc ! tout ce qui est déjà écrit n'est plus à faire ... icon_lol2.gif

merci
naguttes
Moi aussi Patrice, même si tu n'as pas eu l'occasion de répondre à mes questions ces derniers temps, ça ne veut pas dire que j'ai abandonné. Ca ne veut pas dire pour autant que je progresse beaucoup icon_cry.gif mais j'ai pas mal de boulot en ce moment.
cancan
En fait je crois qu'il faut utiliser le
DmSetDatabaseInfo pour mettre l'attribut a backup.
Pierre R.
ok, ça marche avec l'attribut qui va bien dans DmSetDatabaseHeader.
J'ai bien mon fichier .pdb sur mon PC lors de la synchro.

Mais franchement, je sais pas quoi en faire. Je pensais benoitement m'en servir avec les outils de MobileDB que j'ai - mais je me rend compte que les PDB utilisés ont des formats propriétaires... :?
En fait, si j'ai bien compris, l'extension PDB ne préjuge en rien de son format, exact ?

Et si je voulais transformer un fichier XLS en PDB à MON format de données (la structure C) comment faire ?

merci de votre aide
Patrice
Tout à fait exact : l'extension PDB est juste là pour reconnaître le fichier sous Windows. Le contenu est totalement quelconque et dépendant du logiciel qui l'exploite.

Le SDK de Palm contient un document intitulé "Palm File Format Spec" qui décrit la structure de base ( icon_lol2.gif ) de ce type de fichier. En gros, il y contient un en-tête, un index des "enregistrements" (records), puis le contenu des enregistrements (que tu gères comme tu veux).

Pour transformer un fichier XLS et au cas où ça t'intéresserait, j'ai trouvé une excellente librairie java open source qui permet de lire le contenu des fichiers Excel : jxl. Il ne te restera plus qu'à créer l'entête standard PDB pour rouler anim_wink.gif
Pierre R.
oh, tu sais, c'est pas le fichier xls qui me m'embete (je passerais plutot du coup par un fichier texte csv), c'est plutot qu'il faille se faire un programme qui génère à la main le fichier binaire PDB. je pensais que ça existait tout fait. icon_cry2.gif

merci quand même.
Schtunks
J'ai tapé PDB dans le moteur de recherche de PalmGear et la liste était déjà longue et notamment PDB 1.0 qui décompile les PDB en format texte et recompile les modifs...
Patrice
Oui, il y a plusieurs programmes qui permettent de générer des fichiers PDB à partir de directives plus ou moins complexes. Mais dans ce cas, c'est ton programme Palm qui doit s'adapter au format généré sur le PC...
Patrice
CITATION(Patrice)
...mais si cela intéresse d'autres développeurs, je pourrais vous proposer un petit tutorial rapide et court ( icon_lol2.gif ) sur la question.

Voilà déjà un exemple de source pour créer un PDB sur PC. Il ne sera pas très utile en l'état car il se contente de créer 2 records (chaînes de caractères) peu utiles... Mais ça donnera une idée de ce qu'il y a à faire.

Pour créer votre propre PDB, il vous faudra :
- Changer le nom, le creator ID et le type de la base
- Modifier le nombre de records
- Créer les records que vous voulez
- Calculer la taille de chaque record et ajuster en conséquence l'offset avant de l'écrire
- Faire attention à inverser le byte order de tous les entiers que vous écrivez dans vos records (sauf sur Mac)

Ce source est en C ANSI, il peut être compilé avec GCC ou Visual C++ (entre autres). Si vous voulez compiler sur Mac, mettez le "#define __LITTLE_ENDIAN" en commentaire car sur cet OS, l'ordre des octets est le même que sur Palm. Vous pouvez le compiler et l'utiliser pour regarder comment le PDB généré apparaît sur le Palm (avec FileZ par exemple)...
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.