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

Signaler
Messages postés
63
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
19 mai 2009
-
Messages postés
63
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
19 mai 2009
-
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.

3 réponses

Messages postés
63
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
19 mai 2009

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
Messages postés
1
Date d'inscription
mercredi 16 mars 2005
Statut
Membre
Dernière intervention
6 mars 2009

    Bonjour,

Moi aussi j'ai un problème de requete SQL,
voici mon code:

Dim c As New OleDbConnection("Provider=microsoft.jet.oledb.4.0; data source=\...\base.mdb;")

        Try
            c.Open()            'str             cmd New OleDbCommand("DELETE FROM employe where matricule_employe =" + txtMatricule.Text, c)

            i = cmd.ExecuteNonQuery()
            MessageBox.Show("Champ effacé" & i)
            c.Close()

        Catch ex As OleDbException
            MessageBox.Show(ex.Message)
        End Try

J'arrive pas à supprimer l'enregistremnet pourtant il teste le matricule s'il ya une incompatibilité au niveau du type
mais si j'ai le bon matricule à supprimer il affiche " Aucune valeur donnée pour un ou plusieur des paramètres requis"

Merci d'avance pour m'aider
Messages postés
63
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
19 mai 2009

Bonjour,
vous êtes sûr qu'il teste bien le type ?Car moi j'aurai mis : cmd New OleDbCommand("DELETE FROM employe where matricule_employe'" + txtMatricule.Text + "'", c)
si matricule_employe est une chaine de caractère.