Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: weggli1 am August 09, 2010, 12:04:18

Titel: Formularpfad
Beitrag von: weggli1 am August 09, 2010, 12:04:18
Hallo zusammen, ich habe ein Problem, welches eigentlich in 3 sek. gelöst sein sollte, aber ich komm nicht drauf.
Ich habe nein Formular mit einem UFO.
Im UFO kann man die Produkte und die Anzahl, die bestellt werden eingeben. Alles klappt, jedoch werden alle Produkte angezeig und nicht nur die, die vom jeweiligen Lieferanten sind.
Ich habe folgende Abfrage eingegeben:

SELECT Produkt.Produkt_ID, Produkt.Produktname, Produkt.Lieferant_ID
FROM Produkt
WHERE (((Produkt.Lieferant_ID)=[Nachbestellung_Formular].[Lieferant_ID]));

Nun muss ich jedoch jedesmal, wenn ich das Formular öffne, den Parameterwert von Hand eingeben, dann klappt es. Ich möchte jedoch, dass es automatisch Bezug auf die im Oberformular eingegebene Lieferanten_Id nimmt.
kann mir jemand den richtigen Pfad sagen, den ich anstelle von [Nachbestellung_Formular].[Lieferant_ID] eingeben muss?

danke schon im Voraus

[Anhang gelöscht durch Administrator]
Titel: Re: Formularpfad
Beitrag von: DF6GL am August 09, 2010, 13:40:57
Hallo,

ersetz die Abfrage beim Unterformular durch den entspr. Tabellennamen und stell die UFO-Steuerelement-Eigenschaften "Verknüpfen von/nach" auf die Schlüsselfelder ein ("Produkt_ID", "Lieferant_ID")
Titel: Re: Formularpfad
Beitrag von: weggli1 am August 10, 2010, 15:42:40
Sorry, das habe ich nicht ganz begriffen. wo kann ich das Verknüpfen einstellen?

Habe noch etwas anderes probiert:

SELECT Produkt.Produkt_ID, Produkt.Produktname
FROM Produkt
WHERE (([Produkt.Lieferant_ID]=[Forms]![Nachbestellung_Formular]![Lieferant_ID]));

Jetzt filtert es zwar gewisse Produkte raus, zeigt aber unabhängig von der eingestellten Lieferant_ID
immer nur die Produkte vom Lieferanten mit der ID 2 an...
Titel: Re: Formularpfad
Beitrag von: weggli1 am August 10, 2010, 16:05:16
Geht das nun mit einem makro? da das unterformular vor dem hauptformular geladen wird, nimmt es ja immer nur bezug auf die erste eingabe. kann ich bei "nach änderung" von  Lieferant_ID im hauptformular ein makro ausführen, welche das unterformular (im speziellen die abfrage beim produktfeld) aktualisiert?
Titel: Re: Formularpfad
Beitrag von: Dorian am August 10, 2010, 20:21:16
Zitat von: DF6GL am August 09, 2010, 13:40:57
ersetz die Abfrage beim Unterformular durch den entspr. Tabellennamen und stell die UFO-Steuerelement-Eigenschaften "Verknüpfen von/nach" auf die Schlüsselfelder ein ("Produkt_ID", "Lieferant_ID")

Gehe bei Deinem Formular in die Entwurfsansicht und stelle als Datenquelle (UF) keine Abfrage sondern den entsprechenden Tabellennamen ein. Darunter kannst Du einstellen:
"verknüpfen von"  und "verknüpfen nach"

Dann sollte es klappen!

Gruß

Dorian


Als Anlage ein Beispiel

[Anhang gelöscht durch Administrator]
Titel: Re: Formularpfad
Beitrag von: weggli1 am August 11, 2010, 11:28:22
Dankeschön, aber mein Anliegen ist ein anderes:
Ich möchte nicht die Tabelle anzeigen, sondern wirklich die Abfrage (mit Berechnungsfeld und anderen Attributen). Es soll eine Bestellung eingegeben werden können und nicht einfach eine Produktliste angezeigt werden...
Titel: Re: Formularpfad
Beitrag von: Dorian am August 11, 2010, 11:44:38
Hallo!

Wenn Du Deine Tabellen richtig aufgebaut und verknüpft hast, dann kannst Du diese als Grundlage für Dein Formular und Unterformular ( verknüpft von / nach ) benutzen.
Dann kannst Du anschließend die entsprechenden Daten z.B. im Unterformular durch eine Abfrage filtern, so dass nur die benötigten Datensätze angezeigt werden.
Einzelne ungebundene Felder kannst Du im Formular einbauen die Berechnungen ausführen und Dir anzeigen.
Der Bericht (Ausdruck der Bestellung), den erstellst Du dann mit eine Abfrage.

Gruß

Dorian
Titel: Re: Formularpfad
Beitrag von: weggli1 am August 11, 2010, 12:13:00
Ok, klar. Jetzt hats funktioniert, vielen Dank. Habe aber auch noch eine andere Lösung gefunden und zwar beim Anzeigen des Unterformulars die SQL-Abfrage zu erneuern:

Private Sub Form_Current()
Dim sqlString As String
sqlString = "SELECT Produkt.Produkt_ID, Produkt.Produktname FROM Produkt WHERE (((Produkt.Lieferant_ID)=[Forms]![Nachbestellung_Formular]![Lieferant_ID]));"
Kombinationsfeld.RowSource = sqlString
End Sub

Vielen Dank aber für deine Hilfe, welche eine viel "sauberere" Lösung bietet, wie ich finde.
Titel: Re: Formularpfad
Beitrag von: Dorian am August 11, 2010, 12:18:32
Es gibt bei Access immer viele Wege... Nur wenn man von Anfang an versucht einen"sauberen" Weg zu gehen, vermeidet man später viel, viel Arbeit.

Also zuerst den Tabellenaufbau und die Veknüpfungen dazu.
Die kannst Du hier auch hochladen (mit Spieldaten) und dann helfen Dir die User, um den Aufbau zu optimieren.
Erst im 2 Schritt kommen die Formulare, dass geht dann viel einfacher ...
Und auch da bekommst Du Hilfe wenn die Tabellenstrukltur o.k. ist.

Viel Erfolg

Dorian