Création d'un projet interbase/delphi

Signaler
Messages postés
8
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
22 octobre 2010
-
Messages postés
8
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
22 octobre 2010
-
comment cree t-on on projet interbase/delphi (je veus les différentes étapes) s'il vous plait! a savoir ou on place les différents objets à utiliser!

7 réponses

Messages postés
228
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 octobre 2006

Bonjour,

Trouves toi d'abord un bon bouquin sur le langage SQL. Pour ma part j'ai appris avec 'SQL2 Initiation/Programmation' de Christina Marée et Guy Ledant édité chez Dunod.

Le 'Developer's guide' d'IB est bien fait et plus particulièrement le châpitre 7 : 'Introduction to IBX' le lien entre IB et Delphi.

Voici en gros les étapes que j'utilise pour développer mes applications delphi/interbase :

- Définir correctement les structures des différentes tables des différentes bases de données.

- Les créer avec IBConsole, facile, pratique. Le langage SQL utilisé par interbase est un standard et facile d'utilisation. La doc fournit avec IB est pour moi un bon point de départ.

- Ne pas oublier qu'interbase exige un accès personnalisé, donc cela signifie création de login, mot de passe, ... (grant, role, ...)

- Définir les différentes requêtes que ton appli devra offrir à tes utilisateurs.

Du point de vue Delphi, crée un datamodule, dans lequel tu places les composants suivants :

- IBDatabase : pour se connecter à une des databases de ton serveur IB

- IBTable : pour avoir accès en lecture/écriture aux tables de la base de données déclarée via IBDatabase

- IBQuery : idem mais en lecture. Query = requète. C'est toute la puissance de la commande SELECT du langage SQL.

- IBTransaction : la clef de voute entre ton appli et le serveur IB. Le châpitre 9 du 'Developer's guide' sera plus clair que toutes explications que je pourrai te donner.

- Pour chaque query ou table lient leur un composant Datasource. En cas de modif, ton appli sera plus souple

Dans un form, tu peux alors placer des composants du type 'Data controls'. Tu pourras ainsi accéder aux champs de tes tables ou query comme des données standard de delphi : edit, text, grid, ...

Le composant TDBNavigator est un bon début pour te déplacer dans tes tables ou query. Tu peux aussi créer tes propres boutons de commandes 'first', 'previous', ...
Les composants IBTable, IBQuery, comportent des méthodes first, previous, find, ...

Pour l'édition, seul un IBTable te permettera de créer un nouveau record ou d'éditer un record existant.

Si tu veux modifier un query tu dois utiliser le composant IBUpdateSQL. Personnellement je ne l'emploie pas.

Voilà.

Si tu as d'autres questions n'hésite pas.
L'univers d'Interbase est puissant et passionnant.
Bonne prog.

Vincent Stryckmans
Messages postés
8
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
22 octobre 2010

Bonjour!
Tout d'abord je vous remercie pour avoir repondu à mon appel je n'en espérais pas tant cela m'a été d'un très grand secours merci encore!
j'ai eu une bonne documentation sur interbase par contre j'ai pas pu trouver grand chose sur delphi et les bases de données pour ne pas dire rien hormi les informations obtenues sur internet.
j'ai tout de meme fait pas mal de progrès; il me reste néamoins un problème:
* je me demande combien de composant datamodule on devrait avoir? faut-il un seul pour toute les tables ou un composant par table et par requêtte?
* comment fait on lorsqu'on a le cas d'une table en liaison avec trois autres?
faut il comme le veut delphi déposé 3 le composant ibtable de cette table et les trois tables concernées ou faut t-il en plus de ces six composants déposer un quatrième composant ibtable de la table en question ce qui fera 7 composant sans compter leur datasources pour faire les liaisons?
merci une fois de plus pour l'aide que vous m'avez apporté!

à très bientot je l'espère!
Messages postés
228
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 octobre 2006

Bonjour,

Les composants d'accès aux bases de données, tables, query, .... peuvent se placer dans la form où ils seront manipulés.

Cette solution est pratique dans très peu de cas car elle n'est pas souple.
Si ton projet comporte plusieurs form qui accèdent toutes aux données, il est plus que conseillé de placer les composants dans un datamodule ... qui sera unique à ton projet. delphi n'en accepte q'un seul.

C'est dans ce datamodule qui tu placeras les IBDatabase, IBTable, IBQuery et autres IBTransaction et tous les évenementts que tu souhaites faire exécuter : BeforeOpen et Afterclose pour ouvrir et fermer la transaction, ... Afterscroll pour analyser le contenu du record pointé , ....

Avant de répondre à ta question sur les liaisons, je vais d'abord dire sur les datasources car j'ai l'impression que tu mélanges les pinceaux ou en tout cas la terminologie que tu emploies n'est pas adéquate.

En deux, un datasource est un outil qui mais en communication les composants TDBEdit, TDBGrid, ... avec les données de ta base de données.
Ce n'est pas à proprement parlé une liaison.
L'avantage d'utiliser un datasource réside dans la souplesse de ton code.

Sur tes fom, tu assignes à la propriété 'datasource' d'un DBGrid, par exempe, un composant TDatasource et non pas directement une table ou un query.
En cours d'exécution, tu peux alors changer la source de données (dataset) indiquée dans le TDatasource et le contenu des tes forms s'adaptera sans aucune autre manip. Plus important encore, si ton projet évolue et il va évoluer, il sera plus facile de changer deux trois propriétés dans ton datamodule qu'une centaine dans tes form ou dans tes lignes de code.

Par exemple :

datamodule.datasource.dataset.next;

est la même commande que

datamodule.table.next; mais avec toute la souplesse nécessaire si tu veux changer le dataset que tu assignes au datasource.

Pour ta question sur les liaisons entre tables je suppose que tu as trois tables (les tables enfant) qui réagissent au déplacement du pointeur d'une quatrième, la table parent.

Pour chaque table enfant, tu dois assigner à la propriété mastersource du ibtable, la datasource de la table parent et dans masterfields, tu assignes le champ dans la tableparent qui sera en liaison avec la table enfant. Dans indexfieldname, tu assignes alors la valeur du champ dans la table enfant qui fera la liaison.
Cette façon de faire est la façon manuelle. Delphi tu proposes un petit assistant :

- commence d'abord par activer ta base de données et les transactions dont tu vas avoir besoin.
- dans la table enfant, assigne sa propriété mastersource, puis clqiue sur le bouton ... dans l'editbox de masterields.
Delphi te présentera alors la liste des champs des deux tables.
A toi de faire ton choix.

J'espère que mes explication ne sont pas trop nébuleuses et qu'elles te seront utiles.

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans
Messages postés
8
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
22 octobre 2010

Bonjour!
J'ai pris note de tout vos dires et en ai fait bon usage , je pense que mon projet a énormément évolué grace à vous!
j'aimerai savoir s'il est obligatoire de lier les différentes tables père et enfants car j'ai essayé d'avancer sans le faire et pour le moment ca marche; je réussis meme à y faire des enregistrements!
je continu néamoins aussi d'avoir quelque difficultés du moins liées à la programmation!
lors de la programmation de mes formulaires de mises à jour des tables, j'utilise des combobox; au départ j'utilisais le composant dbcombobox qui ne présentait qu'un seul enregistrement , je l'ai changé contre un simple qui exécute une requête dans l'évènement ondropdown mais lorsque mon formulaire comporte plus d'un combobox un seul réussit à se dérouler et c'est le tout premier programmé!
autre probléme je ne sais pas comment controler la présence des doublons car delphi findkey, setkey ne marche pas, j'ai éssayé avec ibtable.fieldbyname.value mais il ne controle que l'enregistrement sur le quel es positionné le pointeur!
j'aurai aimé vous envoyer déja l'exe de mon application mais je ne sais pas comment faire pour vous l'envoyer ceci avec les fichier de base de donnée
je suis sensée déposer mon projet dans deux semaine et je pense pouvoir le faire ceci grace à vous!
je vous remercie une fois de plus car je ne m'en serai jamais sortie sans vous!
Messages postés
228
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 octobre 2006

Bonjour,

D'abord, moi c'est Vincent - tu. Moi y en a pas aimé le 'vous'. Nous sommes tous des victimes de Bill Gates, donc dans la solidarité on se dit tu.

Bref, pour ton projet, tu peut zipper toutes tes sources et faire un backup de tes bases de données avec ibconsole.

Décris moi en deux le but de ton appli et les directory, la mise ne place, ....

Je suis terrassé par un virus biologique et cloué à la maison jusqu'à vendredi prochain.
Je crois bine que je trouverai 5 minutes à te consacrer entre deux pages de BD.

Quel étude fais-tu ? Tu passes en examen ?

@ +

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans
Messages postés
228
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 octobre 2006

Ma grand-mère disait aussi que ceux qui n'avait pas de tête devait avoir des jambes.

Dans mon cas, je réutiliserai mes petites doigts pour te ré-écrire mon adresse mail : vincent.stryckmans@b-rail.be

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans
Messages postés
8
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
22 octobre 2010

Salut!
j'ai du mal a envoyer mon document il prends ma boite
je fais ce projet dans le cadre d'un stage académique !
je suis étudiante en informatique de gestion deuxième année sur 3 et pour ce qui est de mon sujet je dois automatiser les procédure de caisse d'une société( recouvrement des fonds et indemnisation clients auquel il doivent de l'argent)
j'ai du mal à faire un recu de paiement qui reporte les de la principale table comment écrire un text sur qreport et y ajouter des édits qui prennent les informations enregistrés dans la table ou dans la requete?
je finirai bien par réussir à te l'envoyer
Merci Vincent si je peus t'appeller par ton prénom!
bye