PDA

Vollständige Version anzeigen : Formular andere Abfrage VBA


breschi39
02.06.2012, 06:58
Guten Tag allerseits, kann mir jemand bitte helfen?
In einem Formular habe ich diesen Code der nicht funktioniert
If ([TagVP]![System1]) = 7 Then
Section(1).BackColor = 255
End If

TagVP ist das Feld, System1 ist die Abfrage.
(Das Formular hat die Daten aber aus einer anderen Abfrage)
In der Abfrage System1 habe ich immer nur einen Datensatz.
Ich kapiere nicht wie per VBA das Feld einer anderen Abfrage abgefragt werden kann. Mit dem obigen Code findet er das Feld nicht.

Storch
02.06.2012, 07:21
If ([TagVP]![System1]) = 7 Then
Section(1).BackColor = 255
End If

Ich fürchte, DU bist da ein wenig auf Irrwegen. Nach Deinem Weg(rote Markierung) wäre die Abfrage ein Element von Feld: [TagVP]. Felder nehmen aber Werte auf und diese müssen irgendwo herkommen. Aus Tabellen und Abfragen. Ergo müsste zuerst die Datenherkunft und dann erst der Wert(Feld) gelistet werden. VBA und andere objektorientierte Programmiersprachen händeln ihre Objekt in Auflistungen. Siehe dazu die OH Suchwort 'Auflistung'.

Da die gewünschten Daten aus einer anderen Abfrage kommen, sind diese nicht Bestandteil der Datenherkunft Deines Forms. Um Daten aus anderen Quellen zu holen, gibt es u.a. die Domänenaggregatfunktionen.

In Deinem Fall wäre 'DLookup' gut geeignet. Siehe OH: 'Aggregatfunktionen für Domänen'
Beispiel:
Me!TagVP = DLookup("Feldname","System1","Where ID = 1")
Feldnamen und Whereklausel musst Du Deinen Gegebenheiten anpassen.

hcscherzer
02.06.2012, 08:51
TagVP ist das Feld, System1 ist die Abfrage.Dann so herum:If DLookup("TagVP", "System1") = 7 Then
Section(1).BackColor = 255
End If

breschi39
02.06.2012, 09:10
Der Code von "hcscherzer":
If DLookup("TagVP", "System1") = 7 Then
funktioniert perfekt. Vielen Dank

(Die Variante von "Storch" ging nicht [Syntaxfehler bei Where ID = 1). Aber vielen Dank für den Hinweis betr DLookup)

Thomas Möller
02.06.2012, 09:30
Hallo!

(Die Variante von "Storch" ging nicht [Syntaxfehler bei Where ID = 1).

Da hat sich nur überflüssigerweise das Wörtchen "WHERE" eingeschlichen.
Schau Dir bitte für zukünftige Verwendeung den Befehl DLOOKUP in der OH näher an.

CU