|
Il doit y avoir une solution simple! |
Iniciado por Steven B., jun., 28 2005 8:47 PM - 5 respostas |
| |
| | | |
|
| |
Publicado em junho, 28 2005 - 8:47 PM |
Je veux initialiser une requête d'un état, qui possède 4 paramètres:
iInitRequeteEtat(Etat_Fiche_Lttrac, lotValeur, chauValeur, dateDebValeur, dateFinValeur)
Cependant, dépendant si l'usager a rempli les champs ou non, je voudrais passer seulement quelques paramètres (ceux qui qui ont une valeur dans le champ correspondant). Le problème, c'est que même si je met la valeur des paramètrse (lotValeur, chauValeur...) à Null, la requête fait une comparaison à Null au lieu d'ignorer le paramètre. Il faut explicitement que je mette null dans l'iInitRequeteEtat, comme ceci:
(Etat_Fiche_Lttrac, null, chauValeur, dateDebValeur, dateFinValeur)
pour qu'une condition de sélection soit ignorée (ici lotValeur). Il faudrait donc que je fasse 16 SI pour vérifier quels champs sont vides et appeler la méthode de façon conséquente.
Mais je suis sur qu'il y a une façon plus simple, quelqu'un a quelque chose à me proposer?
Steven |
| |
| |
| | | |
|
| | |
| |
Publicado em junho, 29 2005 - 12:19 AM |
Dans un message Steven B. disait :
iInitRequeteEtat(Etat_Fiche_Lttrac, lotValeur, chauValeur, dateDebValeur, dateFinValeur)
Cependant, dépendant si l'usager a rempli les champs ou non, je voudrais passer seulement quelques paramètres (ceux qui qui ont une valeur dans le champ correspondant). Le problème, c'est que même si je met la valeur des paramètrse (lotValeur, chauValeur...) à Null, la requête fait une comparaison à Null au lieu d'ignorer le paramètre. Il faut explicitement que je mette null dans l'iInitRequeteEtat, comme ceci:
Ah qqun qui a la même pouic que moi )))
la seule solution que j'ai trouve est de faire la requête EN DEHORS de l'état, de déclarer l'état basé sur la requête.
initialiser les paramètres avant l'appel à l'état avec null ou valeur selon... et cela marche.
Et au fait ne pas oublier les Hannuledeclaration pour que la prochaine exécution reprenne bien les paramètres nouveaux
HTH -- Michel HERRSCHER CONSULTANT Président WINDASSO - Association des utilisateurs WxxDEV(c) Tel : +33450870912 Fax:+33450871741 http://www.windasso.org |
| |
| |
| | | |
|
| | |
| |
Publicado em junho, 29 2005 - 9:25 AM |
Personnellement je vous conseille de travailler avec une requête externe à l'état, tu pourras plus facilement l'utiliser....
Ensuite, avant de lancer ton état, lance ta requête de la manière suivante:
Si MonChampParametre1 <> "" alors MaRequete.Parametre1 = MonChampParametre1 FIN Si MonChampParametre2 <> "" alors MaRequete.Parametre2 = MonChampParametre2 FIN Si MonChampParametre3 <> "" alors MaRequete.Parametre3 = MonChampParametre3 FIN Si MonChampParametre4 <> "" alors MaRequete.Parametre4 = MonChampParametre4 FIN
HExecuteRequete(MaRequete,RequeteDefaut)
iApercu(i100) iImprimeEtat(MonEtat)
Et le tour est joué et tu à paramétré ta requête qu'avec les éléments dont tu avais besoin !!!! |
| |
| |
| | | |
|
| | |
| |
Publicado em junho, 29 2005 - 10:27 AM |
"Steven B." <guest@newsgroup.fr> a écrit dans le message de news: 42c17488$1@news.pcsoft.fr...
Je veux initialiser une requête d'un état, qui possède 4 paramètres: iInitRequeteEtat(Etat_Fiche_Lttrac, lotValeur, chauValeur, dateDebValeur, dateFinValeur) Cependant, dépendant si l'usager a rempli les champs ou non, je voudrais passer seulement quelques paramètres (ceux qui qui ont une valeur dans le champ correspondant). Le problème, c'est que même si je met la valeur des paramètrse (lotValeur, chauValeur...) à Null, la requête fait une comparaison à Null au lieu d'ignorer le paramètre. Il faut explicitement que je mette null dans l'iInitRequeteEtat, comme ceci: (Etat_Fiche_Lttrac, null, chauValeur, dateDebValeur, dateFinValeur) pour qu'une condition de sélection soit ignorée (ici lotValeur). Il faudrait donc que je fasse 16 SI pour vérifier quels champs sont vides et appeler la méthode de façon conséquente. Mais je suis sur qu'il y a une façon plus simple, quelqu'un a quelque chose à me proposer? Steven bonjour dans un requête paramétré pour ne pas tenir compte d'une condition de sélection donc d'un paramètre il suffit de remplacer celui si par Null et non mettre sa valeur à Null exemple : iInitRequeteEtat(Etat_Fiche_Lttrac, lotValeur, Null, dateDebValeur, dateFinValeur) ne tient pas compte de chauValeur utiliser des variant c'est plus facile
vlotValeur est variant vchauValeur est variant etc....
SI MonChamp <> "" ALORS // MonChamp contient une chaine) vlotValeur = MonChamp SINON vlotValeur = Null FIN
cdt JeAn-PhI |
| |
| |
| | | |
|
| | |
| |
Publicado em junho, 29 2005 - 1:35 PM |
si tu veux rien programmer de plus et conserver ta requete intégrée coches la propriété retourne Null si vide ( onglet général de la description ) pour les champs servants à paramétrer la requete
j'ai fais un test qui fonctionne
bon dev |
| |
| |
| | | |
|
| | |
| |
Publicado em junho, 29 2005 - 6:27 PM |
En intégrant un peu tout ce qui a été mentionné, j'ai réussi à arriver au résultat sans modifier l'état
Tout d'abord, j'ai mis la propriété retourne null si vide pour les champs que c'était possible (j'ai 2 champs qui proviennent d'une fenêtre interne, qui contient le résultat sous forme de concaténation des deux chaines de valeur). Ensuite, jai stocké les valeurs de mes champs dans des variables de type variant, puis vérifié si les dates correspondaient à des chaines vides, je les remplace par Null. Puis, directement dans ma fenêtre, je peux initiialiser la requête de mon état.
lotValeur, chauValeur, dateDebValeur, dateFinValeur sont des Variants
lotValeur = FiltreNoLot..Valeur chauValeur = FiltreNoChauffeur..Valeur dateDebValeur = ExtraitChaîne(PeriodeLog..Valeur, 1) dateFinValeur = ExtraitChaîne(PeriodeLog..Valeur, 2)
//pour les dates, elles ne sont pas égales à Null si vides mais à "", alors on fait la modification SI dateDebValeur = "" ALORS dateDebValeur = Null FIN SI dateFinValeur = "" ALORS dateFinValeur = Null FIN
iInitRequeteEtat(Etat_Fiche_Lttrac, lotValeur, chauValeur, dateDebValeur, dateFinValeur) iAperçu() iImprimeEtat(Etat_Fiche_Lttrac, lotValeur, chauValeur, dateDebValeur, dateFinValeur)
Merci à tous pour votre aide
Steven |
| |
| |
| | | |
|
| | | | |
| | |
|