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

タイトル Re^2: VB2010よりアクセスのデータ型YES/NO型の更新について
投稿日: 2012/11/16(Fri) 14:19
投稿者かっちゃん
> 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 列挙体と比較するのが妥当です。

魔界の仮面弁士 様
更新できました。
ありがとうございました。

VB6.0からの変換で色々変更されておりまして苦労しております。
更新の方も"OleDbCommandBuilder"を使わずにロジックをくんでおります。
列名の制限には気づかず、何度もロジックを変えて困っているところでした
本当に助かりました。
また、他のロジックも指摘いただき、すべて修正いたしました
感謝・感謝です。
今後もよろしくお願いいたします。
       かっちゃん より

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

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