2011-12-20 5 views
0

Accessプロジェクトで何かをしなければならなかったので、しばらくお待ちいただきました。Access 2007のプロジェクトフォームでの問題入力/更新データが許可されていない

私は、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プロジェクトとしては機能しません。

ご協力いただければ幸いです。

答えて

0

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

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    Me.LastChanged = Now() 
End Sub 
+0

ごめんなさい、遅く返事のために、むしろ忙しかった。 "イベントハンドラ"に関しては、Change、BeforeUpdateなどのような意味です。私はAfterUpdateにコードを移動して問題を解決しています。助けてくれてありがとう。 – ByerRA

+0

@ByerRAフォームのAfterUpdateは、無限ループを引き起こす可能性があるため、フォーム上の何かを変更するために使用するのは良いイベントではありません。私はあなたがコントロールのアフターアップデートイベントを使用しているか、または他の方法でデータを更新しているに違いないと確信しています。 – Fionnuala

関連する問題