Pb sur Update : System.Data.OleDb.OleDbException: Aucune valeur donnée pour un o

bdl20042000 Messages postés 63 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 mai 2009 - 6 sept. 2007 à 11:41
bdl20042000 Messages postés 63 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 mai 2009 - 9 mars 2009 à 15:40
Bonjour,
je débute en .NET 2.0.
je suis sous Windows XP + SP2 et VS 2005 Pro +SP1.
dans une programme, j'ai :
Try
            Dim myDataAdapter As New OleDbDataAdapter
            Dim MyDataSet As New DataSet

            cn.Open()            myDataAdapter New OleDbDataAdapter("SELECT * FROM FACTURE WHERE [id-facture] " + id.ToString, cn)
            myDataAdapter.Fill(MyDataSet, "Factures")
            With MyDataSet.Tables("Factures")
                .Rows(0).Item("numero") = tbNumero.Text
            End With
            'Pour modifier les valeurs changées dans le DataAdapter
            myCommandBuilder = New OleDbCommandBuilder(myDataAdapter)
            myDataAdapter.UpdateCommand = myCommandBuilder.GetUpdateCommand()
            'Mise à jour
            myDataAdapter.Update(MyDataSet, "Factures")
            cn.Close()

            Call Rafraichissement_Donnees()

            tbNumero.Focus()
        Catch er As Exception
            Clipboard.SetText(er.ToString)
            MessageBox.Show("Une erreur est survenue pendant la mise à jour." & Chr(13) & Chr(10) & _
            "L'opération a échoué! : " & er.ToString, "Echec", MessageBoxButtons.OK, MessageBoxIcon.Error)
            cn.Close()
        End Try

sur myDataAdapter.Update(MyDataSet, "Factures"), j'ai le message d'erreur :
System.Data.OleDb.OleDbException: Aucune valeur donnée pour un ou plusieurs des paramètres requis.
   à System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   à System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   à System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
   à System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
   à System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)

id étant la clé primaire de la table de la base Access 2003
tous les champs, sauf id, peuvent avoir la valeur Null

Les données sont affichés dans des textbox, je fais des modifications et je veux enregistrer ses modifications dans la base.

Où est l'erreur ?

Merci de l'aide que vous pourriez m'apporter.
A voir également:

3 réponses

bdl20042000 Messages postés 63 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 mai 2009
7 sept. 2007 à 10:31
J'ai contourné le problème en faisant d'une autre façon, comme ce n'est que la modification d'un seul enregistrement :
       Dim sql As String        sql "UPDATE facture SET secretaire " + CType(cbSecretaire.SelectedValue, String) + _
        ", ingenieur = " + CType(cbIngenieur.SelectedValue, String) + _        ", numero '" + tbNumero.Text + "', libelle '" + tbLibelle.Text + _
        "', datefact = #" + Format(CType(dtDate.Text, Date), "M/dd/yyyy") + "#" + _        ", debit " + CType(IIf(tbDebit.Text "", 0, tbDebit.Text), String) + _        ", credit " + CType(IIf(tbCredit.Text "", 0, tbCredit.Text), String) + _        ", annee " + tbAnnee.Text + ", mois " + cbMois.Text + _
        " WHERE [id-facture] = " + CType(id, String)

        Dim cmd As New OleDbCommand(sql, cn)
        Try
            cn.Open()
            cmd.ExecuteNonQuery()
        Catch er As Exception
            MessageBox.Show("Une erreur est survenue pendant la mise à jour." & Chr(13) & Chr(10) & _
            "L'opération a échoué! : " & er.ToString, "Echec", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            cn.Close()
        End Try
0
Rejoignez-nous