0

Access プロジェクトで何かをしなければならなかったのは久しぶりなので、これが簡単なことなら許してください。

Access 2007 プロジェクトに変換した Access 2007 データベースがあります。SQL 2008 サーバー上にすべてのテーブルとビューを作成し、必要なすべての権限を付与して、テストを開始しました。

私が問題を抱えているのは、データの更新に使用されるフォームがあることです。フォームはビューから供給され (ビュー内のすべてのテーブルには主キーがあります)、ビューはスキーマにバインドされています。一部のフィールドのフォームには、「Last_Worked」フィールドを更新する「Change」イベント ハンドラがあり、それらのフィールドが最後に変更された時刻を追跡できます。("Last_Worked" フィールドは SQL サーバーでは "datetime" です) イベント ハンドラーは基本的に "Last_Worked = Now()" です。

問題は、「変更」イベント ハンドラーがあるフィールドでは、それらのフィールドに何も入力できず、入力を開始してもフィールドに何も表示されないことです。テーブルの「Last_Worked」フィールドを確認すると更新されていますが、フォームから変更しようとしたフィールドは変更されていません。

データを更新し、データビューから新しいレコードを挿入できるため、フォームにフィードしているビューは読み取り専用ではありません。イベント ハンドラーを削除すると問題は解決しますが、これらのフィールドが更新されたときにログを記録する必要があります。イベント ハンドラで "Me!Last_Worked = Now()" と "Me!Last_Worked.Value = Now()" を実行しようとしましたが、同じ問題が発生しました。これらのフィールドを更新/編集できません。

これはAccessで完全に機能し、空のAccessデータベースを作成し、フォームをコピーして、サーバーのビューにリンクされたテーブルを作成し、機能しました. Access プロジェクトとしては機能しません。

どんな助けでも大歓迎です。

4

1 に答える 1

0

イベントハンドラーとは、コントロールソースを設定したということですか?データ入力のコントロールが必要な場合は、それを行うことはできません。小さな変更があるたびに変更イベントが実行されることにも注意してください。新しいレコードのデフォルト値を使用するか、関連するコントロールの更新イベントで VBA を実行できます。この場合、次のものが必要だと思います。

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Me.LastChanged = Now()
End Sub
于 2011-12-20T21:08:37.507 に答える