Requête SQL

Résolu
Signaler
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008
-
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008
-
Bonjour à tous,

je me retrouve devant un petit message d'erreur que je n'arrive pas à résoudre.

j'utilise  ADOQuery, ADOTable, DATASource.

voici le code : 

ADOQuery6.SQL.Add('SELECT  code from Requêtepointage');          ADOQuery6.SQL.Add('WHERE numero_semaine ' + semaine + ' and jours.jour ' + jour + ' and id = '  + IntToStr(i) + ' ' );
          ADOQuery6.Open;

le message d'erreur est le suivant.

 Aucune valeur donnée pour un ou plusieurs parametres

quelqu'un aurait-il une idée?

merci .

Pierre

9 réponses

Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
En mettant ":" devant ton paramètre dans ton sql.

Simon
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
Bonjour,
 tu ne passes pas des paramètres, mais des variables non renseignées..
Ecris ta requête avec des paramètres :
   numero_semaine= :NumS
   jours.jour := JourS
   id =:ID

Et ensuite renseignes-les en faisant :

ADOQuery6.FieldByName('NumS').Value := blablabla.Text;
ADOQuery6.FieldByName('JourS').Value := blabla.Text;
ADOQuery6.FieldByName('ID').Value := blabla.Value;
ADOQuery6.Open;

cantador
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008

avec une variable, la requête fonctionne mais dès que j'en rajoute une deuxième, il plante.
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008

la première et la troisième variable passe mais pas la deuxième.
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
Fais comme ça :

procedure TForm1.Button1Click(Sender: TObject);
begin
  with ADOQuery6.SQL do
  begin
    Clear;
    Add('SELECT  code from Requêtepointage');
    Add('WHERE (numero_semaine =:NumS) and ');
    Add('(jours.jour =:JourS) and ');
    Add('(id =:ID) ');
    ADOQuery6.FieldByName('NumS').Value := blablabla.Text;
    ADOQuery6.FieldByName('JourS').Value := blabla.Text;
    ADOQuery6.FieldByName('ID').Value := blabla.Value;
    ADOQuery6.Open;
    ADOQuery6.Open;
  end;
end;

C'est beaucoup plus simple..

cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
un open en trop..

cantador
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Salut,

Je pense qu'il te manque un lien entre les tables Requêtepointage et Jours.
Au passage, il vaut mieux éviter les caractères spéciaux dans les noms de tables...

Simon
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008

comment est-ce que je dois déclarer mes paramètres?
NumS
JourS
ID
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008

merci à vous deux pour votre aide précieuse.

bonne journée

Pierre