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 :

comment exécuter une requête SQL [WD14]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Developpement informatique
    Inscrit en
    Mars 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpement informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 38
    Points : 38
    Points
    38
    Par défaut comment exécuter une requête SQL
    j'aimerai utiliser une fonction qui permet d'exécuter une requête SQL sur une ou plusieurs tables d'une base de données. Si la requête exécute une instruction: INSERT, DELETE ou UPDATE, une valeur booléenne sera retournée (0 ou 1).
    Dans le cas d'une requête de type SELECT, vous obtiendrez un identifiant de résultat.

  2. #2
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Bonjour,
    Vous avez manifestement des lacunes en Windev.
    Vous devez au préalable vous former. Les livres d'autoformation livrés avec votre version de Windev sont fait pour cela.
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Developpement informatique
    Inscrit en
    Mars 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpement informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    je demande est ce que vous pouvez m'aidé pour que je puis utilisé une fonction qui permet d’exécuter une requête apart la fonction HExécuteRequêteSQL()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id est un entier = HExécuteRequêteSQL(sdReqSup,"SELECT LAST_INSERT_ID() from doc")
    car cette fonction retourne seulement booléen mais moi je veux qu'il me retourne le dernier identificateur dans la table de la base de données a l'aide de la fonction

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Je peux t'aider sans problème: Voici le lien vers l'aide en ligne de hExecuteRequeteSql, qui si tu l'avais lu t'aurai donné la réponse à ton problème .

    Je rejoins L.nico, tu devrais vraiement te pencher sur le guide d'autoformation, et au minimum sur l'aide en ligne et ses exemples...

    Tatayo.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 279
    Points : 175
    Points
    175
    Par défaut
    Vous devez dans tous les cas utiliser HExécuteRequêteSQL() pour exécuter votre requête. Cette procédure renvoi un booléen indiquant si tout c'est bien passé.

    Ensuite vous devrez parcourir les résultat à la recherche de ce que vous souhaitez à l'aide de HLitPremier() / HLitDernier() / ...

  6. #6
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 467
    Points : 806
    Points
    806
    Par défaut
    Faire deux requêtes en une fois. La première est un update, ou un insert.
    La deuxième est SELECT SCOPE_IDENTITY() (j'ai pas la doc sous les yeux mais je pense que ça vous conviendrait).

    (ou alors, @@IDENTITY au lieu de SCOPE_IDENTITY)

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Developpement informatique
    Inscrit en
    Mars 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpement informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    j'ai séléctionnée toute la rubrique nSerie de la table doc
    après j'ai li le dernier enregistrement
    et j'essaye de le lire mé il me envoie seulement 0 et non pas le numero di derniere enregistement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ReqDoc est une Source de Données
    HExécuteRequêteSQL(ReqDoc,"SELECT nSerie FROM doc")
    HLitDernier(doc,nSerie)
    TANTQUE PAS HEnDehors
    	HLitPrécédent(doc,nSerie)
    FIN
    IdF est un entier = HNumEnr(doc)
    Info("le idF : ",IdF)

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 386
    Points : 220
    Points
    220
    Par défaut
    Pour tests faire :


    TxtReq est une chaine
    ReqDoc est une Source de Données

    TxtReq =[
    SELECT nSerie FROM doc
    ]

    HExécuteRequêteSQL(ReqDoc,TxtReq )
    HLitDernier(ReqDoc)
    TANTQUE PAS HEnDehors
    trace(ReqDoc.nSerie)
    HLitPrécédent(ReqDoc)
    FIN

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 386
    Points : 220
    Points
    220
    Par défaut
    Pour le SELECT LAST_INSERT_ID() faire :
    SQLTransaction(sqlDébut,MaConnexion)

    TxtReq =[
    INSERT INTO taTable ( ..... ) Values (.....)
    ]
    HExécuteRequêteSQL(ReqDoc,MaConnexion,hRequêteSansCorrection,TxtReq)

    TxtReq =[
    SELECT LAST_INSERT_ID()
    ]
    HExécuteRequêteSQL(ReqDoc,MaConnexion,hRequêteSansCorrection,TxtReq)

    HLitPremier(ReqDoc)

    info(HRécupèreEnregistrement(ReqDoc))

    SQLTransaction(sqlFin,MaConnexion)
    !!!! J'ai fait court, penser à faire Si HExécuteRequêteSQL(...) Alors .... !!!

    Ta base, c'est bien MySQL ?

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 279
    Points : 175
    Points
    175
    Par défaut
    Citation Envoyé par samoel24 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ReqDoc est une Source de Données
    HExécuteRequêteSQL(ReqDoc,"SELECT nSerie FROM doc")
    HLitDernier(doc,nSerie)
    TANTQUE PAS HEnDehors
    	HLitPrécédent(doc,nSerie)
    FIN
    IdF est un entier = HNumEnr(doc)
    Info("le idF : ",IdF)
    Moi je ferais plutôt un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ReqDoc est une Source de Données
    HExécuteRequêteSQL(ReqDoc,"SELECT nSerie FROM doc ORDER BY nSerie DESC")
    HLitPremier(ReqDoc)
    IdF est un entier = ReqDoc.nSerie
    Info("le idF : ",IdF)
    et c'est tout ...

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Developpement informatique
    Inscrit en
    Mars 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpement informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    ca marche très bien avec ce dernier code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ReqDoc est une Source de Données
    HExécuteRequêteSQL(ReqDoc,"SELECT nSerie FROM doc")
    HLitDernier(ReqDoc)
    IdF est un entier = ReqDoc.nSerie
    Info("le idF : ",IdF)
    merciii "luludev" c'est gentil de votre part

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 386
    Points : 220
    Points
    220
    Par défaut
    samoel24,

    Si vous changez le titre de votre post nos réponses ne collent plus !

    >ca marche très bien avec ce dernier code

    oui si vous êtes seul à écrire dans la base, ce qui est rarement le cas.

    @+

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 279
    Points : 175
    Points
    175
    Par défaut
    Citation Envoyé par Thomad Voir le message
    >ca marche très bien avec ce dernier code

    oui si vous êtes seul à écrire dans la base, ce qui est rarement le cas.
    Pensez vous qu'avez LAST_INSERT_ID() vous aurez plus de succès ?
    S'il y a une insertion après votre dernière ajout vous aurez le même problème qu'avec mon code, non ?

    Merci de nous éclaircir sur ce point SVP.

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 386
    Points : 220
    Points
    220
    Par défaut
    Pensez vous qu'avez LAST_INSERT_ID() vous aurez plus de succès ?
    S'il y a une insertion après votre dernière ajout vous aurez le même problème qu'avec mon code, non ?

    Merci de nous éclaircir sur ce point SVP.
    Non car c'est dans une transaction mais ça ne fonctionne bien sûr qu'en Insert.

  15. #15
    Nouveau membre du Club
    Femme Profil pro
    Developpement informatique
    Inscrit en
    Mars 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpement informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Thomad Voir le message
    samoel24,

    Si vous changez le titre de votre post nos réponses ne collent plus !

    >ca marche très bien avec ce dernier code

    oui si vous êtes seul à écrire dans la base, ce qui est rarement le cas.

    @+
    si j'ai changer le titre c'est seulement pour bien éclaircie le but de mon sujet et pour aider les autres a profiter de ce dernier
    et merci pour votre aide

  16. #16
    Nouveau membre du Club
    Femme Profil pro
    Developpement informatique
    Inscrit en
    Mars 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpement informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par luludev Voir le message
    Pensez vous qu'avez LAST_INSERT_ID() vous aurez plus de succès ?
    S'il y a une insertion après votre dernière ajout vous aurez le même problème qu'avec mon code, non ?

    Merci de nous éclaircir sur ce point SVP.
    votre code marche très bien, et c'est le même que le tien
    non j'ai évité je pense que cette dernière donne le même résultat

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

Discussions similaires

  1. [MySQL] Comment exécuter une requête SQL au seins d'une fonction?
    Par tryan dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 15/03/2013, 14h49
  2. [1.x] Comment exécuter une requête SQL directement ?
    Par ldv dans le forum Symfony
    Réponses: 4
    Dernier message: 08/11/2011, 10h36
  3. Comment exécuter une requête sql UPDATE en C#?
    Par hazem2410 dans le forum C#
    Réponses: 10
    Dernier message: 23/12/2010, 08h17
  4. [ADO.Net][C#/Mysql] Comment exécuter une requête paramétrée?
    Par wremacle dans le forum Accès aux données
    Réponses: 6
    Dernier message: 07/02/2006, 16h55
  5. Comment exécuter une requête rapidement
    Par kardevlop dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/10/2005, 13h45

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