2016-05-01 15 views
0

私はJoinTable、Table1とTable2を持っています。Access VBA - 参加フォームを設計するのに役立つ

JoinTable: 
IDx 
IDy 

Table1: 
IDx 
Names 
Surnames 

Table2: 
IDy 
Address 
City 

さて、私はJoinTableのレコードを持ってフォームを作成します。ここでは、デザイン(例)です。このフォームでは、2つのコンボボックスがあり、そこからTable1またはTable2のレコードを選択します。例:

私がコンボボックスIDxから選択した場合は、表2のcontinuosフォームフィールドの値を同じにして見たいと思っています(コンボボックスのIDxまたはIDy)レコード(JoinTableで結合されています)。

私はサブフォームでこれを行うことができましたが、同じIDの下でJoinTableで結合されたレコードがたくさんあるので、サブフォームのリストが最大でないので、フォームが最大化されたとき(私はIszoommed APIでこれも試しましたが、スクロールバーの出現/消滅のため画面が点滅します)。

フォームを最大化して関連するすべてのレコードを簡単に参照できるように、同じフォーム内の両方のテーブルのレコードをどのようにナビゲートできるか、サブフォームを使用しないでください。

答えて

0

私はそれを解決しました。あなたがしなければならないことは説明するのは少し難しいですが、一般的には:

  1. あなたはJoinTableからレコードを持つフォームを作成する場合 - あなたはすべて、あなたのJoinTableから両方のIDを含んでいるレコードのクエリを作成し、する必要がありますあなたが見たいと思っている関連テーブルの他のフィールド。

  2. このフォームでは、JoinTableでリンクされている2つのテーブルのフィールドを追加します。必要に応じて、各テーブルのコンボボックスを使用したり、何か別のものを検索したりするときに、そのフィールドを表示/非表示にすることができます。

  3. あなたはVBAコードを書かなければなりません。私のソリューションはこのようなものです。私は2つのオプションボタンをフォームに入れました。そのうちの1つが選択されると、コンボボックスが表示され、検索対象のテーブルのフィールド(他のコンボボックスや他のテーブルのフィールドはその時点で非表示になっています)。コードは(上の例のために)このような何かを行く:文字列

    として

    薄暗いSQL

     SQL = "SELECT JoinTable.IDx, JoinTable.IDy, Table1.Names, Table1.Surnames" & _ 
          " FROM Table1 INNER JOIN JoinTable ON Table1.[IDx] = JoinTable.[IDx] " & _ 
          " WHERE JoinTable.IDx=" & Me.MyCombo 
    
         If IsNull(MyCombo) = True Then 
    
          Me.RecordSource = "" 
    
         Else 
    
          Me.RecordSource = SQL 
    
         End If 
    
  4. はCombobox_After_Updateにし、オプションボタンのClick_Eventにこのコードを入れて、それはそれです。これで、関連テーブルのフィールド(関連テーブルのIDと関連テーブル、サブフォームなし)を使用して、関連する(結合された)レコードを1つのフォーム内でナビゲートすることができ、必要に応じてフォームを最大化できます。

0

アクセスはサブフォームを使用して行います。
other code(私はグーグルのアクセスサブフォームの自動サイズ変更のグーグルグーグルが見つかりました)を使用することができますが、フラッシュはおそらくそこにとどまるでしょう:すべてのOfficeアプリケーションのようにアクセスはマルチスレッドをサポートしておらず、 OSは他のプロセスの実行を許可するためにGUIプロセスを停止させなければならず、ユーザーは 'フラッシュ'を見るでしょう。

+0

これらの点滅に関する質問を投稿し、何が表示されるかを確認することをお勧めします。なぜなら、サブフォームを使用しないと、なぜアクセスするのでしょうか... – marlan

+0

応答@marlanに感謝しますが、実際にはサブフォームを使用せずにそれを解決しました。これは解決すべき設計上の問題や、いくつかのVBAコーディングを伴う手続きですが、動作します。ここに例を載せれば、私はそれを示すでしょう。 – LuckyLuke82

関連する問題