2016-05-01 15 views
0

Ich habe eine JoinTable, Tabelle1 und Tabelle2. Hier ist Design (Beispiel):Access VBA - Hilfe beim Entwerfen eines Join-Formulars

JoinTable: 
IDx 
IDy 

Table1: 
IDx 
Names 
Surnames 

Table2: 
IDy 
Address 
City 

Jetzt werde ich ein Formular erstellen, das eine Record von JoinTable hat. In dieser Form werde ich 2 Comboboxen haben, aus denen ich Datensätze aus Tabelle1 oder Tabelle2 auswählen werde. Basierend auf Combobox-Auswahl (das ist IDx oder IDy), möchte ich Feldwerte aus verwandten Tabelle .... Beispiel:

Wenn ich aus Combobox IDx auswählen, möchte ich in Continuos Formularfeld Werte aus Tabelle2 unter sehen Datensatz (die in JoinTable verknüpft sind).

Ich habe es geschafft, dies mit subforms zu tun, aber ich habe eine Menge von Datensätzen, die in JoinTable unter gleichen IDs miteinander verbunden sind, so durch subforms Auflistung ist nicht schön, wenn eine Menge Spiele gibt es, weil Unterformular maximieren nicht Wenn die Form maximiert ist (Ich habe es auch mit der API von Iszoommed versucht, aber es ist immer noch nicht gut - der Bildschirm blinkt, weil Bildlaufleisten erscheinen/verschwinden).

Hat jemand eine Idee, wie ich durch Datensätze von beiden Tabellen innerhalb der gleichen Form und ohne Unterformulare navigieren könnte, so dass ich Formular maximieren und alle verwandten Datensätze leicht sehen kann?

Antwort

0

Ich habe es gelöst. Was Sie tun müssen, ist ein wenig schwer zu erklären, aber im Allgemeinen:

  1. Wenn Sie ein Formular erstellen, die Datenherkunft aus JoinTable hat - müssen Sie eine Datenherkunft Abfrage erstellen, die beide IDs von Ihrem JoinTable enthält und dann alle andere Felder aus verwandten Tabellen, die Sie sich ansehen möchten.

  2. In diesem Formular fügen Sie Felder aus diesen 2 Tabellen hinzu, die in JoinTable verknüpft sind. Falls gewünscht, können Sie diese Felder basierend auf der gewünschten Suche ein-/ausblenden (über Combobox für jede Tabelle oder etwas anderes).

  3. Dann müssen Sie VBA-Code, meine Lösung ist so - ich habe 2 Optionsfelder auf Formular. Wenn einer von ihnen ausgewählt ist, wird eine Combobox angezeigt und Felder aus der Tabelle, die durchsucht werden sollen (andere Combobox und Felder aus anderen Tabellen sind zu diesem Zeitpunkt ausgeblendet). Code geht so etwas (zum oberen Beispiel):

    Dim SQL As String

     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. diesen Code in Combobox_After_Update Put und in Click_Event von Optionstasten, und das ist es. Jetzt können Sie durch verwandte (verknüpfte) Datensätze innerhalb eines Formulars mit Feldern aus verwandten Tabellen navigieren, indem Sie die IDs von JoinTable und verwandten Tabellen und ohne Unterformulare verwenden, so dass Sie Ihr Formular beliebig erweitern können.

0

Sie tun dies in Access mit Unterformularen.
Für Design-Probleme, könnten Sie vielleicht other code verwenden (Ich fand einige nette Ideen googlen ms Zugriff Unterformular automatische Größenanpassung), aber die Blitze würden wahrscheinlich bleiben dort: Zugriff, wie alle Office-Anwendungen, unterstützt keine Multi-Threading, Das Betriebssystem muss den GUI-Prozess anhalten, damit andere Prozesse ausgeführt werden können und der Benutzer "Blitze" sieht.

+0

Ich schlage vor, Sie stellen eine Frage auf diese Blitze, und sehen, was kommt. Denn wenn nicht ein Unterformular verwenden, warum es in Access? ... – marlan

+0

Danke für die Antwort @marlan, aber eigentlich habe ich es gelöst, ohne Unterformulare zu verwenden. Es ist ein Verfahren mit einer Menge Design-Probleme zu lösen und einige VBA-Codierung, aber es funktioniert.Wenn ich hier ein Beispiel veröffentlichen könnte, würde ich es zeigen. – LuckyLuke82