Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Beispieldatei Aufgaben verstehen (Makro)

Begonnen von DiBa, April 09, 2011, 13:13:13

⏪ vorheriges - nächstes ⏩

DiBa

Hi,

ich bin recht frisch dabei, habe ein Access- Buch gelesen aber bin noch ganz unerfahren.
Zu meiner Frage:

Ich habe die Beispildatei "Aufgaben" aus Sccess 2007 mal heruntergeladen. Dort gibt es ein Formular mit einer Tabelle. Klicke ich auf eine Aufgabe in der Tabelle, wir ein Unterformular geöffnet, das nur diesen einen Eintrag enthält, den ich angeklickt habe.
Das ganze wird über ein Makro gesteuert, das ich nicht verstehe:

   Bedingung         Aktion                              Argumente
1                                 ÖffnenFormular              Aufgabendetails; Formular; ; ="[ID]=" & Nz([ID];0); ; Dialog
2   Nicht IstNull([ID])   FestlegenTempVar      CurrentID; [ID]
3   IstNull([ID])         FestlegenTempVar      CurrentID; Nz(DomMax("[ID]";[Formular].[Datensatzquelle]);0)
4                            AktualisierenDaten   
5                            SuchenNachDatensatz  ; ; Erster; ="[ID]=" & [TempVar]![CurrentID]
6                            EntfernenTempVar      CurrentID

Ich versuche mal wiederzugeben, was ich gefunden habe:
Zeile 1 öffnet ein Formular Namens "Aufgabendetails" als Formular mit der Bedingung ="[ID]=" & Nz([ID];0).  Und da fängt es an. Mit google habe ich herausgefunden das Nz-Funktionen dafür sorgen, dass der Wert "null" (in diesem Fall der Vorialbel ID) nicht zurückgegeben wird, sondern der wert "0" - wenn ich das richtig verstanden habe.

Zeile 2: Nur denn wenn "ID" nicht "null" ist wird eine temporäre Variable Namens "CurrentID" geschaffen die den Wert von "ID" zugewiesen bekommt.

Zeile 3: wenn jedoch der Fall eintritt, das "ID"  = "null" ist, dann wirde ebenfalls eine Variable erstellt die den größten Wert der Aufrufenden Tabelle ([Formular].[Datensatzquelle]?? ) der Spalte "ID" enthält. Dieser Wert kann nicht "null" sein, sonst wird er in "0" geändert (Nz- Funktion)

Zeile4: aktualisiert die Daten

Zeile5: sucht im Formular nach Datensätzen bei denen die Spalte ID dem Wert von [TempVar]![CurrentID] entspricht. Habe ich den 5. Datensatz angeklickt würde also =[ID]=5 als Bedingung gewählt ?!?

Zeile6: Die Variable wird gelöscht

Ist das so kompliziert oder wurde das kompliziert gemacht? In Zeile 1 wird doch schon eine Bedingung für das Formular übergeben. Warum wird das in Zeile 5 noch mal gemacht?  ???

Danke für  Eure Antworten.
Dirk

Hondo

Hallo,
ich würde erst gar nicht mit Makros arbeiten, sondern gleich mit VBA-Code.
Alle Funktionen wie nz() oder DomMaxfindest du in der Hilfe-Datei erklärt. nz markieren und F1 klicken.

Ganz generell können Variablen oder Ausdrücke verschiedene Werte annehmen. Eine Zeichenkette kann eine Bestimmte Länge an Zeichen haben oder leer sein, also "". Ist der Wert Null (ausgeschrieben ist nicht das selbe wie die Zahl 0) ist der Inhalt nicht definiert. Zahlen können demnach auch 0, eine bestimmte Zahl, oder Null sein.

Benutze also die Access-Hilfe zuerst, die ist i.d.R. sehr ausführlich erklärt mit Beispielen.

Andreas