OVH Cloud OVH Cloud

insert into avec vb

2 réponses
Avatar
Walou84
Dim iden As String
Dim ddat As String
Dim hd As String
Dim hf As String
hf =3D Time
Open "c:\windows\temp\utilisateur.txt" For Input As #1
Line Input #1, iden
Line Input #1, ddat
Line Input #1, hd
Close #1
DoCmd.RunSQL "insert into utilisateurs (id,dat,[heure=20
d'ouverture],[heure de fermeture]) values=20
(iden,ddat,hd,hf)"
DoCmd.RunMacro "fermer_travaux"

Il ya une incompatibilit=E9 entre les variables sql et vb il=20
ne les prend pas comme si c t les mm. Cmt faire?

Help !

Mci

2 réponses

Avatar
Fred M.
Tu ne peux pas insérer directement les références de tes
variables à l'intérieur de ta chaine SQL : Tu dois faire
une concaténation de chaine pour que la syntaxe soit
correcte. De plus, comme tes variables sont de type String
tu dois ajouter des côtes pour compenser les guillemets.

Donc en somme tu devrais avoir qlqchose qui devrait
ressembler à ça :

Dim ChaineSQL as string
ChaineSQL = "insert into utilisateurs (id,dat,[heure
d'ouverture],[heure de fermeture]) values ('" & iden
& "','" & ddat& "','" & hd& "','" & hf & "')"
DoCmd.RunSQL ChaineSQL

Conseil : Aide toi tu débogueur pour vérifier la validité
des valeurs de tes variables et celle de ta chaine SQL.

Bon courage.
Fred


-----Message d'origine-----
Dim iden As String
Dim ddat As String
Dim hd As String
Dim hf As String
hf = Time
Open "c:windowstemputilisateur.txt" For Input As #1
Line Input #1, iden
Line Input #1, ddat
Line Input #1, hd
Close #1
DoCmd.RunSQL "insert into utilisateurs (id,dat,[heure
d'ouverture],[heure de fermeture]) values
(iden,ddat,hd,hf)"
DoCmd.RunMacro "fermer_travaux"

Il ya une incompatibilité entre les variables sql et vb
il

ne les prend pas comme si c t les mm. Cmt faire?

Help !

Mci
.



Avatar
Papy Frenchie
La 1ère chose simple à effectuer
est de faire la requête de manière simple avec l'assistant des requêtes
quand ta requête fonctionne bien tu passes en mode sql afin de copier la
syntaxe
puis après tu vas travailler avec tout cela dans vb.....

Ensuite
Attention aux caractères interdit !!!!
du type " et -
ainsi que les . , !
etc ....
la liste est longue, en clair tous les caractères pouvant
être interprété différemment dans sql .


il y a aussi les astuces de déclaration du Vguil comme je l'appelle qui
donne ceci
dim vguil as string

vguil =""""
cela permet les concaténations de ta requête sql
sans générer d'erreur quand cette dernière est executé
en vb

j'utilise pour ma part souvent cette méthode il y en a bien d'autres et de
meilleures sûrement mais dans mon cas
j'ai toujours grâce à elle compris mes bugs



la commande debug.print est souvent très utile
ou encore un msgbox avant d'exécuter la requête
en VB (afin de visualiser son contenu et comprendre les
messages qui ne tardent pas à venir)

voici un exemple :
non pas pour le commenter mais pour montrer un chaine qui peut apparaitre
complexe à 1ère vue
-------------------------------------------------------------------
Function ReqVentil(NuMCourr, NumCorresp As Long, ActionInfo As Boolean)
DoCmd.SetWarnings False

On Error GoTo Erreur
Dim StrSql As String
Dim ActionInfoFinal As Variant

' ce fonction ajoute un correspondant
If ActionInfo = False Then ActionInfoFinal = 0 Else ActionInfoFinal = -1

StrSql = ""
StrSql = StrSql & "INSERT INTO t3VentilTemp ( LienT0Corres, Lient2Cour,
Lient0ListeDiff, actioninfo ) "
StrSql = StrSql & "SELECT " & NumCorresp & " as val1, " & NuMCourr & " as
val2 , 1 as val3," & ActionInfoFinal & " as val4 ;"
DoCmd.RunSQL StrSql
Exit Function

Erreur:
MsgBox "Erreur dans la requete de ventilation reqventil"
End Function