je veux utiliser un seul composant pour passer plusieurs requetes avec des parametrées, et je ne sais pas comment ecrire la requete en utilisant la propriete
Query.sql.text:= .....
avec ces parametres, indiquez moi please.
je veux utiliser un seul composant pour passer plusieurs requetes avec des parametrées, et je ne sais pas comment ecrire la requete en utilisant la propriete
Query.sql.text:= .....
avec ces parametres, indiquez moi please.
ben tout simplement ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Query.sql.text:= 'SELECT * FROM table WHERE champ = :valeur';
essaye la touche
Code : Sélectionner tout - Visualiser dans une fenêtre à part Query.Parameters.ParamByName('valeur').asVariant := 'truc';
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
j'ai essayé avec ces commandes mais l'etat tojours sort en vide (sans données)
Etat ? QuickReport ? le DataSet est-il relié ?
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
bien sure
le probleme c'est quand j'utilise les deux premiers parametres il fonctionne tres bien, et quand je rajoute le troisieme (date2) ne marche pas, je ne sais pas comment faire pour regler ce probleme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 f.QMAntenne.Close; f.QMAntenne.SQL.Clear; f.QMAntenne.SQL.text:='Select t.antenne ,sum(q.montant) some from quittance q , titre t where ((q.codetitre=t.codetitre) and (q.anneeexercice =:anne) and (q.datequit between :date1 and :date2)) group by t.antenne order by some desc'; f.QMAntenne.Prepared:=true; f.QMAntenne.Parameters.ParamByName('anne').value:=DBLookupComboBox1.keyvalue; f.QMAntenne.Parameters.ParamByName('date1').value:=DateTimePicker1.Date; f.QMAntenne.Parameters.ParamByName('date2').value:=DateTimePicker2.Date; f.QMAntenne.Open; fenmantenne.quickrep1.preview;
Rajoute un ParamCheck := true dans le code (comme ci-dessous)
PS : Je me suis permis d'éclaircir ton code au passage ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 With f.QMAntenne do begin Close; SQL.Clear; SQL.text:='Select t.antenne ,sum(q.montant) some from quittance q , titre t where ((q.codetitre=t.codetitre) and (q.anneeexercice =:anne) and (q.datequit between :date1 and :date2)) group by t.antenne order by some desc'; ParamCheck := True; // au cas ou Prepared:=true; With Parameters do begin ParamByName('anne').value:=DBLookupComboBox1.keyvalue; ParamByName('date1').value:=DateTimePicker1.Date; ParamByName('date2').value:=DateTimePicker2.Date; end; Open; end; fenmantenne.quickrep1.preview;
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
j'ai copier et coller ton code mais rien de nouveau, je vois que tout est logique et je comprend pas comment ca ne donne pas de resultat.
Es-tu sûr que ta requête retournes des résultats en réalité ?
Peux-tu tester "à la main" la requête en remplaçant les paramètres par les valeurs que tu mettrais normalement ?
La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème
Pas de sollicitations techniques par MP -
Effectivement, le Between est-il correctement géré ?
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
ok j'ai connais le probleme finalement c'est la representation de la date dans la base de donnees, la date est representé comme suit AAAA-MM-JJ, maintenant je connais pas commet recupere la date a cette format directement a partir du composant DateTimePicker. pouvez m'aider our cette fonction.
Merci bien
... ensuite attention, oracle par exemple faut utiliser TO_DATE, en MySQL c'est automatique ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part FormatDateTime('YYYY-MM-DD', Picker.Date)
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
heu stop, si c'est réellement le problème c'est que le type des paramètres n'est pas détecté correctement et que les dates ont été détectées comme des strings. Tu utilises quoi comme SGBD ?
L'intérêt d'utiliser des requêtes paramétrées, c'est justement de s'affranchir des formats de dates et autres problèmes de formattage des données : Tu donnes un paramètre de type Date, avec une valeur TDateTime et le provider OLEDB sous-jaçent doit s'occuper des éventuelles convertions nécessaires.
Salut;
vaut mieux utiliser le bon type de champs surtout pour les Date et datetime
Si erreur de compilation remplacer AsDate par AsDateTime.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 With f.QMAntenne do begin Close; SQL.Clear; SQL.text:='Select t.antenne ,sum(q.montant) some from quittance q , titre t where ((q.codetitre=t.codetitre) and (q.anneeexercice =:anne) and (q.datequit between :date1 and :date2)) group by t.antenne order by some desc'; ParamCheck := True; // au cas ou Prepared:=true; With Parameters do begin ParamByName('anne').value:=DBLookupComboBox1.keyvalue; ParamByName('date1').AsDate:=DateTimePicker1.Date; ParamByName('date2').asDate:=DateTimePicker2.Date; end; Open; end; fenmantenne.quickrep1.preview;
COmme ça, tu ne saras pas obliger de formatter tes date.
A+
On progresse .....
j'ai eu le meme probleme avec access quand j'utilise adoquery
ma conseille est
dans access pour les champs de type date/heure utilser le format date/abregé
puis avec adoquery utiliser la commande suivante:
adoquery1.parameters.parambyname('date').value:=datetostr(datetimepicker.date);
est ca marche surementmrgreen
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager