Faire une requete d'insertion avec VB6

samba2005kanoute Messages postés 71 Date d'inscription dimanche 17 décembre 2000 Statut Membre Dernière intervention 2 juin 2015 - 23 janv. 2009 à 16:46
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 23 janv. 2009 à 18:28
Bonjour,
Je viens de débuté la programmation sous Vb6 j'ai quel que problème avec ma requête. J'ai fait une requête qui devrais me permettre d'enregistrer dans ma base faite en access les éléments saisie depuis mon interface faite en VB6. Je vais m'explique.
J'ai une machine qui tourne sur vista et office 2007. J'ai conçu une base en access 2007 et je les convertie en access 2003 pour avoir l'extension MDB.
Merci d'avence

Voici le code:

Public Sub Connect()


'Déclaration de la variable de connexion
Dim cnx As ADODB.Connection
Set cnx = New ADODB.Connection


'Définition du pilote de connexion
cnx.Provider = "Microsoft.Jet.Oledb.4.0"
'Définition de la chaîne de connexion
'cnx.Properties("Data Source") = App.Path & "C:\test\sam1.mdb"
cnx.ConnectionString = "C:\test\sam1.mdb"
'Ouverture de la base de données
cnx.Open


End Sub


Public Sub Close_Base()
    cnx.Close
    Set cnx = Nothing
End Sub


Private Sub Command1_Click()
Call Connect
   ' Déclaration des variables
    Dim strTable, strSQL As String
    Dim blnValide As Boolean
    Dim intCode As Integer
    Dim strnum, strnom As String
    ' Initialisation des variables ( + contrôle de saisie )
    blnValide = True
    ' Note : le nom est une valeur obligatoire    If Trim(txtnum.Text) <> "" Then strnum Trim(txtnum.Text) Else blnValide False
    If Trim(txtnom.Text) <> "" Then strnom = Trim(txtnom.Text)
     '----------------------------------------------------------------------
    ' Si les valeurs sont correctement renseignées, on les ajoute à la table
    If blnValide = True Then
        strTable = "client"
        ' Correction des chaines avec apostrophes éventuels
        ' Note : les apostrophes, dans les requêtes SQL, peuvent provoquer des erreurs
        strnum = Replace(strnum, "'", "''")
        strnom = Replace(strnom, "'", "''")
 '======================================================================
        ' AJOUTE LES DONNEES DANS LA TABLE
        '----------------------------------------------------------------------
        ' Requête SQL d'insertion ( modulable selon les valeurs saisies ou pas )
        strSQL = "INSERT INTO " & strTable & " ("
        strSQL = strSQL & "num, nom"
        If strnum <> "" Then strSQL = strSQL & ",num"
        If strnom <> "" Then strSQL = strSQL & ",nom"
        strSQL = strSQL & ") VALUES ("
        strSQL = strSQL & strnum & "'"
        If strnom <> "" Then strSQL = strSQL & ",'" & strnom & "'"
       
        strSQL = strSQL & ")"
       
    Else
        MsgBox ("Données de saisies obligatoires manquantes..."), vbExclamation
    End If
End Sub

2 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
23 janv. 2009 à 18:26
Re
Bon, tu as préparé une requète, mais tu ne l'as pas soumise.
Si tu avais tapé "ADODB" dans la recherche des codes en excluant .NET, tu aurais déjà la réponse !

Pour exécuter une requète d'insertion ou de suppression :
   maConnexion.Execute "<ma requète>"

Mais commence par regarder la tête de ta requète dans strSQL :
- "strTable" est vide
- A mon avis, tu as trop de termes
- pour "strNum" : Les valeurs des champs déclarés en type "numérique" dans une table ne doivent pas être encadrés de '
- Tu ajoutes (une 2ème fois) "strnum" avec un tests dans la liste des champs, mais dans la liste des valeurs, tu l'imposes ! (il faudrait aussi faire le même test)

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

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
23 janv. 2009 à 18:28
PS : Si tu déclares ta connexion (Dim cnx) dans une Sub, elle disparaitra à la sortie de cette sub.
--> A mettre dans la partie déclarations de ta forme (ou dans un module si tu plusieurs formes)

Je te conseille fortement de charger et lire des sources du site à ce sujet, parce que tous ces problèmes auraient pu être évités.
0