Requete parametre multiple

manivictor Messages postés 7 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 6 août 2007 - 2 oct. 2006 à 13:30
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 9 oct. 2006 à 21:39
Bonjour
Je voudrais que vous m'aidiez à exécuter une requete tenant en compte plusieurs paramètres.Ma requete doit tenir compte d'une valeur d'un DBLookupcombobox, d'un intervalle de dates  et d'un intervalle de valeurs à saisir dans deux edits.
merci

3 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 33
2 oct. 2006 à 19:38
Donne nous les noms de chacun des composants à utiliser dans la requête ainsi que la requête en précisant les valeurs à substituer.
Sans cela, on pourra difficilement t'aider.
Ah oui, précise avec quelle base de données tu comptes travailler.

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
manivictor Messages postés 7 Date d'inscription dimanche 1 octobre 2006 Statut Membre Dernière intervention 6 août 2007
2 oct. 2006 à 23:26
Bonjour
Je travaille dans une base access et je veux gérer des données météos.La requete sans paramètre est la suivante:SELECT totpluie,datepluie,P.numstation from precipitation P, station S<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>




where P.numstation=S.numstation




 and   datepluie between #5/05/2006# and #10/05/2006#  and totpluie >='0'and totpluie<='50'
les paramètres sont numStation à choisir dans un DBlookupCombobox
datepluie à renseigner dans deux datetimepicker
puis totpluie à renseigner dans deux edit
voilà un peu ce que je veux resoudre
Merci à vous
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 33
9 oct. 2006 à 21:39
Puisque NumStation est à choisir dans un TDbLookupComboBox, on peut donc faire abstraction de la table Station dans la requête.
Il nous reste alors 5 paramètres variables :
- numstation (entier) = > dblookupcomboxNumStation
- date début (date) => dtpPluieInf
- date fin (date)  => dtpPluie
- totpluie borne inférieure (entier) => edPluvioInf
- totpluie borne supérieure  (entier) => edpluvioSup


Comme tu ne m'as pas indiqué les noms de tes contrôles de saisie, je leur en ai attribué un ci-dessus.
Je propose donc le code suivant :

 procedure  TForm1.btnSearchClick(Sender: TObject);
const
  sqlQuery  = 'SELECT totpluie, datepluie, numstation '
    
    + 'FROM precipitation '
    + 'WHERE numstation =  %d '
    + 'AND datepluie BETWEEN #%s# AND #%s# '
    + 'AND totpluie >= %d AND totpluie <= %d';
var
  NumStation: integer;
  
  DateInf, DateSup:  string ;
  PluvioInf, PluvioSup, PluvioTemp: integer;
begin
  {Il vaudrait mieux lire directement la valeur
  dans le champ déclaré dans la propriété DataField}
  NumStation : = dblookupcomboxNumStation.DataSource.DataSet.DataSetField.AsInteger;

  //vérification des dates sélectionnées
  if dtpPluieInf.Date < dtpPluieSup.Date then
  begin
    DateInf :=  DateToStr(dtpPluieInf.Date);
    DateSup := DateToStr(dtpPluieSup.Date);
  end
  else
  begin
    DateInf := DateToStr(dtpPluieSup.Date);
    DateSup := DateToStr(dtpPluieInf.Date);
   end ;

  PluvioInf : = StrToIntDef(edPluvioInf.Text, 0);
  PluvioSup :=  StrToIntDef(edPluvioSup.Text, 0);
  //vérification des valeurs inférieures et supérieures
  //et permutation si nécessaire
   if  PluvioSup < PluvioInf then
  begin
    PluvioTemp : = PluvioSup;
    PluvioSup :=  PluvioInf;
    PluvioInf := PluvioTemp;
   end ;

  Query1.SQL.Text : = Format(sqlQuery, [NumStation, DateInf, DateSup, PluvioInf, PluvioSup]);
  Query1.Open;
  //suite des opérations
end;


May Delphi be with you !





<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
Rejoignez-nous