レコードをテーブルに追加するために保存された挿入クエリがあります。クエリのパラメータは、バインドされていないフォームから取得します。表の2つのフィールドは、はい/いいえのデータ型です。これらのフィールドのフォームコントロールはチェックボックスです。ここでMS Access 2013がVBAから奇妙なエラーで挿入クエリを呼び出す
が保存されたクエリが「qryInsertLog」
あるPARAMETERS UserPar Text (255), ApprovedByPar Text (255), CCedByPar Text (255),
UnitIdPar Short, NotePar LongText, Z3Par Bit, Z5Par Bit, FollowupNotesPar LongText;
INSERT INTO tblLogBook ([User], ApprovedBy, CCedBy, UnitID, Notes, Z3, Z5, FollowupNotes)
SELECT [UserPAR] AS Expr1, [ApprovedByPar] AS Expr2, [CCedByPar] AS Expr3,
[UnitIDPar] AS Expr4, [NotePar] AS Expr5, [Z3Par] AS Expr6, [Z5Par] AS Expr7,
[FollowupNotesPar] AS Expr10;
ここに私のフォーム上のボタンを救うに縛ら私のVBAコードさ:
Private Sub cmdSaveandNew_Click()
Dim db As DAO.Database
Dim qdf1 As DAO.QueryDef
Set db = CurrentDb
Set qdf1 = db.QueryDefs("qryInsertLog")
'put form parameters into insert query
qdf1.Parameters(0).Value = Me.cboUser.Value
qdf1.Parameters(1).Value = Me.cboApprover.Value
qdf1.Parameters(2).Value = Me.cboCCer.Value
qdf1.Parameters(3).Value = Me.cboUnit.Value
qdf1.Parameters(4).Value = Me.txtNotes.Value
qdf1.Parameters(5).Value = Me.chkZ3.Value
qdf1.Parameters(6).Value = Me.chkz5.Value
qdf1.Parameters(7).Value = Me.txtFollowup.Value
qdf1.Execute
Set qdf1 = Nothing
Call resetForm
End Sub
「resetFormは」単に返すルーチンですフォームコントロールをデフォルト値に戻します。
保存ボタンを押したときに、レコードが追加されることがありますが、Me.chkZ3.ValueとMe.chkZ5.Valueの値が正しく設定されていない場合があります(これをチェックしても、偽として)。
Run-time error '3000':
Reserved error (-3033); there is no message for this error.
これについての最も興味深い部分は、しかし、唯一の1はい/いいえフィールドを含めるために、私は私のクエリを変更するとき、私は得ることです:保存ボタンを数回押した後、私は次のエラーを取得開始しますエラーやレコードは正しく更新されません。
ここで何が起こっているのですか?
編集:アクセスオブジェクトウィンドウ(VBAではなく)からクエリを実行すると、それは正確に動作するはずです。
少なくとも1つの情報源によれば、-3033は権限エラーです。 (https://groups.google.com/forum/#!topic/microsoft.public.sqlserver.replication/ZE-SNQsJ0Qs)2つのチェックボックスを使用している場合にのみ発生する理由は...考えられません。 – Mikegrann
あなたがあなたの 'PARAMETERS'宣言の' Bit'を 'Short'(あるいは' Long')に変更すれば? – Andre
パラメータのデータ型宣言を変更しても全く動作しません。 –