germany1970
Messages postés134Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention22 mars 2014
-
31 janv. 2011 à 19:29
NSUADI
Messages postés540Date d'inscriptionmardi 4 août 2009StatutMembreDerniè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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
NSUADI
Messages postés540Date d'inscriptionmardi 4 août 2009StatutMembreDernière intervention 1 février 20132 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...