samba2005kanoute
Messages postés71Date d'inscriptiondimanche 17 décembre 2000StatutMembreDernière intervention 2 juin 2015
-
23 janv. 2009 à 16:46
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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.