Encore un pb d'enregistrement de données

schmidt62480 Messages postés 5 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 19 juin 2012 - 18 juin 2012 à 13:49
schmidt62480 Messages postés 5 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 19 juin 2012 - 19 juin 2012 à 18:49
Bonjour à tous

je suis désolé de vous exposer une fois de plus un problème d'enregistrement de données.
Je voulais donner un coup de jeune à un projet de traducteur allemand-français créé sous vb4 et access 2003 en le transposant sous vs2010express
J'utilise un datagridview lié aux tables d'une base de donnée qui représente le dictionnaire de l'application (plus précisément aux tables a,a1,b,b1...qui rassemblent les mots commençant par a,A,b,B..etc)
Il n'y a aucun pb à la lecture et l'extraction des données.
Lors de la traduction d'une phrase, il arrive de tomber sur des mots non présent dans le dictionnaire. Ces mots se placent dans un 2ème datagridview que je complète avec la traduction de ce mot et avec sa fonction (article, adverbe, nom...).
Avec bindingsource.Addnew j'arrive à placer ces informations dans le 1er datagridview lié à la bonne table.
Et c'est là que se situe le pb: impossible de mettre à jour la base de donnée.
Voilà ma requête de maj:
strConnection = "PROVIDER=MICROSOFT.Jet.OLEDB.4.0; DATA SOURCE=C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio 2010\Projects\translat.mdb"
strRequete = "INSERT INTO ''cherch'' (allemand, français, fonction) VALUES ('motallemand2', 'motfrançais2', 'fonction')"
Try
Dim CN As New OleDb.OleDbConnection(strConnection)
Dim CMD As New OleDb.OleDbCommand(strRequete, CN)
CN.Open()
CMD.ExecuteNonQuery()
CN.Close()
Catch
Debug.Write(Str(Err.Number), "L'erreur suivante a été rencontrée :")
Debug.Write(Err.Description, "text=")
End Try

cherch est une variable représentant la table en cours.
motallemand2,motafrançais2,fonction2 des vraiables à placer dans les champs allemand,français,fonction de la table cherch.
Je n'ai pas inventé cette requête, je l'ai piqué sur internet et adapté à mes besoins.
A l'exécution, j'obtiens le message d'erreur:
Erreur de syntaxe dans la requête. La clause de la requête est incomplète.
J'ai retourné le pb dans tous les sens, je n'ai pas trouvé la solution.
Merci de m'avoir lu jusqu'ici, de vous pencher sur mon pb et me proposer une piste pour le résoudre.



Jacques

3 réponses

germany1970 Messages postés 134 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 mars 2014 3
18 juin 2012 à 16:57
Bonjour,
voilà le code :

Dim savinto As New OleDb.OleDbCommand
Dim constr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\translat.mdb"
Dim conn As New OleDbConnection(constr)
savinto.Connection = conn
savinto.CommandType = CommandType.Text
savinto.CommandText = "insert into cherch(allemand, français, fonction)" & "values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & ComboBox1.Text & "')"
conn.Open()
savinto.ExecuteNonQuery()
conn.Close()
MsgBox("Elément ajouté avec succès")


c'est à vous d'adapter ce code à vos besoins.
0
schmidt62480 Messages postés 5 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 19 juin 2012
18 juin 2012 à 19:19
Merci de votre recherche sur mon pb.
La base de données s'ouvre bien et c'est déjà un énorme progrès.
Dans la mesure où cherch est une variable, n'y a-t-il pas lieu de l'écrire sous forme ''cherch''?
J'avoue que suis assez réfractaire au langage sql.
Merci de votre réponse


Jacques
0
schmidt62480 Messages postés 5 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 19 juin 2012
19 juin 2012 à 18:49
ça y est, ça marche
quant à la variable il suffit de faire un Select Case de sa valeur et de changer la commande en fonction.
Merci beaucoup de votre aide


Jacques
0
Rejoignez-nous