Chercher: Et Ou Phrase  
Dans:          


Menu non membre

Pour les nouveau visiteurs

Entrez ici

Chercher le Forum



 

 Les Forums
  Programmation avancée
Repondre a ce sujet  

Sujet REQUETE QUI NE RENVOIE AUCUN ENREGISTREMENT
Message envoyé le 29-08-2021 par NCGUI (Côte d'ivoire)  
Bonjour à tous,

J’ai un gros souci qui me rend complètement fou. Je fais une petite application sur windev mobile 20. Une table unique sur laquelle je fais la requête ci-dessous :

SELECT
TRACEUR.IDTRACEUR AS IDTRACEUR,
TRACEUR.NO_IMMATR AS NO_IMMATR,
TRACEUR.DIRECTION_SCE AS DIRECTION_SCE,
TRACEUR.MARQUE_MODELE AS MARQUE_MODELE,
TRACEUR.IMEI AS IMEI,
TRACEUR.NO_SIM AS NO_SIM,
TRACEUR.NO_FACTURE AS NO_FACTURE,
TRACEUR.DATE_INSTALLATION AS DATE_INSTALLATION,
TRACEUR.NO_PROFORMA AS NO_PROFORMA,
TRACEUR.ANNEE AS ANNEE,
TRACEUR.RESEAU AS RESEAU,
TRACEUR.NO_BC AS NO_BC
FROM
TRACEUR
WHERE
TRACEUR.NO_IMMATR = {sNoImmatr}
AND TRACEUR.DIRECTION_SCE = {sDirectionContient}
AND TRACEUR.IMEI = {sIMEIContient}
AND TRACEUR.NO_SIM = {sSimContient}
AND TRACEUR.NO_FACTURE = {sFactureContient}
AND TRACEUR.NO_PROFORMA = {sProforma}
AND TRACEUR.ANNEE = {sAnnee}
AND TRACEUR.RESEAU = {sReseau}
AND TRACEUR.NO_BC = {sBC}
AND TRACEUR.MARQUE_MODELE = {sMarqueContient}
ORDER BY
NO_FACTURE ASC

J’ai donc un écran de filtrage qui contient des champs. Par exemple :
Zone de saisie IMEI.
Avec un bouton qui exécute la requête en passant la valeur saisie dans la zone de saisie IMEI.

REQ_LISTE_VEHIC_CHERCHE.sNoImmatr = RNO_IMMATR
REQ_LISTE_VEHIC_CHERCHE.sMarqueContient = RMARQUE_MODELE
REQ_LISTE_VEHIC_CHERCHE.sDirectionContient = RDIRECTION_SCE
REQ_LISTE_VEHIC_CHERCHE.sIMEIContient = RIMEI
REQ_LISTE_VEHIC_CHERCHE.sSimContient = RNO_SIM
REQ_LISTE_VEHIC_CHERCHE.sFactureContient = RNO_FACTURE
REQ_LISTE_VEHIC_CHERCHE.sAnnee = RANNEE
REQ_LISTE_VEHIC_CHERCHE.sProforma = RNO_PROFORMA

SELON Sélecteur
CAS 1
REQ_LISTE_VEHIC_CHERCHE.sReseau = Null
CAS 2
REQ_LISTE_VEHIC_CHERCHE.sReseau = 1
CAS 3
REQ_LISTE_VEHIC_CHERCHE.sReseau = 2
CAS 4
REQ_LISTE_VEHIC_CHERCHE.sReseau = 3
FIN
HExécuteRequête(REQ_LISTE_VEHIC_CHERCHE,hRequêteDéfaut)
-----La requête s'exécute normalement.


HLitPremier(REQ_LISTE_VEHIC_CHERCHE)
SI HEnDehors(REQ_LISTE_VEHIC_CHERCHE) ALORS

Sablier(Faux)

Info("Aucune ligne correspondant aux critères entrés !")

RETOUR

SINON

………


Mais la requête ne renvoie rien du tout. La valeur recherchée existe bel et bien
Aucune ligne correspondant aux critères entrés !
NB.

En fait, tous les paramètres ne sont pas utilisés en même temps. Quand je teste dans le simulateur de WM tout marche c'est après génération de l'apk et installation sur un android que la requête marche mal. J'ai même pris les paramètres un à un en mettant les autres en commentaires. La requête ne marche toujours pas.

La description du champ de saisie IMEI, dans l’onglet Détails, Retourner null si vide est coché…
Je ne sais pas ce que je fais mal… mais cela me rend fou. Prière de m’aider.

LA TABLE SUPPORTE LE NULL.

Message envoyé le 29-08-2021 par Voroltinquo (France)  
Bonjour,
Il y a plusieurs pistes :
Tes 'AND' sont très fort pour une recherche multicritères, et parfois se recoupent
Ainsi, avec le n° d'immatriculation, on a la marque, un 'OR' serait plus judicieux
D'autre part je vois que dans tes paramètre tu as 'contient', a priori tu autoriserais des information partielle. Dans ce cas un 'LIKE' serait plus approprié

WHERE ... LIKE %{Param}%


Il y a peut être plus simple, mais ça tourne

Message envoyé le 30-08-2021 par JohnDoe (France)  
salut
essaye au début de mettre
hannuledeclaration( REQ_LISTE_VEHIC_CHERCHE )
puis pour tout les critères:
si RNO_IMMATR<>"" alors REQ_LISTE_VEHIC_CHERCHE.sNoImmatr = RNO_IMMATR

Message envoyé le 30-08-2021 par NCGUI (Côte d'ivoire)  
Merci Voroltinquo, Effectivement au départ je n'avais utilisé que des Contient ( LIKE) dans la requêtes. C'est suite au mauvais fonctionnement que j'ai décidé d'utiliser l'égal à...

Message envoyé le 30-08-2021 par NCGUI (Côte d'ivoire)  
Merci JohnDoe,

Je teste et je fais un retour.

Je n'avais jamais été confronté à un tel cas j'avais.

Message envoyé le 03-09-2021 par NCGUI (Côte d'ivoire)  
Merci infiniment JohnDoe,

Ta solution a été la bonne. J'ai l"impression que Windev Mobile ne gère pas bien les requêtes avec multiples paramètres parce que cela marche bien dans l'appli sous Windev.

Merci.

Solution. Ignorer le paramètre quand il n'est pas utilisé au lieu de passer Null.

SI SansEspace(NO_IMMATR)<>"" ALORS
     REQ_LISTE_VEHIC_CHERCHE.sNoImmatr               = NO_IMMATR
FIN
SI SansEspace(MARQUE_MODELE)<>"" ALORS
     REQ_LISTE_VEHIC_CHERCHE.sMarqueContient          = MARQUE_MODELE
FIN
SI SansEspace(DIRECTION_SCE)<>"" ALORS
     REQ_LISTE_VEHIC_CHERCHE.sDirectionContient     = DIRECTION_SCE
FIN
SI SansEspace(IMEI)<>"" ALORS
     REQ_LISTE_VEHIC_CHERCHE.sIMEIContient          = IMEI
FIN
SI SansEspace(NO_SIM)<>"" ALORS
     REQ_LISTE_VEHIC_CHERCHE.sSimContient          = NO_SIM
FIN
SI SansEspace(NO_FACTURE)<>"" ALORS
     REQ_LISTE_VEHIC_CHERCHE.sFactureContient     = NO_FACTURE
FIN
SI SansEspace(ANNEE)<>"" ALORS
     REQ_LISTE_VEHIC_CHERCHE.sAnnee                    = ANNEE
FIN
SI SansEspace(NO_PROFORMA)<>"" ALORS
     REQ_LISTE_VEHIC_CHERCHE.sProforma               = NO_PROFORMA
FIN
SI SansEspace(NO_BC)<>"" ALORS
     REQ_LISTE_VEHIC_CHERCHE.sBC                         = NO_BC
FIN


Message envoyé le 05-09-2021 par JohnDoe (France)  
salut,
même sous windev cela pose le même problème , c'est normal .
A+


Pour répondre à ce message vous devez être membre

Entrée membre    Enregistrer

  Post reply  



  
Retour © 2021 forum.acam.ca
  
Flag Counter