Bonsoir,

Voilà mon soucis: J'ai un soucis au moment de l'update de mon dataset

J'ai un formulaire contenant un datagridview ayant pour source un dataset.
Je charge le dataset avec un DataAdapter. Le formulaire et le Datagridview se charge bien, je retrouve les enregistrements (entrés manuellement dans ma table access).
Au moment de l'update, objDataAdapter.Update(objDataSet, strTable), j'obtiens l'erreur: [ADO, Access]_Paramètre ?_2 n'a pas de valeur par défaut?. Si je place un point d'arrêt sur la ligne update et que je regarde le dataset, il contient les bonnes valeurs (type, cellules non vides,...)

Comment savoir de quel paramètre il s'agit ?

J'ai posté un peu vite, je viens de voir ce post:
http://www.developpez.net/forums/sho...am%E8tre+%3F_2
Mais pour ma défense , mon DataAdapter est créé en copiant le code générer par le Dataset.Designer.vb
' > Dans l'explorateur de solutions, sélectionner "Afficher tous les fichiers"
' > Créer un élément "DataSet" au projet
' > Insérer la table du DataAdapter à créer
' > Afficher le code de "DataSet.Designer.vb" (sous élément de l'élément "DataSet")
' > Rechercher "Private Sub InitAdapter()"
' > Copier/Coller l'ensemble du sub dans la classe et l'adapter
' > Adapter l'ensemble


Ma table Tbl_Plein contient:
- ID_Plein
- ID_TblVehicule
- DatePlein
- Kilometrage
- Quantite

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  Private Function CreerDataAdapter(Optional ByVal strFiltreTrie As String = "") As OleDbDataAdapter
 
        Dim objDataAdapter As New OleDbDataAdapter
        Dim tableMapping As New Common.DataTableMapping
 
        Try
 
            ' Mapping de la table
            tableMapping.SourceTable = "Tbl_Plein"
            tableMapping.DataSetTable = "TblPlein"
            tableMapping.ColumnMappings.Add("ID_Plein", "ID_Plein")
            tableMapping.ColumnMappings.Add("ID_TblVehicule", "ID_TblVehicule")
            tableMapping.ColumnMappings.Add("DatePlein", "Date du plein")
            tableMapping.ColumnMappings.Add("Kilometrage", "Kilométrage")
            tableMapping.ColumnMappings.Add("Quantite", "Quantité")
            objDataAdapter.TableMappings.Add(tableMapping)
 
            ' SELECTCOMMAND
            objDataAdapter.SelectCommand = New OleDb.OleDbCommand
            'objDataAdapter.InsertCommand.Connection = objConnexion
            objDataAdapter.SelectCommand.CommandText = "SELECT Tbl_Plein.* FROM Tbl_Plein " & strFiltreTrie
            objDataAdapter.SelectCommand.CommandType = CommandType.Text
 
            ' INSERTCOMMAND 
            objDataAdapter.InsertCommand = New OleDb.OleDbCommand
            'objDataAdapter.InsertCommand.Connection = objConnexion
            objDataAdapter.InsertCommand.CommandText = "INSERT INTO Tbl_Plein (ID_TblVehicule, DatePlein, Kilometrage, Quantite)" & _
                                                        "VALUES (?, ?, ?, ?)"
            objDataAdapter.InsertCommand.CommandType = CommandType.Text
            objDataAdapter.InsertCommand.Parameters.Add(New OleDb.OleDbParameter("ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Current, False, Nothing))
            objDataAdapter.InsertCommand.Parameters.Add(New OleDb.OleDbParameter("DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Current, False, Nothing))
            objDataAdapter.InsertCommand.Parameters.Add(New OleDb.OleDbParameter("Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Current, False, Nothing))
            objDataAdapter.InsertCommand.Parameters.Add(New OleDb.OleDbParameter("Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Current, False, Nothing))
 
            ' UPDATECOMMAND
            objDataAdapter.UpdateCommand = New OleDb.OleDbCommand
            'objDataAdapter.UpdateCommand.Connection = objConnexion
            objDataAdapter.UpdateCommand.CommandText = "UPDATE Tbl_Plein" & _
                                                        " SET ID_TblVehicule = ?, DatePlein = ?, Kilometrage = ?, Quantite = ?" & _
                                                        " WHERE ((ID_Plein = ?)" & _
                                                        " AND ((? = 1 AND ID_TblVehicule IS NULL) OR (ID_TblVehicule = ?))" & _
                                                        " AND ((? = 1 AND DatePlein IS NULL) OR (DatePlein = ?))" & _
                                                        " AND ((? = 1 AND Kilometrage IS NULL) OR (Kilometrage = ?))" & _
                                                        " AND ((? = 1 AND Quantite IS NULL) OR (Quantite = ?)))"
            objDataAdapter.UpdateCommand.CommandType = CommandType.Text
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Current, False, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Current, False, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Current, False, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Current, False, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Original_ID_Plein", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_Plein", DataRowVersion.Original, False, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Original, True, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Original_ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Original, False, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_DatePlein", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Original, True, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Original_DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Original, False, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Original, True, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Original_Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Original, False, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Original, True, Nothing))
            objDataAdapter.UpdateCommand.Parameters.Add(New OleDb.OleDbParameter("Original_Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Original, False, Nothing))
 
            ' DELETECOMMAND
            objDataAdapter.DeleteCommand = New OleDb.OleDbCommand
            'objDataAdapter.DeleteCommand.Connection = objConnexion
            objDataAdapter.DeleteCommand.CommandText = "DELETE FROM Tbl_Plein" & _
                                                        " WHERE ((ID_Plein = ?)" & _
                                                        " AND ((? = 1 AND ID_TblVehicule IS NULL) OR (ID_TblVehicule = ?))" & _
                                                        " AND ((? = 1 AND DatePlein IS NULL) OR (DatePlein = ?))" & _
                                                        " AND ((? = 1 AND Kilometrage IS NULL) OR (Kilometrage = ?))" & _
                                                        " AND ((? = 1 AND Quantite IS NULL) OR (Quantite = ?)))"
            objDataAdapter.DeleteCommand.CommandType = CommandType.Text
            objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("Original_ID_Plein", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_Plein", DataRowVersion.Original, False, Nothing))
            objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Original, True, Nothing))
            objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("Original_ID_TblVehicule", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "ID_TblVehicule", DataRowVersion.Original, False, Nothing))
            objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_DatePlein", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Original, True, Nothing))
            objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("Original_DatePlein", OleDb.OleDbType.[Date], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "DatePlein", DataRowVersion.Original, False, Nothing))
            objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Original, True, Nothing))
            objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("Original_Kilometrage", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Kilometrage", DataRowVersion.Original, False, Nothing))
            objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("IsNull_Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Original, True, Nothing))
            objDataAdapter.DeleteCommand.Parameters.Add(New OleDb.OleDbParameter("Original_Quantite", OleDb.OleDbType.[Integer], 0, ParameterDirection.Input, CType(0, Byte), CType(0, Byte), "Quantite", DataRowVersion.Original, False, Nothing))
 
        Catch ex As Exception
            MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Stop)
 
        End Try
 
        Return objDataAdapter
 
    End Function
Merci d'avance pour le coup de main.

Gdal