0

これは複雑です。私は Access にあまり詳しくなく、プログラマーです (つまり、自分自身でこれを難しくしていて、「簡単な」答えが見えていない可能性があります)。

では、考えてみましょう (例): 図書館のデータベースがあります。私は特定の本のコピーを持っています。私の本にはいくつかのステータスがあります: チェックアウト済み、棚にある、破損している、変なにおいがする/粘着性がある/使用できない.... Access に 2 つのフォームが必要です。1 つは私の本の基本情報用で、もう 1 つは実際にステータスを更新するためのものです。ステータスの変更には、記録する必要がある大量のデータがあるため、別のフォームが必要です。書籍フォーム自体は、基本情報とレンタル履歴用の小さなサブフォームで構成されています。書籍フォームには現在のステータスを含める必要があります。私の実際のステータス テーブルには、statusid、bookid、timestamp があります。

今... Accessに問題があるとは知らなかったので...本とステータスフォームの両方をバインドせずに残し、VBAからのrecorset/queryを入力しました。しかし、2つを接続しようとすると、怒鳴られました。「束縛されていない」それは私に言った。それで問題ないと判断し、クエリを実際のフロント エンドの Access Query セクション (左側) に移動し、vba の外に移動して、フォームを適切にバインドしました。でも今。私のレコード セットは更新できませんと表示されます。本の現在のステータスを取得するために、結合やネストされた select ステートメントなどを使用したためだと思います。これらのテキスト フィールドを変更できるようにする必要があるだけで、自分で挿入/更新を記述できます。テーブルを作成するように言っているネット上のいくつかのことを見つけましたが、マルチユーザー環境では機能しないことも読みました。

じゃあ… どうしよう?

4

1 に答える 1

0

あなたの問題は、メインフォームに複雑なクエリがあり、そのクエリの基になるテーブルを更新するために2番目のフォームを開いてから、新しく開いたフォームの現在のレコードを変更して保存したいということです。元のフォームを再クエリしますか? 私はあなたがプログラマーであることを理解しているので、これを行うための最も用途の広い方法は私には思えます: メインフォームのボタンは、新しいフォームをモーダルモードで正しいレコードで開きます (モーダルの後に元のフォームコードの残りの部分が確実に実行されるようにします)フォームが閉じられている場合)、モーダル フォームで魔法をかけてから、メインフォームを再クエリします。

次のようなことを試してください:

Private Sub myButton_Click()
  DoCmd.OpenForm "myEditForm", acNormal, , ID = 4, acFormEdit, acDialog
  me.requery
End Sub
于 2012-05-08T08:58:54.770 に答える