タイトル | : VB2010よりアクセスのデータ型YES/NO型の更新について |
記事No | : 10953 |
投稿日 | : 2012/11/15(Thu) 15:02 |
投稿者 | : かっちゃん |
アクセスフィールド SubjectNo 長整数型 ClassNo テキスト型 Kind バイト型 Check Yes/No型
VB2010
' データセットエリア Private StanderdMDs As New DataSet Private StanderdMDt As New DataTable Dim wkstrSql As String ' SQLを指定
’アクセスから読み出し wkstrSql = "select * from StanderdM ORDER BY SubjectNo Asc, ClassNo Asc, Kind Asc" Cmd.CommandText = wkstrSql Adp = New OleDbDataAdapter(Cmd) StanderdMDs = New DataSet Adp.Fill(StanderdMDs, "StanderdM") StanderdMDt = StanderdMDs.Tables("StanderdM")
' アクセスへ更新 Dim dtrow As DataRow dtrow = StanderdMDt.NewRow dtrow("SubjectNo") = cboBox1.SelectedValue.ToString() dtrow("ClassNo") = Trim(cboBox2.SelectedValue.ToString()) dtrow("Kind") = 20 If chkBox3.CheckState = 0 Then dtrow("Check") = False Else dtrow("Check") = True End If StanderdMDt.Rows.Add(dtrow) Call SubmitChangesByHand() Private Sub SubmitChangesByHand() Dim cmdInsert As OleDbCommand = CreateInsertCommand() Dim row As DataRow Dim intRowsAffected As Integer Dim dvrs As DataViewRowState dvrs = DataViewRowState.ModifiedCurrent _ Or DataViewRowState.Deleted Or DataViewRowState.Added For Each row In StanderdMDt.Select("", "", dvrs) Select Case row.RowState Case DataRowState.Added intRowsAffected = SubmitInsert(row, cmdInsert) End Select If intRowsAffected = 1 Then row.AcceptChanges() Else row.RowError = "更新に失敗しました。" End If Next row End Sub
Private Function CreateInsertCommand() As OleDbCommand Dim strSQL As String strSQL = "INSERT INTO [StanderdM] " & _ " (SubjectNo, ClassNo, Kind, Check) " & _ " VALUES (?, ?, ?, ?)" Dim cmd As New OleDbCommand(strSQL, Cnn) Dim pc As OleDbParameterCollection = cmd.Parameters pc.Add("SubjectNo", OleDbType.Integer) pc.Add("ClassNo", OleDbType.VarChar) pc.Add("Kind", OleDbType.TinyInt) pc.Add("Check", OleDbType.Boolean) Return cmd End Function
Private Function SubmitInsert(ByVal row As DataRow, _ ByVal cmd As OleDbCommand) As Integer Dim pc As OleDbParameterCollection = cmd.Parameters pc("SubjectNo").Value = row("SubjectNo") pc("ClassNo").Value = row("ClassNo") pc("Kind").Value = row("Kind") pc("Check").Value = row("Check") Return cmd.ExecuteNonQuery End Function
・ Return cmd.ExecuteNonQueryの箇所で下記のエラーがでてしまいます ”INSERT INTO ステートメントの構文エラーです。” ※ Checkの項目をはずして更新するとうまくいきます。 よろしくお願いいたします
追伸:サンプル投稿版の方に誤って書いてしまいました 削除をよろしくお願いたします
|