tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル VB2010よりアクセスのデータ型YES/NO型の更新について
投稿日: 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の項目をはずして更新するとうまくいきます。
  
  よろしくお願いいたします

    追伸:サンプル投稿版の方に誤って書いてしまいました
     削除をよろしくお願いたします

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。