Urgent pb vb sql

allysa Messages postés 1 Date d'inscription vendredi 29 septembre 2006 Statut Membre Dernière intervention 12 décembre 2006 - 12 déc. 2006 à 09:33
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 12 déc. 2006 à 19:46
bonjour voila je vous explique je travaille sous vb6 et je desirerais derrière un bouton faire deux requette insert into qui rempli mes deux tables le truc c que je doit faire une jointure et je sais pas comment on fait une jointure avec un insert
plus clairement mon code la c ca mais il ne fonctionnne pas comme vous pouvez le voir en dessous la table club et employer sont lier car employer recupere le num du club donc je panse que ca doit apparaitre quelque part mais je sais pas comment faire

Private Sub Command1_Click()
If Text1.Text = "" Then
        MsgBox "Veuillez rentrer le nom du club", vbCritical
      
         Else
       
            ' Execution de la requête'
           db.Execute ("INSERT INTO club (numclub,nomclub,numcommune)  VALUES ('" & Text10.Text & "','" & Text1.Text & "', '" & Text7.Text & "')")
           db.Execute ("INSERT INTO employer(numemp,titreemp,nomemp,prenomemp,adresserueemp,telemp,numcommune,numtypeemp,numclub) VALUES ('" & Text11.Text & "','" & Text4.Text & "', '" & Text3.Text & "', '" & Text5.Text & "', '" & Text6.Text & "', '" & Text8.Text & "', '" & Text2.Text & "', '" & Text9.Text & "','" & Text10.Text & "'  from employer,club where club.numclub = employer.numclub and employer.numclub='" & Text10.Text & "')")

          
                       ' Effacement des champs après ajout d'un écran
          
        Text10.Text = ""
        Text1.Text = ""
        Text7.Text = ""
        Combo1.Text = ""
       
                       
End If

End Sub

merci de tente de me repondre

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 déc. 2006 à 19:46
Salut
D'abord, il faudrait que tu respectes certaines règles qui t'aideront à y voir plus clair :
Voilà ton même code clairement indenté, découpé :
Dim SQL As String
SQL = "INSERT INTO club " & _
      "       (numclub, nomclub, numcommune) " & _
      "VALUES ('" & Text10.Text & "','" & _
                    Text1.Text & "', '" & _
                    Text7.Text & "')"
db.Execute SQL

SQL = "INSERT INTO employer " & _
      "       (numemp, titreemp, nomemp, prenomemp, adresserueemp, " & _
              "telemp, numcommune, numtypeemp, numclub) " & _
      "VALUES ('" & Text11.Text & "','" & _
                    Text4.Text & "', '" & _
                    Text3.Text & "', '" & _
                    Text5.Text & "', '" & _
                    Text6.Text & "', '" & _
                    Text8.Text & "', '" & _
                    Text2.Text & "', '" & _
                    Text9.Text & "','" & _
                    Text10.Text & "' " & _
      "From employer,club " & _
      "Where club.numclub = employer.numclub " & _
      "  and employer.numclub='" & Text10.Text & "')"
db.Execute SQL

Maintenant, c'est beaucoup plus facile de voir certaines erreurs :
- Dommage que les noms de tes champs n'aient aucune majuscules, cela aurait simplifié la lecture
   Exemple :  adresserueemp --> AdresseRueEmp
   Mais ça, c'est côté DB qu'il faut intervenir
- De même, dans ton projet VB, tu aurais gagné de la clareté en nommant correctement tes composants :
   Au lieu de laisser VB numéroter les TextBox, donne leur un nom :
   Text10 = numclub --> appelle le txtNumClub
   Text1 = nomclub --> txtNomClub
   Tes lignes de codes seront beaucoup plus faciles à lire ... et à dépanner
- Dans une requète SQL, il ne faut pas mettre des ' partout :
   Si ton champ est défini dans ta DB en type :
   Texte : Encadrement des valeurs avec des ', Ok
   Date : Encadrement des valeurs avec des #
   Numérique : Pas d'encadrement
- En définitive, pourquoi veux-tu compliquer la deuxième requète ?
   Tu as toutes les valeurs nécessaires dans tes 9 TextBox.
   Il n'est pas nécessaire de relire une table. Arrête donc ta requète après
                    Text9.Text & "','" & _
                    Text10.Text & "')"
   La jointure, il faudra surement la faire à la relecture des données.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
0
Rejoignez-nous