Récupérer le numéro du dernier enregistrement [Résolu]

foudetous
Messages postés
22
Date d'inscription
mardi 25 mars 2008
Dernière intervention
17 juin 2009
- 19 déc. 2008 à 22:18 - Dernière réponse :  Utilisateur anonyme
- 19 déc. 2008 à 23:14
et bien voila  mon code  source delphi :

form3.ADOQuery1.SQL.clear;
 form3.adoquery1.sql.add('Select max(numc)as num from clients ');
  form3.adoquery1.open;
  num:=form3.adoquery1.FieldByName('num').AsInteger;
  form3.ADOQuery1.close;
  incre:=num+1; form3.Label5.Caption:=inttostr(incre);

sachant que clients est  une table de 4 champs: et comme je ajouter à chauque un clients j'ai besoin du numéro du  dernier enregistrement pour ajouter ce code:

adoquery1.SQL.Clear;
adoquery1.SQL.add('insert into clients (numc,nomc,prenomc,telc)values ('+quotedstr(inttostr(incre))+', '+quotedstr(edit1.Text)+', '+quotedstr(edit2.Text)+','+quotedstr(edit3.Text)+')');
adoquery1.ExecSQL;
adoquery1.close;

mais avec le premier code il me signal cette erreur:
classe d'exception EDatabaseError avec le message 'Valeur Connection ou Connection String manquante'
 
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
foudetous
Messages postés
22
Date d'inscription
mardi 25 mars 2008
Dernière intervention
17 juin 2009
- 19 déc. 2008 à 23:05
3
Merci
<strike>
</strike>oups j'ai trouvé, dslé la connection avec le adoconnection n'était pas établie et ça marche trés bien , j'apprécie beaucoup votre aide.
merci beaucoup

Boujour et bon courage.

Merci foudetous 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de foudetous
Utilisateur anonyme - 19 déc. 2008 à 22:35
0
Merci
Salut,

Je suis pas un expert en BDD mais il y a un soucis dans ton code

Seconde procédure :
adoquery1.SQL.add('insert into clients
(numc,nomc,prenomc,telc)values ('+quotedstr(inttostr(incre))+',
'+quotedstr(edit1.Text)+',
'+quotedstr(edit2.Text)+','+quotedstr(edit3.Text)+')');

Incre est du typer Integer mais tu l'enregistre dans ta base en le transtypant en string. Donc Incre est une string dans ta base

Première procédure :

num:=form3.adoquery1.FieldByName('num').AsInteger;

Ici tu essayes de récupérer le contenu du champ Num qui est un string en tant qu'entier (AsInteger) : il y a donc une méga sucette dans l'histoire.
num:=StrToInt(form3.adoquery1.FieldByName('num').AsInteger) devrait coller je pense
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 19 déc. 2008 à 22:39
0
Merci
Oupsss la boulette désolé :  num:=StrToInt(form3.adoquery1.FieldByName('num').AsString)
Commenter la réponse de Utilisateur anonyme
foudetous
Messages postés
22
Date d'inscription
mardi 25 mars 2008
Dernière intervention
17 juin 2009
- 19 déc. 2008 à 22:49
0
Merci
bjr Fracky,
en faite num est integer, mais ce que je ne comprend pas c qu'il signale msg erreur rien avec le premier code avant l'insertion .
Commenter la réponse de foudetous
Utilisateur anonyme - 19 déc. 2008 à 22:56
0
Merci
Tu as donc déclaré ton champs Incre en tant qu'entier quand tu as monté ta base.
Cependant quand tu fais  dans la premiere procédure :

Adoquery1.SQL.add('insert into clients (numc,nomc,prenomc,telc)values ('+quotedstr(inttostr(incre))+', '+quotedstr(edit1.Text)+', '+quotedstr(edit2.Text)+','+quotedstr(edit3.Text)+')');

Tu essayes d'ajouter un string ( IntToStr(Incre) transforme initialement Incre en String) et evidemment ca plante car ta valeur doit etre un entier : Du reste tu as ce message d'erreur "'Valeur Connection ou Connection String manquante'". Tu dois donc ajouter Incre et non IntToStr(Incre) dans ta base
Commenter la réponse de Utilisateur anonyme
foudetous
Messages postés
22
Date d'inscription
mardi 25 mars 2008
Dernière intervention
17 juin 2009
- 19 déc. 2008 à 22:59
0
Merci
mais ça plante sans le insert je vous dit qu'avec le premier ça plante
Commenter la réponse de foudetous
Utilisateur anonyme - 19 déc. 2008 à 23:13
0
Merci

ho ho
hé,  t'es un cas difficile en divination, je suis tout défréchie et puis la beuh à Cari elle fait plus d'effet  : Donc laisse moi me concentrer .

Bon alors pour résumer et faire vite : il ya une grosse couille et t'es dans la merde : ca te vas ? Maintenant qu'on a bien positionné le probleme on va pouvoir avancer.

Dans le 2 tu met quotedstr(inttostr(incre)) donc tu insères une string
.Dans le 1 tu met num:=StrToInt(form3.adoquery1.FieldByName('num').AsInteger) donc là tu demandes à récupérer un entier.

Donc grosso modo il y a un truc qui colle pas : soit Incre est une string alors le 1 plante, soit Incre est un entier et alors c'est le 2 qui plante. Donc si c'est le 1 qui plante c'est que Incre a été déclaré dans ta base en tant que string et non en tant qu'entier : A toi de vérifier (Au pire essaye les 2 cas et regarde ce que cela donne et tu verras que le probleme vient de là).
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 19 déc. 2008 à 23:14
0
Merci
Ah ben voila : Ado Création a encore fait des siennes. Quel coquin celui là .
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.