IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Requête SQL et paramètres [WD17]


Sujet :

WinDev

  1. #1
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut Requête SQL et paramètres
    Bonjour,

    J'ai fait une requête SQL en saisissant directement le code SQL.
    Voici ma requête, qui fonctionne parfaitement :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    SELECT 
    	T_Valise.ID_Valise, 
    	T_Valise.NomPC, 
    	T_Valise.Version_IDS,
    	T_Valise.VersionStartIDS,
    	T_Valise.NumTeamViewer,
    	T_Valise.DateEnvoieValise,
    	T_Valise.DateFinMaintenanceSoft,
    	T_Valise.DateFinMaintenanceHard,
    	T_UsersValise.Responsable,
    	T_OS.OS,
    	T_Valise.NumLicenceWindows,
    	T_TypeValise.Type,
    	T_Valise.Scanner,
    	T_TypeConnexion.TypeConnexion,
    	T_Aeroport.Code,
    	T_Villes.Ville,
    	T_Pays.Nom,
    	T_Valise.NumSerieScan,
    	T_Valise.VersionSDK
    FROM 
    	T_Valise LEFT OUTER JOIN T_UsersValise ON T_Valise.ID_UsersValise = T_UsersValise.ID_UsersValise,
    	T_Valise LEFT OUTER JOIN T_OS ON T_Valise.ID_OS = T_OS.ID_OS,
    	T_Valise LEFT OUTER JOIN T_TypeValise ON T_Valise.TypeValise = T_TypeValise.ID_TypeValise,
    	T_Valise LEFT OUTER JOIN T_TypeConnexion ON T_Valise.ID_TypeConnexion = T_TypeConnexion.ID_TypeConnexion,
    	T_UsersValise LEFT OUTER JOIN T_Aeroport ON T_UsersValise.Aéroport = T_Aeroport.ID_Aeroport,
    	T_Aeroport LEFT OUTER JOIN T_Villes ON T_Aeroport.Ville = T_Villes.ID_Villes,
    	T_Aeroport LEFT OUTER JOIN T_Pays ON T_Aeroport.Pays = T_Pays.ID_Pays
    WHERE
    	(
    			T_Valise.NomPC LIKE '%{ParamFiltre}%'
    		OR	T_UsersValise.Responsable LIKE '%{ParamFiltre}%'
    		OR	T_TypeValise.Type LIKE '%{ParamFiltre}%'
    		OR	T_Valise.Scanner LIKE '%{ParamFiltre}%'
    		OR	T_OS.OS LIKE '%{ParamFiltre}%'
    	)
    ORDER BY
    	T_Valise.NomPC ASC
    Comme on le voit je passe des paramètres par le biais de "ParamFiltre".

    Dans mon code, Windev m'indique une erreur "La rubrique ParamFiltre n'appartient pas au fichier REQ_".
    Effectivement quand je saisie, dans mon code, "REQ_." il ne me propose pas "ParamFiltre".

    Que dois-je faire ou modifier ?

    Merci.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    Utilisez la fonction ChaîneConstruit pour insérer vos paramètres dans votre requête.

    Bon travail

    Hemgé

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Un truc qui me paraît bizarre dans ta requête. Tu as 5 fois paramfiltre. C'est normal ou tu t'es trompé (paramNomPC, paramType,...) ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  4. #4
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut
    J'utilise ce code pour exécuter ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    HExécuteRequête(REQ_ListeValise,Connexion,hRequêteDéfaut,Paramètre)
    HLitPremier(REQ_ListeValise)
    TANTQUE PAS HEnDehors(REQ_ListeValise)
    	Trace(REQ_ListeValise.NomPC)
    	HLitSuivant(REQ_ListeValise)
    FIN
    Mais cela ne fonctionne pas.

    ??

    Merci

  5. #5
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut
    Oui c'est tout à fait normal que j'utilise 5 fois "ParamFiltre".
    L'utilisateur a un champ de saisie et je filtre les enregistrements en fonction de sa saisie sur des champs que l'on a défini.

  6. #6
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Bonjour
    je ne ferais pas l'appel de paramètre de cette manière mais dans l'appel de l'exécution de la requete je rajouterai les %
    et dans le where :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    T_Valise.NomPC LIKE {ParamFiltre}'
    		OR	T_UsersValise.Responsable LIKE {ParamFiltre}
    		OR	T_TypeValise.Type LIKE {ParamFiltre}
    		OR	T_Valise.Scanner LIKE {ParamFiltre}
    		OR	T_OS.OS LIKE {ParamFiltre}
    Gancau

  7. #7
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut
    Merci, cela fonctionne.

    J'ai supprimé les ' et les %
    Et j'ai écrit mon code de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HExécuteRequête(REQ_ListeValise,Connexion,hRequêteDéfaut,"%" + SAI_Filtre + "%")
    TableAffiche(TABLE_REQ_ListeValise)

  8. #8
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Rebonjour,

    L'idée était que :
    • vous saisissez directement le code SQL dans une variable Chaîne ou via l'option Code SQL de l'assistant de création d'une requête (puis récupération dans votre variable Chaîne) ;
    • dans ce code, vous remplacez les paramètres par %1, %2 etc (voir ChaîneConstruit) dans votre code ;
    • à l'exécution, vous saisissez les paramètres et vous en intégrez les valeurs à la requête en utilisant ChaîneConstruit ;
    • vous exécutez cette requête 'complétée' via la fonction HExécuteRequêteSQL
    • et pas HExécuteRequête comme précédemment.


    Bon travail

    Hemgé

  9. #9
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    en fait dans la requête initiale, il fallait juste enlever les '
    Au niveau performance, je ne sais pas si cela va donner des temps de réponse raisonnables tous ces like ...

    Si tu peux nous faire un retour !

    à bientôt,

    Nicolas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel requête SQL avec paramètre
    Par sgcb01 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 13/11/2008, 12h13
  2. Requête SQL et paramêtre de date
    Par zorgov dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 21/07/2008, 09h36
  3. Requète SQL avec paramètres
    Par Stouille89 dans le forum C++Builder
    Réponses: 6
    Dernier message: 08/01/2008, 07h54
  4. Requête SQL avec paramètre sur BDD Access
    Par BigMike dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/06/2007, 12h21
  5. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo