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

タイトル Re: VB2010よりアクセスのデータ型YES/NO型の更新について
投稿日: 2012/11/16(Fri) 10:50
投稿者魔界の仮面弁士
OleDbCommandBuilder を使わず、自分で INSERT 文を作成しているのですね?


> ※ Checkの項目をはずして更新するとうまくいきます。
"Check"という「列名」が原因です。
(同様の障害を起こす列名としては、"No" や "Update" などがあります)


>  strSQL = "INSERT INTO [StanderdM] " & _
>           "   (SubjectNo, ClassNo, Kind, Check) " & _
>           "   VALUES (?, ?, ?, ?)"

"( [SubjectNo], [ClassNo], [Kind], [Check]) " のように、
それぞれの列名を角括弧で囲めば、もしくは、Check という
フィールド名を改名することで解決するかと思います。



以下、本題とは関係のない所に反応。

>  strSQL = "INSERT INTO [StanderdM] " & _
「StanderdM」ではなく、
「StandardM」なのでは?


> Private StanderdMDs As New DataSet
> StanderdMDs = New DataSet

> Private StanderdMDt As New DataTable
> StanderdMDt = StanderdMDs.Tables("StanderdM")
この使い方なら、変数宣言時に New する必要は無いかと。


> dtrow("SubjectNo") = cboBox1.SelectedValue.ToString()
SubjectNo は「長整数型」なのですよね。

自動的に型変換されるとはいえ、Int32 を必要としているフィールドに
String を代入するというのは違和感が…。


> dtrow("Kind") = 20
バイト型に Int32 を代入しているようですが、こちらは許容範囲。


> If chkBox3.CheckState = 0 Then
これはおかしいです。

そもそも CheckState は、3状態チェックボックス(ThreeState)で
使われるべきプロパティです。True / False の 2状態なら、
 dtrow("Check") = chkBox3.Checked
のように、Checked As Boolean なプロパティを用いるべきかと。

仮に、CheckState プロパティを使う必要があるとしても、
「If chkBox3.CheckState = CheckState.Unchecked Then」
のように、CheckState 列挙体と比較するのが妥当です。

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

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