Sql requete question

WinLin Messages postés 86 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 3 septembre 2007 - 5 avril 2005 à 22:01
WinLin Messages postés 86 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 3 septembre 2007 - 6 avril 2005 à 22:13
bonjour a tous encore une chose que je ne comprend pas

je veux faire un update d'un champs d'une table
et il y a des champs numerique et d'autre Alpha
Integer et string
Une requete qui fonctionne parfaitement exemple
Query3.SQL.Add('UPDATE societe SET nomsoc=:formsoc,ville=:formville, cp=:formcp, pays=:formpays,rue=:formrue, refclisoc=:formref WHERE refclisoc=:formref');

dans cet requete ci dessus ce sont tout des string et sa fonctionne parfaitement j'ai ete parametrer les parametre de la query

et la une requete qui fait un update d'un champs
ou il y a des string et des entier

Query3.SQL.Add('UPDATE societe SET nomsoc=:formsoc,ville=:formville, cp=:formcp, pays=:formpays,rue=:formrue,Numrue=:formnumrue, refclisoc=:formref WHERE refclisoc=:formref');

en sachant que numrue est un numerique
la requete ne passe pas il me met type mismatch EXPRESSION

fin je vais essayer en deux requete une pour les string
une pour les integers

mais je comprend pas pourquoi ma requete passe pas avec des string et des integer a update

merci d'avance Winlin

12 réponses

WinLin Messages postés 86 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 3 septembre 2007
5 avril 2005 à 22:48
et bien j'arrive pas a inserer des integer dans ma database
voici mon code

query5.SQL.Clear;
query5.SQL.Add('UPDATE societe SET telinter=:formtelinter,telprefix=:formtelpref,telnum=:formtelnum');
query5.SQL.Add(',faxinter=:formfaxinter,faxprefix=:formfaxprefix,faxnum=:formfaxnum');
query5.SQL.Add(',gsminter=:formgsminter,gsmprefix=:formgsmprefix,gsmnum=:formgsmnum');
query5.SQL.Add(',numrue=:formnumrue,refclisoc=:formref WHERE refclisoc=:formref');
query5.ParamByName('formref').AsString:=label25.Caption;
query5.ParamByName('formtelinter').AsInteger:=strtoint(edit64.Text);
query5.ParamByName('formtelpref').AsInteger:=strtoint(edit65.Text);
query5.ParamByName('formtelnum').AsInteger:=strtoint(edit66.Text);
query5.ParamByName('formfaxinter').AsInteger:=strtoint(edit69.Text);
query5.ParamByName('formfaxprefix').AsInteger:=strtoint(edit68.Text);
query5.ParamByName('formfaxnum').AsInteger:=strtoint(edit67.Text);
query5.ParamByName('formgsminter').AsInteger:=strtoint(edit70.Text);
query5.ParamByName('formgsmprefix').AsInteger:=strtoint(edit71.Text);
query5.ParamByName('formgsmnum').AsInteger:=strtoint(edit72.Text);
query5.ParamByName('formnumrue').Asinteger:=strtoint(edit59.Text);
query5.ExecSQL;

Merci d'avance Winlin
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
6 avril 2005 à 00:01
Comme beaucoup de tes questions tournent autour de SQL, sais-tu qu'il existe aussi http://www.sqlfr.com ?


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.pourflorenceethussein.org
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
6 avril 2005 à 00:33
Es-tu absolument sûr que tous les contrôles d'édition devant faire l'objet d'une conversion de chaine vers numérique contiennent bien des valeurs ?

Sinon, le problème peut aussi provenir de la chaine qui n'est pas délimitée :
query5.ParamByName('formref').AsString:= label25.Caption;

Remplace par :
query5.ParamByName('formref').AsString:= QuotedStr( label25.Caption);

Imaginons un quart de secondes que Label25 contienne une chaine avec des espaces au beau milieu. Comment fait le parser SQL pour s'y retrouver dans ce cas là ?


<HR color =#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.pourflorenceethussein.org
0
WinLin Messages postés 86 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 3 septembre 2007
6 avril 2005 à 08:19
delphiprog merci pour tes reponses c'est sympas
j'ai bien regarder sur delphi prog aussi j'ai regarde sur google un tas de site aussi
ou j'ai trouver reponse avant de poster dans le forum
et un tas de doc mais pas de reponse a mon probleme

mais je modifie bien et parfaitement ma base de donnée
tant que les champs sont en string

ma requete plante des que je veux mettre des entier en modification


et bien j'arrive pas a inserer des integer dans ma database
voici mon code

query5.SQL.Clear;
query5.SQL.Add('UPDATE societe SET telinter=:formtelinter,telprefix=:formtelpref,telnum=:formtelnum');
query5.SQL.Add(',faxinter=:formfaxinter,faxprefix=:formfaxprefix,faxnum=:formfaxnum');
query5.SQL.Add(',gsminter=:formgsminter,gsmprefix=:formgsmprefix,gsmnum=:formgsmnum');
query5.SQL.Add(',numrue=:formnumrue,refclisoc=:formref WHERE refclisoc=:formref');
query5.ParamByName('formref').AsString:=label25.Caption;
query5.ParamByName('formtelinter').AsInteger:=strtoint(edit64.Text);
query5.ParamByName('formtelpref').AsInteger:=strtoint(edit65.Text);
query5.ParamByName('formtelnum').AsInteger:=strtoint(edit66.Text);
query5.ParamByName('formfaxinter').AsInteger:=strtoint(edit69.Text);
query5.ParamByName('formfaxprefix').AsInteger:=strtoint(edit68.Text);
query5.ParamByName('formfaxnum').AsInteger:=strtoint(edit67.Text);
query5.ParamByName('formgsminter').AsInteger:=strtoint(edit70.Text);
query5.ParamByName('formgsmprefix').AsInteger:=strtoint(edit71.Text);
query5.ParamByName('formgsmnum').AsInteger:=strtoint(edit72.Text);
query5.ParamByName('formnumrue').Asinteger:=strtoint(edit59.Text);
query5.ExecSQL;

Merci d'avance Winlin
ceci ne fonctionne pas il me met error creating cursor handle
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WinLin Messages postés 86 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 3 septembre 2007
6 avril 2005 à 08:50
sur et certain de mes controle aussi je le dir apres verification
et l'erreur quand je veux faire un update c'est
TYPE MISMATCH EXPRESSION
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
6 avril 2005 à 12:39
TYPE MISMATCH EXPRESSION signifie que le type de données que tu veux affecter n'est pas celui qui correspond au type du champ de la table. Vérifie bien tes affectations...


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.pourflorenceethussein.org
0
WinLin Messages postés 86 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 3 septembre 2007
6 avril 2005 à 16:03
ah d'accord merci
0
WinLin Messages postés 86 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 3 septembre 2007
6 avril 2005 à 16:17
ok mais a long integer sa correspond a quoi en pascal ?
long integer = longint ?

a quoi correspond un long integer de ma base comme type de variable

j'ai le longint en pascal mais comment je peux transformer une chaine de caractere ayant uniquement des chiffres en longint pour ensuite le mettre dans la database

mercid 'avance Winlin
0
WinLin Messages postés 86 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 3 septembre 2007
6 avril 2005 à 16:27
encore une question pourquoi j'arrive a faire un insert dans la table
et que j'ai des entier dans mes numeraux de telephon et que dans la table il sont mis en longint
mais que j'arrive pas a les updates ? ??

mrtvi d'avance Winlin
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
6 avril 2005 à 20:21
Pour ta dernière question, relis bien l'aide en ligne de Delphi au sujet de StrToInt.


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.pourflorenceethussein.org
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
6 avril 2005 à 20:22
"a quoi correspond un long integer de ma base comme type de variable"

Si déjà on savait quelle base de données tu utilises...


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.pourflorenceethussein.org
0
WinLin Messages postés 86 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 3 septembre 2007
6 avril 2005 à 22:13
heum d'accord excuse moi delphiprog de ne pas etre assez precis je vais voir la doc sur strtoint et si je trouve pas je reviens mettre un poste je te remercie de ta patience et de ton aide c'est vraiment sympas
sinon j'utilise des fichier au format DB paradox 7
Winlin
0
Rejoignez-nous