Pb avec requête paramétrée

codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 - 10 févr. 2007 à 15:09
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 - 10 févr. 2007 à 18:02
Bonjour,
quelqu'un peut m'expliquer ce qui ne va pas dans cette requête paramétrée:

   DM.SqlTemp.SQL.Clear;
  DM.SqlTemp.SQL.Add('SELECT tbl_Contact_Pro.id_Contact_Pro, tbl_Contact_Pro.id_Pro, tbl_Contact_Pro.Nom_Contact ');
  DM.SqlTemp.SQL.Add('FROM tbl_PRO INNER JOIN tbl_Contact_Pro ON tbl_PRO.id_PRO = tbl_Contact_Pro.id_Pro ');
  DM.SqlTemp.SQL.Add('WHERE tbl_Contact_Pro.id_Pro = :no_pro');
  DM.SqlTemp.ParamCheck := True;
  DM.SqlTemp.Parameters.ParamByName('no_Pro').Value:=DM.tblPROid_PRO.Value;  
   là j'ai le message: 'sqlTemp:Paramètres 'no_Pro' non trouvés'  
  DM.SqlTemp.Open;

Si à la place je mets:
DM.SqlTemp.Parameters[0].Value: =DM.tblPROid_PRO.Value;
j'ai le message: 'Indice de liste hors limites(0)

D'avance merci

Codial

5 réponses

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
10 févr. 2007 à 16:41
Bonjour

Avant de récupérer la valeur, il me semble qu'il faut faire au préalable deux choses :
  Vérifier le nombre de paramètres existant avec ParamCount, au cas où la requète ne renverrait rien 
  Spécifier son type avant d'y accéder :
      DM.SqlTemp.Parameters[0].DataType:=ftInteger; // ftString ftBoolean, ...
   DM.SqlTemp.Parameters[0].Value:=DM.tblPROid_PRO.Value;
  Ou en accès direct avec
      DM.SqlTemp.Parameters[0].AsInteger := DM.tblPROid_PRO.Value ;

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
10 févr. 2007 à 17:18
Bonjour,

Merci pour la réponse, mais sur:
DM.SqlTemp.Parameters[0].DataType:=ftInteger;
j'ai un message d'erreur: Identificateur non déclaré: ftInteger

et sur:
DM.SqlTemp.Parameters[0].AsInteger
Identificateur non déclaré:AsInteger
 
Cordialement
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
10 févr. 2007 à 17:38
Oups c'était valable pour le Params d'un TQuery (C'est la dure sanction de la réponse de mémoire ) il faut utiliser Parameters.Count et pour ftInteger, vérifie que tu ais bien l'unité DB définie dans le uses.

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
10 févr. 2007 à 17:56
Bonsoir,

oui, c'était ça  ça fonctionne maintenant. Oublier le DB dans les uses !!!
Maintenant, j'ai essayé de mettre ma requête dans le SQL de l'inspecteur d'objet, juste ma requete Select...etc...

Comment je peux paramétrer ma requête dans le Paraméters de l'inspecteur d'objet? J'avoue que j'ai pas encore compris cette manip.

Cordialement


 
0

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

Posez votre question
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
10 févr. 2007 à 18:02
Re,

Apparemment, j'ai trouvé je viens de faire la manip:
j'ai écrite, dans le Parameters de l'inspecteur d'objet: Name :id_pro et value id_pro

et j'ai laissé ton code dans la procédure:
   DM.SqlTemp.Parameters[0].DataType:=ftInteger;
  DM.SqlTemp.Parameters.Count;
  DM.SqlTemp.Parameters[0].Value:=DM.tblPROid_PRO.Value;
  DM.SqlTemp.Open;

c'est ça ?

Cordialement
0
Rejoignez-nous