4

チェックボックスを SQL Server リンク テーブルのビット列にバインドしようとしています。

最初はタイプに関するエラーがありましたが、リンクされたテーブルにアクセスして、列の表示コントロールをテキストボックスではなくチェックボックスに変更しました。

レコードを保存すると、書き込み競合エラーが発生します。

ここに画像の説明を入力

テーブルにタイムスタンプを追加する方法を試しましたが、同じ問題が発生しました

VBAなしでも可能ですか?

ありがとうございました

私の保存ボタンのコード

Private Sub btnSave_Click()
  On Error GoTo Err_btnSave_Click
      DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
      DoCmd.Close
  Exit_btnSave_Click:
      Exit Sub

  Err_btnSave_Click:
      MsgBox Err.Description
      Resume Exit_btnSave_Click

End Sub

そこには何も問題はないと思います。ビット列にバインドされたチェックボックスがある場合にのみエラーが発生しました

テキストボックスを同じ列にバインドしようとしました。値はデフォルトで false であり、値を変更しなければエラーは発生しません。

しかし、フォームが汚れていると、別のコントロールの値を変更してもエラーが発生しました。

理解できない。これは、ビット列にバインドされたコントロールがあるときに、ユーザーが 1 人しかいないことを Access が認識しない場合と似ています。

前回この問題が発生したとき、私はあきらめて、型を小さな int に変更しましたが、興味があります。ビットでそれを価値のあるものにする方法はありますか. 私が欲しいのはブール値だけです。

4

3 に答える 3

4

SQL サーバーのビット フィールドが null 可能かどうかを確認します。そうである場合は、null 以外にして、SQL サーバーの既定値を 0 (false) に設定します。Nullableビット フィールドに関するこの問題については、次のページで説明しています: Nullable bool fields in MS Access linked tables

于 2013-01-24T12:34:12.350 に答える
0

最初はタイプに誤りがありました...

これが最初の手がかりです。SQL Server に戻り、ビットが実際にビットであることを確認します。データベースのデータ型を変更する必要があると仮定すると、テーブルに再リンクするか、テーブルを削除して再度リンクする必要があります。

SQL Server で列のデータ型を変更できない場合は、VBA を使用する必要がある場合があります。MS Access 2010 には、チェックボックスをテキスト データ タイプ フィールドに設定するためのウィザードがある場合があります。ただし、設定した 2 以外の値 (できればそれ以上) がデータベースに格納されている場合は、問題が発生する可能性があります。

リンクされたテーブルにアクセスして、列の表示コントロールをテキストボックスではなくチェックボックスに変更しました...

これは、読み取り/書き込みには関係ありません。その列でフォームを作成するときのデフォルトのコントロールを決定するだけです。

于 2012-12-12T15:36:28.630 に答える