PDA

Vollständige Version anzeigen : Steuerelementinhalt berechnen


Stefan77
20.09.2001, 10:18
Hallo,

folgendes Problem:

Über VBA bestimme ich, dass im Textfeld "Monat1" eines Formular das Feld "01_09_01" meiner Abfrage angesprochen wird. Es wird immer das Feld aus der Abfrage mit dem aktuellen Monat und Jahr angesprochen. Über VBA funktioniert das auch ganz gut:

Sub Test()

Dim var As Variant

var = "01_" & Format(Date, "mm_yy")

Forms![MeinFormular]![Monat1].ControlSource = var

End Sub

Schreibe ich aber direkt bei Steuerelementinhalt die Formel:
"01_" & Format(Datum(), "mm_jj")
wird das Feld (01_09_01) nicht gefunden.
Wo liegt der Fehler oder funktioniert das zusammensetzen von Feldnamen generell nur über VBA?

Vielen Dank im voraus.

erwin
20.09.2001, 10:28
versuch mal (nicht getestet)

=eval("01_" & Format(Datum(), "mm_jj"))

so long erwin

Stefan77
20.09.2001, 10:56
Danke.

Hat leider nicht funktioniert. Eval kann man wahrscheinlich nur nummerische Werte übergeben.

Es muss doch eine andere Lösung geben, ohne dass ich vor jedem Formularaufruf den Inhalt der ca. 90 Felder mit einer VBA-Funktion übergeben muß.

Anne Berg
20.09.2001, 10:59
Im Formularentwurf gilt allgemein die deutsche Syntax. Versuchs mal mit 'Auswerten'.

Stefan77
20.09.2001, 11:10
Funktioniert trotzdem noch nicht.

Auswerten wird automatisch in Eval umgewandelt.

Stefan77
21.09.2001, 08:43
Ich verzweifle noch, hat denn keiner eine Idee?

Es muss doch möglich sein in einem Formular, das auf einer Kreuztabellenabfrage beruht z. B. automatisch immer nur die letzten 3 Monate anzuzeigen, wenn die Monate Spaltenüberschriften sind.

erwin
22.09.2001, 01:24
das mit Eval war nur so ein Gedanke - je nachdem was die Laufzeitumgeb. damit macht - hätte es funktionieren können. Aber wieso ist's denn überhaupt ein Problem ? Per Code klappts ja - du brauchst doch nur im Form_Open Ereignis (BeimÖffnen) den Code einzubauen:
....
var = "01_" & Format(Date, "mm_yy")
Me!Monat1.ControlSource = var

so long erwin...

Stefan77
22.09.2001, 10:45
Das eigentliche Problem habe ich erst festgestellt, nachdem ich die Unterformulare eingebunden habe. Wenn ich den Namen eines Unterformulars davor setze, dann funktioniert´s auch über VBA nicht mehr.

var = "=[MeinUnterForm].[Formular]![" & "01_" & Format(Date, "mm_yy") & "]"

Forms![MeinFormular]![Monat1].ControlSource = var


Im Steuerelement steht dann:
=[MeinUnterForm].[Formular]![01_09_01]

Genau das soll auch drinstehen, aber in der Formularansicht wird dann nur #Name? angezeigt. Wenn ich per Hand nur ein einziges Zeichen im Steuerelementinhalt lösche und wieder hinschreibe, z. B. die lezte Klammer, dann funktionierts.

erwin
22.09.2001, 14:29
ja, ja das besch... Umwandeln von Englisch in Deutsch an der Oberfläche:

Merksatz IN VBA immer Englisch also:

var = "=[MeinUnterForm].Form![" & "01_" & Format(Date, "mm_yy") & "]"

Me![Monat1].ControlSource = var

HTH erwin...

Stefan77
23.09.2001, 09:02
Danke, funktioniert.

Manchmal ist die Lösung so einfach, dass man einfach nicht drauf kommt, weil man sich das Ergebnis immer in Access im Steuerelementinhalt anschaut.