Problème avec une base de donnée acess qui contienne deux tableau [Résolu]

Signaler
Messages postés
136
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
22 mars 2014
-
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
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)
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
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