2012-03-21 4 views
1

レコードをテーブルに挿入するときに、アクセスWebデータベースを作成して、不満足な問題に遭遇しています。アクセス、挿入後、見つからないID

私は挿入thusly、問題番号フィールドを設定するマクロ後を使用しようとしている:

Edit Record 
SetField 
Name: [Problem Number] 
Value =: [ID] (There is no more logic here but even this simplest case fails) 

問題は問題番号が空白になってしまうので、IDが値を持っていないということです。

このロジックはの更新後で動作し、その時点でIDを持つので意味があります。

私はこれをVBコードに切り替えることなく達成していますか?

答えて

1

いくつかあります。理論的にはbefore updateイベントとafter updateイベントが再び発生するため、after updateイベントを使用して現在のレコードを変更する必要はありません。この潜在的な可能性は、循環ループの場合です。

これについて考えてみると、レコードをすべてテーブルに保存した後には、それはほとんど意味がなくなり、レコードを再度編集することになります。実際には、コンテキストでの現在のレコードは、更新後のイベントでのみ読み込まれることが設計によって判明しています。したがって、更新後のイベントのコンテキストで現在のレコードの編集レコードを実行することはできず、エラーログをチェックすると「読み取り専用」エラーが発生します。

変更前イベントでは、[id]は使用できません。ただし、after updateイベントで[id]をピックアップして使用するのが最も確実です。あなたはブロックがあなたがそう

[LastCreateRecordIdentity] 

でレコードの書き込みを作成したばかりのレコードをピックアップすることができます作成​​したレコードの外に次の行、その後、別のテーブルに新しいレコードを作成しようとしている場合は

、レコードの作成ブロックの外側の次の行で発生します。

たとえば、新しいレコードを作成し、コードの「字下げ」に注意してください。

enter image description here

あなたは上記のレコードコマンドを作成をクリックした場合、その後全体が、コードのブロックを作成する事実ならばハイライト表示されます。 NEXTコード行が青いコードブロックの外側にどのようにあり、それが[LastCreateRecordIdentity]を使用できるコードであることに注意してください。

ブルーは、コードを強調ので、このです:

enter image description here

新しいIDを拾うことができますときに、右作成レコードの外に次の行があります。上の例では、私は実際にはreturnVars経由で作成された新しいIDを呼び出しルーチンに実際に "返す"。

+0

素晴らしい記事を書いてください! –

+0

非常に良い。私はこれに少し不満を抱いていたので、私はしばらくの間プロジェクトの別の部分に移動しました。私が月曜日に戻ってきたら、これをもう一度見てみましょう。 –

関連する問題