PDA

Vollständige Version anzeigen : DoCmd.OpenForm mit >1 Kriterien


gast
29.01.2001, 11:35
Hallo, das ist sicher eine ganz einfache Frage für das Forum:

Wie schaffe ich es mehr als ein Kriterium für DoCmd.Open Form anzuwenden. Der Versuch zwei LinkCriterias zu definieren und im Statement mit And zu verknüpfen misslang, genauso wie der Versuch das LinkCriteria selber zu verschachteln. Formular1 hat aggregierte Kosten pro Kostenart und Monat. Aus diesem heraus sollen aus jedem Datensatz die Buchungssätze mit gleichem Monat und gleicher Kostenart in aus Formular2 geladen werden. (alle Formulare basieren auf Abfragen)

Danke! JP

OlliU
29.01.2001, 11:52
Hallo!

Du hast wahrscheinlich 2 Tabellen, die 1 zu n verknüpft sind.

Wenn alle Formulare - wie Du schreibst - auf Abfragen basieren, kannst Du m.E. auch die Abfrage modifizieren.

Beispiel:
In Formular 1 stehen Deine Hauptdatensätze.
In Formular 2 die Detaildatensätze.
zu der Abfrage in Formular 2 änderst Du die Kriterien für den Fremdschlüssel
(da wo die n-Verbindung besteht)

Kriterium "=Forms!DeinFormular1!FeldnameDesSchlüssels"
(ohne Anführungszeichen)

Dann brauchst Du aus dem Formular1 nur noch das Formular2 aufzurufen und es zeigt alle korrespondierenden Detaildatensätze aus 1 an.

Gruss

OlliU

gast
29.01.2001, 13:17
Hi,
leider kallpt das nicht so,
weil beide Forms auf den selben Datentop zugreifen:
Form1: Jahr_Monat, Kostenart, Summe(Wert)
Form2: Jahr_Monat,Kostenart,Kostentreiber,Summe(Wert) (also quasi ein Drilldown)

wohl sind Jahr_Monat, Kostenarten... als Primärindizes definiert.
Ich hoffe immer noch, dass man mit ner VBA-Syntax (DoCmd.OpenForm??) irgendwie geht:
also in der Art: öffne Form2
mit [Jahr_Monat]= Me![Jahr_Monat] AND
[Kostenart] = Me![Kostenart]
aber irgendwie bin ich zu blöde dazu ;-(

OlliU
30.01.2001, 16:46
Hallo,

... das muesste doch klappen. Du setzt die in der ersten Mail genannten Bedingungen in der Abfrage auf den Index Deines Datentopfes.
Dem Formular ist es egal, ob die Daten, die selektiert werden, in der 1 oder der n-Tabelle stehen.

In Form 2 greifst Du in der Abfrage also auf die Haupttabelle zu und setzt als Kriterium in der Abfrage die Bedingung auf Dein Indexfeld, das in Form1 angezeigt wird.

=forms![Formular1]![DeinIndexfeld]

Die Abfrage von Form2 enthält dann noch die zusätzlichen Info's = Drilldown.

Gruß

OlliU