2012-05-07 10 views
0

これは複雑です。私はアクセスにあまり慣れていない、私はプログラマーです(私は自分自身でこれをより困難にし、 "簡単な"答えを見ない)かもしれません。問題:Access 2007、VBA、親子フォーム、レコードセット更新不可

(例)を考えてみましょう: 私たちはライブラリデータベースを持っています。私は本の特定のコピーを持っています。私の本は、いくつかの状態を持つことができます:チェックアウト、棚で、破壊、奇妙な/付箋/コミッションからのにおい....私はAccessに2つのフォームが必要です。私の本の基本情報と実際にステータスを更新するためのもの。ステータスが変更されると、記録する必要があるデータ量が膨大になるため、これには別個のフォームが必要です。本の書式自体は基本情報とレンタル履歴用の小さなサブフォームで構成されています。ブックフォームには現在のステータスが含まれている必要があります。私の実際のステータステーブルにはstatusid、bookid、timestampがあります。

今、私はAccessに問題があるとは知らなかったので...私の本とステータスの両方のフォームをアンバインドして、VBAのrecorset/queryで埋めました。しかし、私は2つを接続しようとしたときに私に叫んだ。それは私に言った "束縛されていない"。私はそれが問題ないと判断し、クエリを実際のフロントエンドのAccess Queryセクション(左側)に移動し、vbaから外してフォームを適切にバインドしました。でも今。私のレコードセットは更新できないと言います。私は、本の現在のステータスを取得するために、ジョインと入れ子の選択ステートメントなどを使用したと仮定します。私はそれらのテキストフィールドを変更することができるだけで、挿入/更新を自分で作成することができます。私はネット上でテーブルを作成するということをいくつか見つけましたが、マルチユーザ環境では動作しません。ブックフォームが開いているときにユーザーがボタンをクリックしてブックのステータスを変更し、そのステータスフォームを保存/閉じるとすると、ブックフォームを再クエリして更新されたステータスを表示できるようにする必要があります。

だから私は何をしますか?

+0

ああ:

はこのような何かを試してみてください。書籍の書式をブックテーブルにバインドするだけで、そのテーブルにない追加のデータ(現在のステータスなど)はvbaクエリで取得する必要がありますか? Form_Current()を使ってそれを処理しますか? –

答えて

0

私が正しく理解しているのは、メインフォームに複雑なクエリがあり、そのクエリの基礎となるテーブルを更新するために2番目のフォームを開き、新しく開いたフォームの現在のレコードを変更したいということです。それを保存して元のフォームを再クエリーしますか? メインフォーム上のボタンは、適切なレコードを持つモーダルmodusで新しいフォームを開きます(元のフォームコードの残りの部分が確実に実行されることを保証します)。モーダルフォームは閉じています)、あなたの魔法をモーダルフォームで行い、メインフォームを再クエリーします。

Private Sub myButton_Click() 
    DoCmd.OpenForm "myEditForm", acNormal, , ID = 4, acFormEdit, acDialog 
    me.requery 
End Sub 
関連する問題