DBEXPRESS EXEMPLES

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 3 mai 2004 à 21:34
bennas Messages postés 6 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 11 octobre 2011 - 19 sept. 2011 à 16:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22489-dbexpress-exemples

bennas Messages postés 6 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 11 octobre 2011
19 sept. 2011 à 16:52
c'est une binne idee merci
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
4 mai 2004 à 12:24
Super ce tuto... Ca fait un moment que je fais du DBExpress et c'est vrai qu'un tuto comme celui-ci m'aurait bien servi.

Après, concernant les remarques de DelphiProg, je pense que c'est aussi à chacun de travailler et de s'adapter avec l'autre langage de ce tuto : SQL. Celui qui débute en Delphi a au choix : aucune expérience en SQL, alors il va vite s'apercevoir que le * est à proscrire. Soit il connait le SQL et sait très bien tous ces pêtits détails.
Bref, ce que je veux dire, c'est que c'était pas le but de ce tutorial.
A++
ffert Messages postés 63 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 15 décembre 2009
4 mai 2004 à 11:37
ça peut paraître lourd.... mais si l'on fait : Select Id+1 as NewKey from SysId where tablename='TTEESSTT'.... et que l'enreg n'existe pas : on obtient aucune valeur pour NewKey, donc on est bien obligé de le gérer... C'est vraie que le Id+1 ferait gagner une ligne (le "Inc(IDLocal)", mais bon... sorry me...). Le max(Id) n'est pas nécessaire car il y a une ligne par table... Les ID peuvent être unique, dans ce cas là on utilise un nom de table fictif, tel que IDGLOBAL par exemple... (la table sysId ne contiendra qu'une seule ligne)... mais on peut également gérer un IDGlobal et des ID locaux aux tables... (exemple N° de facture : local à la table Facture)...

Pour le "SELECT * FROM SysID WHERE ..." : MEA CULPA.... c'est vraie que j'ai fais une erreur. maintenant l'erreur est relative, la table n'au que deux champs : ID et TableName, et la vitesse d'exécution sur une table contenant 2 champs (et UN SEUL enregistrement) et la même.... MAIS JE SUIS D'ACCORD AVEC TOI.... Un puriste doit écrire : "SELECT ID FROM SysID WHERE....'

Merci pour tes remarques... utiles...

PS : comment trouves tu les exemples dans le ZIP... c'est sommaire mais didactique, je pense...

à bientôt...
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
3 mai 2004 à 21:34
Ca me parait un peu lourd comme système pour trouver la nouvelle valeur d'une clé du type entier.
Avec un tout petit peu de code et une simple requête du genre :
Select Max(Id)+1 as NewKey from Sysd;
On obtient directement une valeur incrémentée.

Quant à écrire : "'SELECT * FROM SysID WHERE ..." juste pour récupérer la valeur d'un champ, on peut se demander si le chapitre optimisation n'a pas été escamoté.
Rejoignez-nous