Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: christoph57078 am Oktober 27, 2010, 17:42:14

Titel: Formular automatisch ausfüllen z.B. über Filter
Beitrag von: christoph57078 am Oktober 27, 2010, 17:42:14
Hallo,

ich habe schon wieder ein neues Problem:

ich komme durch einen Button von meinem Formular "Mitbesteller" zum Formular "Bestellung" (Formulartyp: Einspaltig).

Das Formular "Bestellung" ist gefiltert, so dass ich dort nur die Bestellungen des Mitbestellers einsehen kann.

Wenn ich jetzt im gefilterten Formular eine neue Bestellung anlege muss ich die Kundennummer (kund-key) , die Sammelbestellernummer (samm-key) und die Nummer der Sammelbestellung (sabe-key) jeweils manuell neu eintragen.

Wie kann ich das Formular anlegen, damit "kund-key" und "samm-key" bereits vorausgefüllt sind und "sabe-key" als Auswahlliste vorliegt?

Viele Grüße

christoph57078
Titel: Re: Formular automatisch ausfüllen z.B. über Filter
Beitrag von: Hondo am Oktober 27, 2010, 20:20:02
Hallo,
Bestellung und Mitbesteller stehen doch in einem Zusammenhang. Wieso dann getrennte Formulare?
Ich denke mal Mitbesteller ist ein Endlosformular, das einen gemeinsamen Schlüssel mit der Tabelle Bestellung hat.
Dann solltest du in das Formular Bestellung ein Unterformular mit Bindung über den gemeinsamen Schlüssel einfügen.

Gruß Andreas
Titel: Re: Formular automatisch ausfüllen z.B. über Filter
Beitrag von: christoph57078 am Oktober 27, 2010, 20:52:19
Hallo,

leider ist alles etwas umfangreicher:

Es gibt einen Sammelbesteller, dieser hat mehrere Sammelbestellungen.

In einer Sammelbestellung gibt es mehrere Mitbesteller.

Jeder Mitbesteller hat pro Sammelbestellung eine Bestellung mit mehreren Positionen. Bei der Bestellung sind die Bestellpositionen im Unterformular eingefügt.

Wenn ich nun also Mitbesteller und Bestellung in ein Formular packe habe ich ein Formular mit zwei Unterformularen, aber mein ursprüngliches Problem immer noch.

"kund-key" ist der Primärschlüssel von der Kundendatei
"samm-key" ist der Primärschlüssel von der Sammelbestellerdatei
"sabe-key" ist der Primärschlüssel der Sammelbestellung

Grüße und danke
christoph57078
Titel: Re: Formular automatisch ausfüllen z.B. über Filter
Beitrag von: database am Oktober 27, 2010, 21:12:13
Hallo Christoph,

Zitatich komme durch einen Button von meinem Formular "Mitbesteller"
Wenn du auf diesem Formular die Möglichkeit hast die Werte für 'kund_key' und 'samm_key' festzustellen, KÖNNTEST du diese beiden Werte in (versteckte/unsichtbare) Felder auf dem Formular 'Bestellung'
einfügen.
Dazu KÖNNTEST du im Klick-Ereignis des Aufrufbuttons schreiben:



    DoCmd.OpenForm "Bestellung"
    Forms!Bestellung!DeinNeuesKundenKeyFeld = VariableKundenKey    'wenn die Werte zuvor in Variablen eingelesen wurden
    Forms!Bestellung!DeinNeuesSammelKeyFeld = Me!SammelKeyFeld    'wenn die Werte der Keys in Feldern vorhanden wären



Für die von dir angesprochene Auswahlliste nimmst du ein Kombifeld, dessen Datenherkunft eine Abfrage auf die Tabelle Sammelbestellung darstellt (sabe_key als gebundene Spalte, weiter Spalten nach Bedarf) das Kombifeld ist an das Fremdschlüsselfeld der Datenherkunft des Formulars gebunden.

HTH

Peter
Titel: Re: Formular automatisch ausfüllen z.B. über Filter
Beitrag von: DF6GL am Oktober 27, 2010, 21:19:27
Hallo,

prinzipiell so:

Übergib die einzelnen Felder als "Liste" als Openargs-Parameter an das Form in der Openform-Methode

Docmd.Openform "Bestellung",,,<<DeinFilter>> ,,,Me![kund-key] & ";" & Me![samm-key] & ";" & Me![sabe-key]



Im Form_Load-Ereignis trennst Du die übergebene Liste mit der Split-Funktion wieder auf und weist die Werte der Standardwert-Eigenschaft der jeweiligen Formfelder zu.



Sub Form_Load()
If not isNull(Me.Openargs) Then
Me![kund-key].Defaultvalue = Split(Me.Openargs,";")(0)
Me![samm-key].Defaultvalue = Split(Me.Openargs,";")(1)
Me![sabe-key].Defaultvalue = Split(Me.Openargs,";")(2)
End If
End Sub



Warum Du nun [sabe-key] auswählbar machen willst, wenn Du den Wert eh schon hast, kann ich nicht so recht verstehen.


und btw: AUF LEER- / UND SONDERZEICHEN DRINGEND  VERZICHTEN
Titel: Re: Formular automatisch ausfüllen z.B. über Filter
Beitrag von: christoph57078 am Oktober 28, 2010, 12:58:30
Hallo Peter, hallo Franz,

vielen Dank für eure schnelle Hilfe.

Ich habe gestern abend die Variante von Peter für "samm-key" und "kund-key" verwendet, das funktioniert einwandfrei, die Lösungsmöglichkeiten von Franz habe ich erst heute morgen gesehen.

Da jeder Mitbesteller nur einen Sammelbesteller (samm-key) und eine Kundennummer (kund-key) hat ist die Zuordnung eindeutig.

ZitatWarum Du nun [sabe-key] auswählbar machen willst, wenn Du den Wert eh schon hast, kann ich nicht so recht verstehen.
"sabe-key" ist die Nummer der Sammelbestellung, jeder Mitbesteller kann sich natürlich an mehreren Sammelbestellungen beiteiligen, daher war hier die Auswahl gewünscht. Aufgrund deiner Frage kam mir aber die Erkenntnis, dass immer die neueste "sabe-key" in meinem Formular erscheinen soll.

Wenn ich also nun über den Button "Mitbesteller" in mein Formular "Bestellung" komme ist das Feld "samm-key" ja schon ausgefüllt.
Wenn ich auf anderem Weg in das Formular "Bestellung" fülle ich das Feld "samm-key" manuell aus.
Wie sage ich Access: "wenn ich in "samm-key" einen Wert eingebe dann gehe in meine Tabelle "tbl_Sammelbestellung_101026", schaue nach welche "sabe-key" diesen "samm-key" haben und trage mir in diesem Formular den neuesten (=höchsten) Wert ein."

Vielen Dank und viele Grüße
christoph57078
Titel: Re: Formular automatisch ausfüllen z.B. über Filter
Beitrag von: DF6GL am Oktober 28, 2010, 20:52:30
Hallo,

such in der VBA-Hilfe nach der Erklärung für die DMax-Funktion....
Titel: Re: Formular automatisch ausfüllen z.B. über Filter
Beitrag von: christoph57078 am November 09, 2010, 20:50:53
Hallo Franz,

habe die DMax-Funktion gefunden und in den letzten Tagen auch Versuche damit gemacht - letztlich scheitert aber alles an meinen fehlenden VBA-Kenntnissen.

Gibt es da irgend etwas wie einen Grundwortschatz o.ä. als Starthilfe hier im Forum oder Internet allgemein?

Danke für jede Hilfe.

Christoph57078