Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

bestimmter Datensatz im Unterformular aufrufen





Frage

Hallo Access Spezialisten, ich habe eine Access Datenbank mit zwei Tabellen, Frimen (Firma) und Ansprechpartnern (Partner) erstellt. Es gibt ein Hauptformular (Haupt) das einen Datensatz der Tabelle Frima zeigt. Ein eigebettetes Unterformular (Unter) zeigt die Datensätzte der Ansprechpartner der jeweiligen Firma. Ich habe ein Suchformular (Suchen) erstellt mit dem man nach dem Namen des Ansprechpartners suchen kann. Man gibt im Suchfeld (Name) einen Namen ein und klickt auf einen Button, der ein Listenformular (Liste) öffnet das alle Treffer enthält. Beispiel: Suche nach Meier (von der Firma Müller) Es gibt in der Tabelle Partner 5 verschiedene Anspechpartner mit dem Namen Meier, allerdings von verschiedenen Firmen Es werden alle Ansprechpartner mit dem Namen Müller aufgelistet. In der Liste wird auch der Frimenname aus der Tabelle Firma angezeigt. In der Liste habe ich einen Button (mit einem dahinter liegenden Makro) zu jedem Datensatz eingesetzt. An Hand des Buttons wird das Hauptformular geöffnet und die Firma des ausgewählten Datensatzes korrekt angezeigt. Da aber für die Firma Müller 10 Ansprechpartner vorhanden sind, der Ansprechpartner Meier sich im dritten Datensatz befindet und das Unterformular nur immer jeweils den ersten Datensatz aus der Tabelle Partner für die Frima Müller entnimmt, ist das Ergebnis im Unterformular falsch. Wie kann ich sicherstellen, dass im Hauptformular die Firma Müller angezeigt wird sowie im Unterformular der Ansprechpartner Meier gezeigt wird. Leider bin ich weder VB Profi noch weiß ich viel mehr als was mir die Access Hilfe bzw. google verrät.... Ich bitte um Hilfe für einen "Blinden" ;-) Gruß Frank

Antwort 1 von oliverV

Hallo Frank,

wenn ich dich richtig verstanden habe, werden im UF die Ansprechpartner korrekt angezeigt, wenn du die Suchfunktion nicht nutzt.
Beim Listenfeld für die Suche bekommst du Firmenname und Ansprechpartner angezeigt, mit dem Suchbutton öffnest du das HF/UF - was verwendest du dabei als Kriterium ?
Ich denke mir den Ansprechpartner, hierbei solltest du dich meiner Meinung nach auf die FirmenID beziehen, um den entsprechenden HF-Datensatz anzeigen zu lassen (die Ansprechpartner werden im UF dann ja automatisch korrekt angezeigt).

Wenn der Tipp nicht in die richtige Richtung ging, kann ich dir auch anbieten mal einen Blick in die DB zu werfen, Problem ist aus der "Ferne" nicht ganz einfach nachzuvollziehen.

Gruß

Oliver

Antwort 2 von Lax

Hallo Oliver,

wenn ich das HF ohne Suchfunktion aufrufe, dann kann ich mir die gesamte Datenbank mit allen Firmen anzeigen lassen. Im UF werden jeweils immer die Ansprechpartner der jeweiligen Firma angezeigt. Das funktioniert problemlos. Ich kann sowohl innerhalb des HF sowie im UF alle Datensätze anzeigen lassen.

Nach dem Ich mit einem Suchformular ein Listenformular geöffnet habe sehe ich eine Liste von Ansprechpartner und jeweils die dazugehörige Firma. Wenn ich jetzt das HF mit UF über einen Öffnen Button im Listenformular öffne, dann zeigt mir das HF die richtige Firma für den gewählten Ansprechpartner, aber im Unterformular wird nur der erste Datensatz gezeigt (also ein falscher, Falls eine Firma mehr als einen Ansprechpartner hat und der ausgewählte Ansprechpartner sich nicht im ersten Datensatz befindet).

Als Kriterium für das Öffnen des HF aus dem Listenformular verwende ich die Firmennummer (index aus Firma). Deshalb wird das HF auch richtig mit der korrekten Firma geöffnet.

Im HF habe ich kein Feld Ansprechpartner, daher kann ich auch keine Verknüpfung zwischen dem ausgewählten Datensatz aus dem Listenformular (Firma und Ansprechpartner ) und einem Ansprechpartner herstellen. Der Ansprechpartner wird im Unterformular angezeigt.

Ich denke mein Problem liegt darin, dass ich bei der Selektion aus dem Listenformular noch ein weiteres Kriterium übergeben könne sollte. Soll heißen, ich müsste dem HF sagen können, welche Firma es öffnen soll (das funktioniert) und gleichzeitig dem UF welchen konkreten Ansprechpartner es zeigen soll (der Ansprechpartner wird im Listenformular gezeigt kann aber nicht übergeben werden).

Ideen die ich bereits hatte:
- GoToControl (aber wie oder wo kann ich die Referenzierung holen und platzieren)
- SetFocus (ich weiss nicht wirklich was das ist, aber wenn damit gemeint ist, dass ich dem UF den Datensatz des Ansprechpartners übergeben könnte, dann...
- Filter auf Unterformular, ich könnte mir vorstellen, hier übergebe ich dem UF die ID des Ansprechpartners (aus dem Listenformular) und setzte ein Filter beim öffnen des UF auf die ID, aber woher bekomme ich die ID (ist das der Focus???´)

Leider bin ich damit nicht zur Rande gekommen, weil ich zu wenig über VB weiss. Ich bin nicht einmal sicher, wo oder wie ich die Befehle eingeben kann.

Gerne sende ich Dir auch mal die DB. Sag mir wie und wohin.

Gruß von einem ACCESS UF und VB DAU!

Frank

Antwort 3 von oliverV

Hallo Frank,

nach erfolgreicher Suche, sollen dir im UF alle zur Firma gehörigen Ansprechpartner angezeigt werden (also wie im normalen HF/UF ohne Suche), oder soll nur der selektierte Ansprechpartner (aus dem Suchlistenfeld) angezeigt werden ?

Im ersten Fall, brauchst du nur die FirmenID bei der Suche als Kriterium zu übergeben (alle Ansprechpartner werden durch die HF/UF-Verknüpfung automatisch angezeigt).

Im zweiten Fall müsstest du die Datenherkunft des UF´s verändern, das kannst du nur in VBA machen, indem du die RecordSource-Eigenschaft ansprichst.
Wie das genau geht sollten wir dann konkret mit deiner DB besprechen, sonst wird es hier zu abstrakt.

Mit der GoToControl- bzw. SetFocus-Methode setzt du lediglich den Focus (Cursor) auf ein Steuerelement im Formular; der Unterschied bei den beiden Methoden dürfte sein, das du die SetFocus-Methode nur im aktiven Formular verwenden kannst, die GoToControl-Methode kannst du auch in einem ausgeblendeten Formular verwenden (bin mir aber selbst nicht ganz sicher).

Wenn ich in die DB reinschauen soll, kannst du mir diese mailen (Adresse per Pager - links unter "Archiv"), ich verwende Access 2000 (bei einer höheren Version müsstest du konvertieren).
Lasse nur ein paar Beispieldatensätze in der DB, dann bitte komprimieren (Extras-Datenbankdienstprogramme), zum Schluss nur ein nettes Päckchen mit WinZip geschnürt.

Gruß

Oliver

Antwort 4 von Lax

Hallo Oliver,

es spielt keine Rolle ob nur der eine Datensatz oder alle verfügbaren angezeigt werden können. Wichtig ist nur, dass der ausgewählte Ansprechpartner aus der Liste als erstes angezeigt wird.

Genau so habe ich es gemacht. FirmenID bei der Suche als Kriterium übergeben (alle Ansprechpartner werden durch die HF/UF-Verknüpfung automatisch angezeigt), aber eben jedesmal der erste verfügbare Datensatz und nicht der ausgewählte Name. Durch Blättern im UF kann ich den gesuchten Datensatz finden. Das ist aber nicht praxisgerecht.

Lass´ uns mal weitersprechen, wenn du die DB gesehen hast. Vielleicht klappt es mit RecordSource-Eigenschaft.

Gruß

Frank

Antwort 5 von oliverV

Hallo Frank,

ich habe es gelöst, muss dir aber noch ein paar "warme Worte" zur Erklärung schreiben, melde mich dann morgen wieder.

Gruß

Oliver

Antwort 6 von denkerD

Hallo Frank!

Ich habe fast das gleiche Problem! Allerdings listet mein Unterformular alle Ansprechpartner auf! (Ohne Suche) Mir würde es schon reichen, wenn ich dem Unterformular sagen könnte, dass es nur die Ansprechpartner von der X anzeigt. Kannst Du mir da mal einen Tipp geben?

Gruß

denkerD

Antwort 7 von Lax

Hi denkerD,

wenn ich Dich richtig verstanden habe dürfte das ganz einfach sein.

Wenn Du ein UFO in ein Formular einbindest, dann wirst Du in der Regel von einem Assitenten geleitet. Dieser Assistent fragt Dich an einer Stelle, was das Kriterium ist für das Unterformular.

In Deinen Fall willst Du für die Firma X den Ansprechpartner im UFO anzeigen. Da musst Du bei der Kriteriumabfrage z.B. die Frimennummer aus dem Formular mit der Firmennummer des Ansprechpartners gleich setzten. Dann wir automatische der Code übergeben bzw. eingetragen.

Eine andere Möglichkeit wäre wenn Du im Unterformular die Datenherkunft eines Feldes mit dem Code

Parent!Firmennummer = Me!Firmennummer_des_Ansprechpartners

Probier´s mal und wenn es nicht funktioniert, sende mal Deine gezippte Datei.

Gruss
Frank