Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: christoph57078 am Oktober 25, 2010, 19:40:02

Titel: Datensatz aus Formular1 in Formular2 übernehmen
Beitrag von: christoph57078 am Oktober 25, 2010, 19:40:02
Hallo,

ich arbeite mit Access 2007 und dazu leider keine Ahnung von VBA.

Nun möchte ich mir eine DB bauen in der Kunden und Aufträge verwaltet werden.

Manche der Kunden sind Sammelbesteller, d.h. bestellen für andere Kunden mit - wobei jedoch jeder Kunde, also auch der Mitbesteller seine eigene Rechnung erhält, lediglich die Lieferung erfolgt in einem Paket.

Nun habe ich ein Formular erstellt, in dem ich einen Sammelbesteller aufrufen kann, im zugehörigen Unterformular werden nun die zugehörigen Mitbesteller aufgeführt. (Formular Sammelbesteller)

In einem weiteren Formular kann ich mir den Sammelbesteller aufrufen, im zugehörigen Unterformular werden die Sammelbestellungen des Sammelbestellers angezeigt. (Formular Sammelbestellung)

In dem Formular Sammelbesteller habe ich einen Button mit dem ich zum Formular Sammelbestellung wechseln kann.

Klicke ich auf diesen Button lande ich allerdings immer beim 1. Datensatz, möchte aber gerne direkt beim passenden Datensatz landen.

Das Feld samm_key ist mein Primärschlüssel über den die Zuordnung erfolgt.

Lösungsansätze habe ich zwar schon hier im Forum gefunden aber leider nicht verstanden.

Vielen Dank für eure Hilfe

christoph57078
Titel: Re: Datensatz aus Formular1 in Formular2 übernehmen
Beitrag von: DF6GL am Oktober 25, 2010, 21:07:48
Hallo,


ohne weitere Kenntnis der DB kann ich nur pauschal sagen, dass der Where-Condition-Parameter bei der Openform-Methode helfen könnte:

Docmd.Openform "frmFormular2" ,,,"[IDFeld] = " & Me!IDFeld
Titel: Re: Datensatz aus Formular1 in Formular2 übernehmen
Beitrag von: christoph57078 am Oktober 25, 2010, 21:47:06
Hallo DF6GL,

danke für die Antwort, leider sagen mir "Where-Condition-Parameter" und "Openform-Methode" nichts, ich bin daher wie folgt vorgegangen und dabei gescheitert:

Eigenschaftsblatt des Buttons geöffnet, eingebettetes Makro geöffnet und bei "Bedingung"
"[samm_key]=" & [samm_key]"
ersetzt durch
"[samm_key]=" & Me![samm_key]
daraus wurde dann
"[samm_key]=" & [Me]![samm_key]

danach das Formular wieder geöffnet, den Button geklickt, es öffnet sich ein Feld "Parameterwert eingeben" - egal was ich hier eingebe, es öffnet sich wieder der erste Datensatz im Formular "Sammelbestellung"

Titel: Re: Datensatz aus Formular1 in Formular2 übernehmen
Beitrag von: database am Oktober 25, 2010, 22:13:06
Hallo,

vergiss mal gleich die Makro-Geschichten.

Im Eigenschaftsblatt des Button wählst du die Registerkarte Ereignisse, für das Ereignis 'Beim Klicken' wählst du aus dem Dropdown den Eintrag [Ereignisprozedur] und klickst danach auf die drei Punkte.
Du befindest dich nun im VBA-Editor, in der Prozedur   Private Sub DeinButtonname_Click()

und da schreibst du nun zwischen dieser 'Kopfzeile' und End Sub

Docmd.OpenForm "NameDeinesFormulars" ,,,"[samm_key] =" & Me![samm_key]

Voraussetzungen dass das funktioniert:

Du änderst den Eintrag 'NameDeinesFormulars' auf den Namen des Formulars, das du öffnen willst.
Auf dem zu öffnenden Formular befindet sich ein Feld das den Namen samm_key trägt
Dieses Feld ist bei geöffnetem Formular NICHT leer sondern enthält für JEDEN Datensatz einen Wert.
Auf dem Formular von dem aus du den Aufruf machst existiert ein Feld namens samm_key, das zum Zeitpunkt des Buttonklick einen Wert enthält.
Kommata und Gänsefüßchen sind dort gesetzt wo du sie hier im Code siehst - und zwar GENAU dort.

Kontrolliere die Namen der angesprochenen Felder - sie müssen exakt so heissen, wie si im Code angegeben sind.
Wenn die Felder andere Namen haben, dann ändere diese im Code.
Me![samm_key] ist jenes Feld, das sich auf dem Formular befinden sollte auf dem auch der Button steht. [samm_key] ist der Feldname, Me! bezieht sich auf das ktuelle Formular.

Mit der OpenForm-Methode hat Franz diese Methode gemeint ... DoCmd.OpenForm
Die WHERE-Condition dient als Einschränkung um im geöffneten Formular den gewünschten Datensatz zur Anzeige zu bringen ("'WHERE' [samm_key]=" &  Me![samm_key])
Die Angabe dieser WHERE Condition bei der OpenForm-Methode nennt man dann den WHERE-CONDITION-PARAMETER.

Siehe heirzu in der OH unter dem Suchbegriff  'DoCmd.OpenForm'  (markiere diesen Text im VBA-Editor und drücke F1 ... nachlesen!


HTH
Peter
Titel: Re: Datensatz aus Formular1 in Formular2 übernehmen
Beitrag von: christoph57078 am Oktober 26, 2010, 08:50:09
Hallo,

vielen Dank, dass war genau das was mir fehlte, es funktioniert jetzt einwandfrei.

Peter, eine Frage noch zu deiner Aussage "vergiss mal gleich die Makro-Geschichten", meintest du damit nur mein aktuelles Problem oder grundsätzlich in Access?

Viele Grüße

christoph57078
Titel: Re: Datensatz aus Formular1 in Formular2 übernehmen
Beitrag von: database am Oktober 26, 2010, 09:05:41
Hallo, guten Morgen,

damit meine ich grundsätzlich den Verzicht auf Makros als solches.

Makros sind nicht nur unflexibel, sie bieten keine ordentliche Fehlerbehandlung und wenn mal was passiert ist die Fehlersuche enorm aufwändig.
Der Einsatz von VBA-Routinen und Funktionen sind JEDEM Makro vorzuziehen.

Das Einzige Makro, das ich gelten lassen würde ist das Autoexec um beim Starten einer Applikation eine VBA-Routine anzusprechen.

Grüße
Peter