VBA/SQL Access
Résolu
samsam26
Messages postés
105
Date d'inscription
Statut
Membre
Dernière intervention
-
samsam26 Messages postés 105 Date d'inscription Statut Membre Dernière intervention -
samsam26 Messages postés 105 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous, je suis penché depuis 4h30 sur un problème sous access, en ce qui concerne les requete SQL dans le code vba.
Voici mon code:
Private Sub Ajouter_Click()
Dim req As String
Dim numpatient As String
Dim nummedecin As String
Dim recdate As Date
numpatient = CStr(Patient)
nummedecin = CStr(medecin)
recdate = champdate
Dim Cnxn As ADODB.Connection
Set Cnxn = CurrentProject.Connection
req = "INSERT INTO Ordonnance VALUES('',#" & recdate & "#," & numpatient & "," & nummedecin & ");"
'MsgBox (req)
Cnxn.Execute (req)
Cnxn.Close
End Sub
Le problème est: "type de donné incompatible dans l'expression du critère."
J'ai aussi essayé sous cette form là:
Private Sub Ajouter_Click()
Dim req As String
Dim numpatient As String
Dim nummedecin As String
Dim recdate As Date
numpatient = CStr(Patient)
nummedecin = CStr(medecin)
recdate = champdate
req = "INSERT INTO Ordonnance VALUES('',#" & recdate & "#," & numpatient & "," & nummedecin & ");"
'MsgBox (req)
DoCmd.RunSQL req
End Sub
Mais là j'avais le même problème...
Si quelqu'un peu m'eclairer...
Je ne connais pas bien le langage VBA, donc j'avoue que là je suis un peu perdu. Merci d'avance pour votre aide
Voici mon code:
Private Sub Ajouter_Click()
Dim req As String
Dim numpatient As String
Dim nummedecin As String
Dim recdate As Date
numpatient = CStr(Patient)
nummedecin = CStr(medecin)
recdate = champdate
Dim Cnxn As ADODB.Connection
Set Cnxn = CurrentProject.Connection
req = "INSERT INTO Ordonnance VALUES('',#" & recdate & "#," & numpatient & "," & nummedecin & ");"
'MsgBox (req)
Cnxn.Execute (req)
Cnxn.Close
End Sub
Le problème est: "type de donné incompatible dans l'expression du critère."
J'ai aussi essayé sous cette form là:
Private Sub Ajouter_Click()
Dim req As String
Dim numpatient As String
Dim nummedecin As String
Dim recdate As Date
numpatient = CStr(Patient)
nummedecin = CStr(medecin)
recdate = champdate
req = "INSERT INTO Ordonnance VALUES('',#" & recdate & "#," & numpatient & "," & nummedecin & ");"
'MsgBox (req)
DoCmd.RunSQL req
End Sub
Mais là j'avais le même problème...
Si quelqu'un peu m'eclairer...
Je ne connais pas bien le langage VBA, donc j'avoue que là je suis un peu perdu. Merci d'avance pour votre aide
A voir également:
- VBA/SQL Access
- Acer quick access ✓ - Forum PC portable
- Acer Quick Access - affichage CapsLock, VerrNum - Forum logiciel systeme
- Désinstaller ACER QUICK ACCESS - Forum Logiciels
- Access appdata - Guide
- Logiciel sql - Télécharger - Bases de données
4 réponses
Salut,
quels sont les champs de la table 'ordonnance' (et de quels types) ?
En principe, une requête INSERT INTO utilise des simples quotes comme délimiteurs de valeurs.
Pourquoi commences-tu par une virgule ?
quels sont les champs de la table 'ordonnance' (et de quels types) ?
En principe, une requête INSERT INTO utilise des simples quotes comme délimiteurs de valeurs.
Pourquoi commences-tu par une virgule ?
"INSERT INTO Ordonnance VALUES('',#" & recdate & "#," & numpatient & "," & nummedecin & ");"
Salut. Bien parce que j'ai pris pour habitude de faire mes requêtes INSERT INTO de cette manière: je ne met pas le nom des champs après celui de la table (comme ici par exemple: INSERT INTO Ordonnance(numero, date, patient, medecin) ....)
Je décide directement des valeurs (dans l'ordre): C'est pour ça que le premier champ à remplir n'est pas renseigné (auto incrementation) j'ai donc VALUES('', 'date', 'patient', 'medecin')...
Je n'ai donc pas du tout commencé par une virgule...
Salut. Bien parce que j'ai pris pour habitude de faire mes requêtes INSERT INTO de cette manière: je ne met pas le nom des champs après celui de la table (comme ici par exemple: INSERT INTO Ordonnance(numero, date, patient, medecin) ....)
Je décide directement des valeurs (dans l'ordre): C'est pour ça que le premier champ à remplir n'est pas renseigné (auto incrementation) j'ai donc VALUES('', 'date', 'patient', 'medecin')...
Je n'ai donc pas du tout commencé par une virgule...
Alors il y a les champs:
-n°ordonnance de type numeroAuto
-date de type date
-n°patient de type numérique
-n°medecin de type numérique
Ensuite les variables patient, medecin et champdate proviennent des zones de texte dans mon formulaire (qui sont appellée comme ça).
Je ne vois pas d'où provient ce problème de type, car les données sont ultra cohérente, mais vu que je n'ai jamais trop utilisé le VBA et Access, je n'ai pas assez d'experience pour reconnaitre un problème.
J'ai testé tout les types des variables utilisée avec msgBox(VarType(variable)) et tout à l'air bon.
Enfin une précision que j'ai oublié: la ligne que le debug signal en erreur est celle ou la requete s'execute. (Docmd.RunSQL req ou cnxn.Execute (req) selon la version)
Merci pour cette petite consécration de temps que tu m'accorde =)
-n°ordonnance de type numeroAuto
-date de type date
-n°patient de type numérique
-n°medecin de type numérique
Ensuite les variables patient, medecin et champdate proviennent des zones de texte dans mon formulaire (qui sont appellée comme ça).
Je ne vois pas d'où provient ce problème de type, car les données sont ultra cohérente, mais vu que je n'ai jamais trop utilisé le VBA et Access, je n'ai pas assez d'experience pour reconnaitre un problème.
J'ai testé tout les types des variables utilisée avec msgBox(VarType(variable)) et tout à l'air bon.
Enfin une précision que j'ai oublié: la ligne que le debug signal en erreur est celle ou la requete s'execute. (Docmd.RunSQL req ou cnxn.Execute (req) selon la version)
Merci pour cette petite consécration de temps que tu m'accorde =)
sa ne marche toujours pas voici le message d'erreur:"le nombre de valeurs de la requêtes doit coincider avec le nombre de champs destination"
Merci beaucoup à toi Blux!
Le problème venait bien de la date, et tu m'a permis de le regler en quelque minutes.
Voici ma nouvelle requête:
req = "INSERT INTO Ordonnance([date], [n°client], [n°medecin]) VALUES('" & recdate & "'," & numpatient & "," & nummedecin & ");"
comme tu me l'a dit, je n'ai pas mis le champ de type numeroAuto.
puis j'ai modifié la date, car ça ne marchait pas même au format anglais, je l'ai mis de type string pour éviter tout les petits soucis dûs au format de la date, et ça marche niquel! =)
Le problème venait bien de la date, et tu m'a permis de le regler en quelque minutes.
Voici ma nouvelle requête:
req = "INSERT INTO Ordonnance([date], [n°client], [n°medecin]) VALUES('" & recdate & "'," & numpatient & "," & nummedecin & ");"
comme tu me l'a dit, je n'ai pas mis le champ de type numeroAuto.
puis j'ai modifié la date, car ça ne marchait pas même au format anglais, je l'ai mis de type string pour éviter tout les petits soucis dûs au format de la date, et ça marche niquel! =)