[delphi 6.0] SQLQuerry et autres composants d'accès aux BD dbase...

SQLQuerry et autres composants d'accès aux BD dbase... [delphi 6.0] - Programmation

Marsh Posté le 21-02-2002 à 14:46:05    

j'avoue ke venant d'une formation aux langages comme asp, oracle et sql brut, g un peu de mal à me retrouver dans la doc énorme de delphi concernant les bd...
donc, si g bien compris, il faut utiliser un objet TQuerry pour executé une requète sql...  
mais c là k je comprends po trop :
comment on récupère l'ensemble de résultat ??? c un objet de quel type ? va-t-il être détruit si on ferme le TQuerry ?

 

[jfdsdjhfuetppo]--Message édité par Moustaaki--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 21-02-2002 à 14:46:05   

Reply

Marsh Posté le 21-02-2002 à 15:22:52    

upupup  :D

Reply

Marsh Posté le 21-02-2002 à 15:28:08    

et puis keske c ke cette histoire ? on est obligé de spécifier un parametre pour les select ?! kesako ??
on peut pas faire un truc tout simple tu style :
select * from etudiant, promo where etudiant.idPromo = promo.idPromo and idPromo = 3;
 
?? j'vois pas où je pourrais mettre des paramètres dans une requète comme ça !  
 
au pire, si idPromo est variable, on pourrait toujours le modifier à la saisie de la requète du style :
sql[O] {(puisqu'on est obligé de faire des TStrings... rrr)}
= 'select * from client where client.prenom ='+prenomClient;
avec nomClient = 'Robert' par exemple...
 
non, franchement, j'vois pas l'interêt des paramètres... surtout qu'ils sont obligatoires...
alors, expliquez moi, parcequ'apparement, j'ai rien comprirs

Reply

Marsh Posté le 21-02-2002 à 16:46:31    

ben si on peux sans parametre... ca amrche tres bien sans...
 
La requete exacte C :
 
Requete1.SQL.Add(' SELECT etudiant.*, promo.* from etudiant, promo WHERE etudiant.idpromo = 3 AND promo.idpromo = etudiant.idPromo';);
Requete1.Active := TRUE;
 
( si y a pas de resultat renvoyés ( style ALTER TABLE, etc) , fais plutot a la fin un Requete1.ExecSQL; )
Oublie pas de checker l'aide la dessus, C tres bien expliqué.
 
les paramètres, c quand tu as besoin de recupérer quelque chose de ton programme pour l'inclure  dedans, par exemple :
 
Requete1.SQL.Add(' SELECT etudiants.*, promo.* from etudiant, promo WHERE etudiant.idpromo = :numPromo AND promo.idpromo = etudiant.idPromo';);
Requete1.params[0].AsInteger := StrToInt(Edit1.Text);
Requete1.Active := TRUE;
 
Il parcourera tous les apramètres qu'il rencontrera un a un, et les range dans un tableau... si c le meme nom ca se rapporte a la meme case du tableau params, et voila.

 

[jfdsdjhfuetppo]--Message édité par Tetedeiench--[/jfdsdjhfuetppo]


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 21-02-2002 à 17:22:00    

merci !
et g pas bien compris pour récupérer les resultats : on récupère directement à partir de TQuerry en faisant TQuerry.fieldByName('nomClient';) par exemple ?
il ya pas moyen de récupérer tout le groupe d'enregistrement un peu comme un recordset en asp ? pour pouvoir l'utiliser ailleurs...
 
parcequ'en fait, je voudrais vraiment séparer la partie BD de la partie applicative et faire des fonctions du genre :
 
function getClientFromId(IdClient: integer): UnRecordSet;
...
 
le pb, c ke je trouve pas ce fameux equivalent du recordSet... est ce ke c le DBDGrid ? comment le crée-ton à partir d'un TQuerry ?
 
si c po possible comme ça, je me débrouillerais autrement en créant des objets client, par exemple... mais le pb, c'est que je voulais éviter de transmettre des objets lourds puisque par exemple j'en ai qui devrait contenir des tableaux d'objets... et j'aurais évité cela en travaillant directement avec des objets de type recordset... contenant toutes les valeurs souhaitées...

Reply

Marsh Posté le 22-02-2002 à 09:02:47    

Avant de demander, teste...
 
Une query je me suis apercu vite fait (et en regardant dans les propriétés dans l'aide :sarcastic: )  que ca se comportait exactement comme une table une fois ouverte... a toi de faire mumuse avec Fields[i] etc...
 
Il suffit de foutre une datasource reliée a ta query et a une DBgrid pour voir le resultat s'afficher dans une DBgrid...
 
par exemple...
 
Teste avant de demander va !

 

[jfdsdjhfuetppo]--Message édité par Tetedeiench--[/jfdsdjhfuetppo]


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 22-02-2002 à 09:50:14    

Tetedeiench a écrit a écrit :

Avant de demander, teste...
 
Une query je me suis apercu vite fait (et en regardant dans les propriétés dans l'aide :sarcastic: )  que ca se comportait exactement comme une table une fois ouverte... a toi de faire mumuse avec Fields[i] etc...
 
Il suffit de foutre une datasource reliée a ta query et a une DBgrid pour voir le resultat s'afficher dans une DBgrid...
 
par exemple...
 
Teste avant de demander va !  
 
 




 
 
en fait, j'avais vu ça mais je me bornais à vouloir trouver une structure de résultat ke je pourrais retourner dans ma fonction... et apparement, ya une methode pour faire une copie des champs de résultats mais ça pas l'air top... j'vais donc me débrouiller autrement avec de l'objet.
merci bp, à plus !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed