REQUETE SQL PARAMATREE DE TYPE INTEGER

Signaler
Messages postés
71
Date d'inscription
lundi 24 mai 2004
Statut
Membre
Dernière intervention
13 septembre 2006
-
Messages postés
33
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
12 septembre 2007
-
Bonjour à tous, mon problème est le suivant :



Je souhaite faire passer un parametre de type integer sous cette forme de concatenation

mais ca ne fonctionne pas --> Types incompatibles : 'String' et 'integer'

Pourtant mon champ num_pat est en integer dans ma table access et mon tableau tabPat egalement.

Je pense que delphi me demande du string car j'utilise le caractere de concatenation +.

Ne connaissant pas tres bien Delphi 7, je ne trouve pas la methode

Merci par avance pour vos éventuelles suggestions.





tabPat : array[1..200] of integer; --> déclarer en Private et rempli dans le FormCreate



Var

ind : integer; --> variable locale a ma procedure



Begin

ind := tabPat[comboPat.ItemIndex];

adoquery.sql.clear

adoquery.sql.add('SELECT num_ordo FROM ordonnance WHERE num_pat = ' + ind + ' ; ');

adoquery.sql.open

6 réponses

Messages postés
5
Date d'inscription
jeudi 29 décembre 2005
Statut
Membre
Dernière intervention
31 décembre 2005

Bonjour,

Vous devriez essayer la syntaxe suivant le modèle ci-après :
('.... '+ quotedstr(....))

ce qui pourrait donner ceci :

sql.add('SELECT num_ordo FROM ordonnance WHERE num_pat = ' +quotedstr( IntToStr(ind) )+ ' ; ' );
et si celà ne marche pas, voyez aussi à supprimer la concaténation du point virgule : +';' , ce qui devrait donner :

sql.add('SELECT num_ordo FROM ordonnance WHERE num_pat = ' +quotedstr( IntToStr(ind) );
puisque dans la parenthèse du sql.add, il s'agit d'un string et non d'une instruction.

Bon courage !
Messages postés
5
Date d'inscription
jeudi 29 décembre 2005
Statut
Membre
Dernière intervention
31 décembre 2005

Mille excuses,

j'ai par erreur effacé une parenthèse à la fin . Il faut donc cette instruction :

sql.add('SELECT num_ordo FROM ordonnance WHERE num_pat = ' +quotedstr( IntToStr(ind) ));
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
ou plus simplement :

begin
with adoquery.sql do begin
clear;
add(format('SELECT num_ordo FROM ordonnance WHERE num_pat=%d',
[tabPat[comboPat.ItemIndex]]));
open;
end;
end;

<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
Messages postés
5
Date d'inscription
jeudi 29 décembre 2005
Statut
Membre
Dernière intervention
31 décembre 2005

Merci FOXI de me rappeler cette façon de rédiger l'instruction, effectivement plus directe.
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
de rien ... tu verras vite, si tu viens souvent, que je suis un trés grand utilisateur de la fonction Format (qui a mon sens est la meilleure des fonctions de convertions vers chaine de caractere, egalement la plus rapide)

<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
Messages postés
33
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
12 septembre 2007

Edite52

1000000000000000 merci loool

tu sais pas comme tu me sauve avec ton quotedstr lol foutu focntion lol :p

merci merci pour ce joli post merci a tout et aussi à lolorenzeb ki sans lui yauré pas se post

merci a foxi aussi