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

VB 6 et antérieur Discussion :

[VB]Problème avec une requête SQL


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Points : 54
    Points
    54
    Par défaut [VB]Problème avec une requête SQL
    Voilà , je découvre la base de données sous VB et j'aimerai effectué une requête mais je comprends pas elle passe pas donc si vous pouvez m'éclairer car je vois pas vraiment comment faire.
    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
     
    Private Sub Label1_Click(Index As Integer)
    Dim nb_quest, Num_creat As Integer
     
    With rstCreat
    .ActiveConnection = cnx
    .CursorType = adOpenDynamic
    .LockType = adLockOptimistic
    .Open "Createur"
    .AddNew
    !Nom_creat = N_creat
    !Pnom_creat = P_creat
    .Update
    .Close
    End With
    With rstCreat
    .ActiveConnection = cnx
    .CursorType = adOpenDynamic
    .LockType = adLockOptimistic
    .Open "SELECT * from Createur Where nom_creat=" & N_creat And Pnom_creat = " & P_creat"
     
    MsgBox (!Id_creat)
    'Num_creat = !id_creat
    .Close
    '.Open "Quizz"
    '.AddNew
    '!id_creat = Num_creat
    '!Nom_quizz = NomQuizz
    '.Update
    '.Close
    End With
     
    nb_quest = Label1(Index).Caption
    Unload Create_quizz
    Load Create_pages
     
    End Sub

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Salut,

    As-tu tracé ta requête ? L'as-tu essayé directement sous ton SGBD ? Ca ne devrait pas fonctionner non plus, puisque tu as omis les quotes autour des valeurs alphanumériques.

    De tête, voici une fonction bien utile pour les requêtes SQL avec des chaînes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function fza(Byval chaine as String) As String
    'Format Zone Alpha
    'encadre la chaîne par des quotes ET dédouble les quotes incluses :
       fza = "'" & StrReplace(chaine, "'", "''") & "'"
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim maRequete As String
    ...
    maRequete = "SELECT * from Createur Where nom_creat=" & fza(N_creat) & " And Pnom_creat = " & fza(_creat)
    .Open maRequete 
    ...
    Ca devrait marcher mieux

  3. #3
    Membre du Club Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    merci , ton aide m'as bien aidé mais j'ai un hic pour faire passer la 2ème condition de la requête!Il semble qu'il est un problème avec le "And" qui n'est pas pris dans la chaine de caractère.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Open "SELECT * from Createur 
    Where nom_creat=" & fza(N_creat) And Pnom_creat = " & fza(P_creat)"
    Tu vois ou le problème se pose !?

  4. #4
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    justement je me disais aussi.

    Tout dabord je ne sais pas ce que c'est que la fonction fza (rassure toi le probleme ne viens pa de la).

    essai ce code il devrais marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Open "SELECT * from Createur 
    Where nom_creat='" & fza(N_creat) & "' And Pnom_creat =' " & fza(P_creat) &"'"
    ceci devrais marche. J'ai supposer que les champs "N_creat" et "P_creat" sont de type string.

  5. #5
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par Tyrael62
    Tu vois ou le problème se pose !?
    Oui, désolé, j'ai édité ma solution ci-dessus, je ne m'étais pas relu

    Citation Envoyé par sovo
    Tout dabord je ne sais pas ce que c'est que la fonction fza
    Ben c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function fza(Byval chaine as String) As String
    'Format Zone Alpha
    'encadre la chaîne par des quotes ET dédouble les quotes incluses :
       fza = "'" & StrReplace(chaine, "'", "''") & "'"
    End Function
    Citation Envoyé par sovo
    essai ce code il devrais marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Open "SELECT * from Createur 
    Where nom_creat='" & fza(N_creat) & "' And Pnom_creat =' " & fza(P_creat) &"'"
    Non, mon "fza" encadre déjà par des quotes, pas besoin d'en remettre d'autres

  6. #6
    Membre du Club Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       .Open "SELECT Id_creat from Createur Where nom_creat=" & fza(N_creat) & "' pnom_creat ='" & fza(P_creat)
       Num_creat = !Id_creat
       MsgBox (Num_creat)
    Finalement j'ai passé mon code de cette manière mais j'ai encore un hic, il déconne quand il prend le prénom et au niveau de ma ligne Num_creat=!Id_creat il m'affiche un erreur de type Run-time '3021' :
    BOF ou EOF est égal à True ou l'actuel enregistrement a été supprimé.
    L'opération demandée nécessite un enregistrement actuel.
    Donc j'ai dans un premier temps éxécuter ma requete sous access en prenom et un nom de ma table donc là il passe impeccable donc sûr qu'il n'existe pas plusieurs lignes!Ensuite , vu que çà fonctionnait toujours pas j'ai essayé de passer ma requête sans prendre le prénom , et là miracle il m'affiche l'information souhaité , mais le hic c'est que j'ai besoin du nom et du prénom dans ma requête, vu que c'est pour une PTI , je peux pas m'amuser à faire les choses à moitié !Donc si vous voyez comment je peux m'en sortir , sa serai sympa de m'aider.

  7. #7
    Membre habitué Avatar de medbouh
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 171
    Points
    171
    Par défaut
    ce que t'as la est incorecte au niveau syntaxe sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    .Open "SELECT Id_creat from Createur Where nom_creat=" & fza(N_creat) & "' pnom_creat ='" & fza(P_creat) 
       Num_creat = !Id_creat 
       MsgBox (Num_creat)
    il faut ecrire en prennant en consideration que FZa retoune le simple cote:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    .Open "SELECT Id_creat from Createur Where nom_creat=" & fza(N_creat) & " and  pnom_creat =" & fza(P_creat) & " and Num_creat =" & !Id_creat
     
    MsgBox (Num_creat)
    en faite tu as ecrit : il faut avoir le NomDuRecorset!Id_creat


    bonne chance[/code]

  8. #8
    Membre du Club Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Merci c'est enfin passer comme y faut!Le sql c'est comme plsu simple en PHP, le VB complique les choses à rien!

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

Discussions similaires

  1. Problème avec une requête SQL en C#
    Par valebl dans le forum C#
    Réponses: 15
    Dernier message: 16/04/2008, 20h01
  2. Petit problème avec une requête SQL en VB6
    Par muzele dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 15/11/2007, 20h51
  3. Problème avec une requête sql
    Par mika0102 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 10/10/2007, 15h50
  4. [SQL] Problème avec une requête sql
    Par bodysplash007 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 11/05/2007, 17h30
  5. [MySQL] Problème avec une requête SQL
    Par chobol dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 11/05/2006, 12h29

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