1つの質問で2つの問題は残念ですが、コードとエラーハンドラの両方が問題になっています。私は、Access 2016フロントエンドとSQL Server 2012バックエンドを使用します。.bookmark = .lastmodifiedトリガーODBCコールが失敗し、エラーハンドラが診断に失敗しています
- DAOレコードセットを使用して新しいレコードを挿入します。レコードが正常に挿入されます。ただし、.Update行が正常に処理された後、 ".bookmark = .lastmodified"行はODBC Call Failedエラーをトリガーします。
- 上記のODBCエラーの詳細情報を取得するためにエラートラッピングを挿入しましたが、 "For Each MyError In DBEngine.Errors"行にタイプが一致しません。
いずれかのヘルプに感謝します!ここで
はコードです:これらはエラートラップの問題としなければならない場合には
Private Sub Command5_Click() 'ADD
Dim ctl As control
Dim rstReg As dao.Recordset
Dim NewID as Long
On Error GoTo trap
If IsNull(Me.lstCustomers) Then
MsgBox ("You must select a customer")
Exit Sub
End If
Set ctl = Forms!frmmaintrn!lstSessions
Set rstReg = CurrentDb.OpenRecordset("trnRegistration", dbOpenDynaset, dbSeeChanges)
With rstReg
.AddNew
Select Case Me.txtRegType
Case 1 ' floating
!FloatClassID = Forms!frmmaintrn!fkClassID
!fkClassSchedID = 6760
Case 2 'registered
!fkClassSchedID = Forms!frmmaintrn!fkClassID
End Select
!DateEntered = Date
!fkCompanyID = Me.lstCustomers
!SalesRep = Forms!frmloginnames!lstOwner
!fkUserTypeID = Me.cboUserType
!fkOrderTypeID = Me.cboOrderType
!VerifDate = Me.VerifDate
.Update
.Bookmark = .LastModified
NewID = !RegistrationID
End With
trap:
Dim MyError As Error
MsgBox Errors.Count
For Each MyError In DBEngine.Errors
With MyError
MsgBox .Number & " " & .Description
End With
Next MyError
End Sub
そしてここでは、私の参照です。私には、Microsoft DAO 3.6オブジェクトライブラリを追加しようとしましたが、私は、この「既存のモジュール、プロジェクト、またはオブジェクトライブラリと名前の競合」
を解決する必要があります。テーブルから手動でレコードを手動で追加しようとするたびに、「無効なキャスト指定エラー」が表示されます。テーブルが破損しているかどうかをテストする方法はありますか?レコードを追加して編集または削除しようとすると、別のユーザーがテーブルを編集しようとしているというエラーメッセージが表示されるなど、他の方法でも奇妙な動作をしています。 – dkimbrell
一部のSQL Serverデータ型または仕様がAccessでうまく動作しません。バックエンドテーブル用のCREATE TABLE文を追加できますか? – Andre
新しいアクセスバージョンでは、DAOはDBエンジンオブジェクトライブラリに含まれています。 'DAO - C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ OFFICE14 \ ACEDAO.DLL - Microsoft Office 14.0 Accessデータベースエンジンオブジェクトを表示するには、' dao'にカーソルを置き、Shift + F2を押します。 (Access 2010の場合) – Andre