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:
Aucune valeur donnée pour un ou plusieurs des paramètres requis
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
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"
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.