Problème avec une base de donnée acess qui contienne deux tableau

Résolu
germany1970 Messages postés 134 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 mars 2014 - 31 janv. 2011 à 19:29
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 - 31 janv. 2011 à 23:31
Bonjour,
j'ai une base de données acess (STOCK) qui contient deux tableau (FOURNISSEUR) et (PROD), mon problème et le suivant :
avec le premier tableau FOURNISSEUR j'ai pas de probléme à savoir l'ajout-modification-suppression-recherche....etc.
mais avec le 2éme tableau PROD quand je veux valider un nouveau enregistrement cette erreur (Erreur de syntaxe dans l'instruction INSERT INTO.)
s'affiche dans cette ligne de code:
(dta.Update(dts, "prod")
le code utilisé est le meme que le premier tableau:
-------------------------------------------------------
Imports System
Imports System.Data
Imports System.Data.OleDb
----------------------------------
Public Class produit
Private cnx As OleDbConnection
Private cmd As OleDbCommand
Private dta As OleDbDataAdapter
Private cmdb As OleDbCommandBuilder
Private dts As New DataSet
Private dtt As DataTable
Private dtc As DataColumn
Private dtr As DataRow
Private rownum As Integer
Private conn As String
Private sql As String
--------------------------------------------------
Private Sub produit_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label3.Visible = False
txtref.Visible = False
'ouverture de la connection(à partir du répertoire de l'application)
conn "provider microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\stock.mdb;"
cnx = New OleDbConnection
cnx.ConnectionString = conn
cnx.Open()
sql = "select prod.* from prod"
cmd = New OleDbCommand(sql)
dta = New OleDbDataAdapter(cmd)
cmd.Connection() = cnx


dta.Fill(dts, "prod")


dtt = dts.Tables("prod")

If rownum > dtt.Rows.Count - 1 Then

Button4.Enabled = False
Button3.Enabled = True


Me.Show()
Me.txtfourn.Focus()

Else


Button3.Enabled = False

End If
End Sub
----------------------------------------------------------------
Private Sub Btnaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnaj.Click
'si un champ n'est pas rempli fin de procédure

If Me.txtfourn.Text "" Or Me.txtprenom.Text "" Or Me.ComboBox1.Text = "" Or Me.TextBox1.Text = "" Or Me.TextBox2.Text = "" Or Me.TextBox3.Text = "" Then

MessageBox.Show("Vous devez remplir tous les champs !", "Erreur...", MessageBoxButtons.OK, MessageBoxIcon.Error)

Me.txtprenom.Focus()

Exit Sub

End If

'crátion d'une nouvelle ligne avec les données des textbox
dtr = dts.Tables("prod").NewRow
dtr("désignation") = Me.txtfourn.Text
dtr("prix d'achat") = Me.txtprenom.Text
dtr("quantite") = Me.TextBox2.Text
dtr("coût standart") = Me.TextBox3.Text

'ajout de la ligne dans le DataSet
dts.Tables("prod").Rows.Add(dtr)


'création et exécution du commandbuilder
'pour mettre à jour le DataAdapter
cmdb = New OleDbCommandBuilder(dta)

'mise à jour des données du DataAdapter
'à partir du commandbuilder
dta.Update(dts, "prod")
MessageBox.Show("Elément ajouté avec succés", "Administrateur...", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
'on vide le dataset pour le recréer avec
'les nouvelles données
dts.Clear()
dta.Fill(dts, "prod")
dtt = dts.Tables("prod")

'mise à jour de la datagrid
'DataGrid1.SetDataBinding(dts, "fournisseur")
'vider les textbox
Me.txtref.Text = ""
Me.txtfourn.Text = ""
Me.ComboBox1.Text = ""
Me.txtprenom.Text = ""
Me.TextBox1.Text = ""
Me.TextBox2.Text = ""
Me.TextBox3.Text = ""
'aller au début du fichier
rownum = 0


Button4.Enabled = True
Button3.Enabled = False 'valider

Button4.Text = "Ajouter"

End Sub

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
31 janv. 2011 à 19:44
Salut

Vérifie bien, lettre à lettre, que l'orthographe des champs est strictement la même dans ta table (ce que tu appelles tableau) et dans tes lignes "dtr("désignation") = ..."

Vérifie aussi que tous les champs y sont bien.

Si un des champs est vide, vérifie dans Access que le champ accepte des Null | champ vide.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
31 janv. 2011 à 23:31
Comme te le conseille Jack,vérifie l'orthographe des champs de ta table...les accents et puis les espaces sont (je pense) pas trop conseillés pour justement éviter ce genre de soucis...

Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
3
Rejoignez-nous