私のプログラムには、runSQLというタイトルの関数があります。これは次のとおりです。
Dim Connection As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=TrainingLog.accdb")
Dim DT As New DataTable
Dim DataAdapter As OleDb.OleDbDataAdapter
Connection.Open()
DataAdapter = New OleDb.OleDbDataAdapter(query, Connection)
DT.Clear()
DataAdapter.Fill(DT)
Connection.Close()
Return DT
そして、このコードから取得した更新文字列を使用して、データベース内のレコードを更新しようとしています:
Dim sqlString As String
sqlString = "UPDATE UserRecords set FirstName = '" & txtName.Text
sqlString = sqlString & "', LastName = '" & txtSurname.Text
If ChkSmoker.Checked = True Then
sqlString = sqlString & "', Smoker = true"
ElseIf ChkSmoker.Checked = False Then
sqlString = sqlString & "', Smoker = false"
End If
sqlString = sqlString & ", Weight = " & txtWeight.Text
If RdoMale.Checked = True Then
sqlString = sqlString & ", Gender = 'm'"
ElseIf RdoFemale.Checked = True Then
sqlString = sqlString & ", Gender = 'f'"
End If
sqlString = sqlString & " WHERE UserName = '" & LstUsers.SelectedItem.ToString & "'"
runSQL(sqlString)
ただし、保存ボタンをクリックすると、runSQL 関数の 7 行目 (空の行を含まないため、DataAdapter.Fill(DT) 行) で「1 つ以上の必須パラメーターに値が指定されていません」というエラーが表示されます。
これがなぜなのか、それを修正する方法を誰かが知っているのだろうかと思いました。
私が考えたことの 1 つは、更新されているテーブルには、UPDATE ステートメントで言及されているフィールド以外のフィールドがあるということです。たとえば、「TeamMember」というタイトルの Yes/no フィールドがありますが、これについては update ステートメントでは言及していません。更新機能を使用する場合、変更されていないものも含め、すべてのフィールドに値を指定する必要がありますか?
読んでくれてありがとう。