Erreur! UPDATE !!! Nouvel enregistrement dans une table !

ktypao Messages postés 8 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 30 mars 2006 - 4 juil. 2005 à 09:23
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 - 4 juil. 2005 à 14:10
Salut,
je débute dans la prog alors soyez indulgent. Merci.
Je développe une appli en vb 6 et j'ai une base mysql.
Je dois ici inserer un nouvel enregistrement dans ma table "location".
Le problème vient apparemment de Update qu'il me surligne.
Et j'ai en retour l'erreur: " Longueur de chaine ou de mémoire tampon non valide".

Je ne comprend pas cette erreur. Merci pour votre aide.
(Il me reste 2 semaines avant soutenance de stage!!!!)

Voici le bout de code foireux:

Private Sub Cmd_Valider_Click()


Dim str As String
Set cn = New ADODB.Connection
str = "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=" & "localhost" & ";DATABASE=" & "MaBase" & ";" & "UID=" & "root" & ";PWD=" & ";OPTION="
cn.Open str


Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Open "location", cn, , , adCmdTable

rs.AddNew
rs!Id_en = id_E
rs!Id_cn = id_C
rs!Date_s = ds
rs!Date_r = dr
rs!Acc_l = acc
rs!Adr = adr
rs.Update

MsgBox "Nouvelle location correctement enregistrée", vbOKOnly, "Message"
Form_NouvelleLoc.Hide

7 réponses

KC62 Messages postés 229 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 20 juin 2007
4 juil. 2005 à 09:37
Salut,

je suis pas sur de moi mais tu peux toujours essayé sa mange pas de pain !
Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Open "location", cn, , , adCmdTable
Sur ce code essaye de remplace adLockOptimistic par quelque chose du genre adOpenDynaset .
Tu pourras voir en appuaynt sur [Control] + [Espaces] toutes les possibilités. L'idée c'est douvrir le recordset de manière a pouvoir enregistré dessus.

voila bonne chance a toi !

KC62
On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
4 juil. 2005 à 10:27
L'erreur vient les valeurs affectées au champs;



vérifies leur types ainsi que leur longeur



ex

si Dats_s est de type date dans la base

alors il faut

rs!Dates=CDate(ds)



@+
0
ktypao Messages postés 8 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 30 mars 2006
4 juil. 2005 à 11:07
Merci!
Le problème vient apparemment de là, j'ai mis CDate() pour les dates, en revanche il reste encore un problème pour un autre champ qui est en VARCHAR dans ma base et que j'ai mis en STRING dans l'appli. En fait je la récupère dans un textBox ( adr text_adr.text ) puis je l'affecte au champ de la base correspondant ( rs!adresse adr).

Pourquoi ça ne marche pas?
Il me renvoie: "Une opération OLE-DB a généré des erreurs. Vérifiez chaque valeur d'état OLE-DB disponibles. Aucun travail n'a été effectué. "
0
cs_dan80 Messages postés 101 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 19 avril 2006
4 juil. 2005 à 11:32
ou essaye ca :

Private Sub Cmd_Valider_Click()
Dim str As String
Set cn = New ADODB.Connection
str = "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=" & "localhost" & ";DATABASE=" & "MaBase" & ";" & "UID=" & "root" & ";PWD=" & ";OPTION="
cn.Open str



dim sqlstring as string
sqlstring="Insert into Location(Id-En, Id_cn, Date_s, Date_r, Acc_l, Adr) values ( ' " & id_E & " ',....)
cn.Execute sqlstring

affectation des variables, syntaxe:
' " & (string) & " '
" & (integer) & "
# " & (date) & " #

fais moi signe si tu réussi!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ktypao Messages postés 8 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 30 mars 2006
4 juil. 2005 à 12:00
Avec cette méthode c'est pour les dates que ça marche pas, c'est un comble, non?

Donc ici, j'ai une erreur de syntaxe pour les dates.
Si je met # " & ds & " # il me met une erreur de syntaxe.
Si je met ' " & ds & " ' ou " & ds & " l'enregistrement se fait bien mais avec les valeurs par défaut des dates, 00-00-0000.

Je ne sais plus koi faire, j'ai tout essayé!

Encore un p'tit conseil pour une pauv' p'tite programmeuse en galère ?
0
cs_dan80 Messages postés 101 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 19 avril 2006
4 juil. 2005 à 13:38
t sur que tes champs sont au format date?

tu pe toujours essayé ca:

tu fais soit:

1- un cdate('ta date') pour convertir en date

2- ou tu fais format('ta date',"MM/dd/yyyy")

fais moi signe

je suis toujours a aidé un programmeur en détresse sutout si c'est une progammeuse
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
4 juil. 2005 à 14:10
envoi la structure sql (Create TABLe ....)

pour voir les types des champs !!
0
Rejoignez-nous