Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Wert aus Ufo in Wertetabelle speichern

Begonnen von MaxP, November 29, 2024, 10:09:18

⏪ vorheriges - nächstes ⏩

MaxP

Hallo zusammen,

ich versuche krampfhaft, die ID eines fokussierten Datensatzes eines Auswahl-Ufos
in einem 2. Ufo, welche die Tabelle Werte beinhaltet zu speichern.

Der Versuch mit den Ereignissen Beim Anzeigen, Vor oder Nach Aktualisierung,
Bei geändert im Auswahl-Ufo schlug fehl. Dort wollte ich den Code setzen:

    Forms!HFO!Werte-UFO.Form!ID = Me![ID_akt]
    Me!Werte_UFO.Form.Requery

Setzte ich den Code auf eine Befehlsschaltfläche, funktioniert er.

Ich habe mich auch schon gefragt, ob es evtl. mit einem Listenfeld nicht besser geht?
Außerdem ändert sich u.U.der Fokus im Ufo, wenn andere Formulare oder Befehle aufgerufen werden.

Was wäre die richtige Schreibweise?
- Me!Werte_UFO.Form.Requery oder
- Me!Werte_UFO.Requery

Gruß
Max
Win 10 pro 64 bit, Access 2003

Knobbi38

Hallo Max,

zunächst mal etwas grundsätzliches: in einem UFO wird nicht die ID eines DS gespeichert!

Was möchtest du eigentlich erreichen? Sollen die zwei UFOs über die ID synchronisiert werden oder geht es um eine reine Auswahl eines bestimmten DS?

Vielleicht beschreibst du mal mit anderen Worten, was genau du erreichen möchtest?

Gruß
Knobbi38

MaxP

#2
Zitat von: knobbi38 am November 29, 2024, 11:47:58Was möchtest du eigentlich erreichen? Sollen die zwei UFOs über die ID synchronisiert werden oder geht es um eine reine Auswahl eines bestimmten DS?
Letzteres!

In dem Auswahl-Ufo sind Projekte gelistet, die durch die Speicherung ihrer ID in der Werte-Tab (2. Ufo) auch für andere Formualre als Vorgabe bzw. Filter gelten sollen.

Gruß
Max
Win 10 pro 64 bit, Access 2003

Beaker s.a.

Hallo Max,
Für solche Aufgaben
Zitatauch für andere Formualre als Vorgabe bzw. Filter gelten sollen.
verwende ich öffentl. Properties in einem allgem. Modul. Die können von
überall beschrieben und gelesen werden.
Private m_CurrentProjektID

Public Property Let CurrentProjektID(NewID as Long)
    m_CurrentProjektID = NewID
End Property

Public Property Get CurrentProjektID() As Long
    CurrentProjektID = m_CurrentProjektID
End Property[/quote]

schreiben
CurrentProjektID = Me.ProjektID
lesen
Irgendwas = CurrentProkektID
'in Abfragen z.B.
"...WHERE ProjektID = " & CurrentProkektID

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

@Ulrich
Zitatzunächst mal etwas grundsätzliches: in einem UFO wird nicht die ID eines DS gespeichert!
Wie meinst du das?
In meinen UFos gibt es die ID der UFo-Tabelle und den FK zum HFo.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MaxP

Hallo Ekkehard,

wenn bei Deiner Variante die ID nicht in einer Tab gespeichert wird,
ist diese doch nach Beendigug von AC futsch, oder?
Win 10 pro 64 bit, Access 2003

Beaker s.a.

???
Wo kommt die ID denn her? Die muss doch in der Datensatzherkunft
des UFo (Tabelle) vorhanden sein.
Die Properties dienen doch nur dazu die ID zwischen zu speichern,
so dass du während der Laufzeit darauf zugreifen kannst, und dich
nicht darum kümmern musst in welchem Form die angezeigt wird, -
Vermeidung von Formularbezügen.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Knobbi38

Zitat von: Beaker s.a. am November 29, 2024, 14:40:37Wie meinst du das?
Die ID ist ja in der Datenherkunft der Auswahl schon vorhanden und braucht deshalb in einem anderen UFO nocht mehr gespeichert werden, so wie es MAX ursprünglich beschrieben hat. Im Nachhinein will er gar nicht speichern, sondern nur dieses Wert nur zur Suche verwenden.  Der Titel des Themas ist deshalb etwas missverständlich.

Knobbi38

Zitat von: MaxP am November 29, 2024, 13:34:00die durch die Speicherung ihrer ID in der Werte-Tab (2. Ufo) auch für andere Formualre als Vorgabe bzw. Filter gelten sollen.
Dafür muß die ausgewählte ID nicht in einer Tabelle gespeichert werden.

Für so etwas würde ich auch kein UFO wählen, sondern ein nicht modales POPUP-Formular. Dieses Formular kann geöffnet bleiben und bei Bedarf versteckt oder sichtbar gemacht werden. Dann wird dieses POPUP-Formular mit einer Public Property versehen, über die man die gerade selektierte ID abrufen kann, ohne die Interna des Formulars selber kennen zu müssen.

Alternativ zur Public Property, wie in #3 beschrieben, könnte man auch einfach eine Tempvar verwenden. Das erspart ein extra Modul und den Zugriff auf ein Formular per Formularreferenz; zudem kann diese Variante überall eingesetzt werden, also auch direkt in Abfragen usw.

Gruß
Knobbi38


Beaker s.a.

Zitateine Tempvar verwenden.
Damit kann ich mich irgendwie nicht anfreunden.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Knobbi38

@Ekkehard

Tempvars sind ausgesprochen praktisch, weil sie auch nach einem Programmfehler/-abbruch ihren Wert behalten.

Wenn man sie in Abfragen verwendet, reicht es, den Inhalt zu ändern und anschließend einfach ein Requery für das Steuerelement, z.B. Comboxbox, Listbox usw. aufzurufen. Auch für Reports sind sie bestens geeignet und Formularreferenzen braucht man auch nicht mehr.

Im MOF hatte ich mal einen Beitrag darüber verfasst, welche Vor- bzw. Nachteile die verschiedenen Adressierungsmöglichkeiten für den Zugriff auf die Tempvars haben und wie man sich da etwas vereinfachen kann. Leider gibt es das MOF so nicht mehr.

VG
Ulrich


MaxP

Vielen Dank für die Tipps.

Leider kenne ich mich weder mit Public Property noch mit Tempvars aus.
(Wobei sich beides interessant anhört.)
Ich muss gestehen, dass ich das Beispiel von Ekkehard nicht ganz nachvollziehen konnte.

Da ich ein Freund der einfachen Programmierung bin, frage ich mal,
was von beiden einfacher ist?

Gruß
Max
Win 10 pro 64 bit, Access 2003

Knobbi38

Hallo Max,

das sind Grundlagen zu Access/VBA, welche man eigentlich kennen sollte. Im Zweifelsfall schaut man in die Dokumentation oder liest das in einem Fachbuch nach. Sicherlich gibt es auch gute Artikel zu diesen Themen im Internet.
https://www.tksoft-online.de/ms-access/bsp-db-s/bsp-downloads-sonstiges/61-arbeiten-mit-tempvars.html

Beides ist relativ einfach umsetzbar.

Gruß
Ulrich

MaxP

Hallo Ulrich,

Wenn man nicht weiß, dass es etwas Neues gibt, ist man auch nicht in der Lage, es zu recherieren.

Egal, die Tempvars kommen für mich leider nicht in Frage, da diese wohl erst ab A07 zur Anwendung kommen können.

Gruß
Max
Win 10 pro 64 bit, Access 2003

Knobbi38

Hallo Max,


ja sorry, daß mit deiner Version hatte ich glatt übersehen. Vielleicht solltest du mal über ein Upgrade nachdenken, denn da fehlen auch noch andere Dinge, wie das neue DB Format, Layouts usw. ?  ;)

Dann solltest du das mit dem Beispiel von Ekkehard aus #3 umsetzen.

Übrigens schau mal nach, wenn du in der VBE in einem Modul den Menüpunkt "Einfügen -> Prozedur" aufrufst  (gibt es schon ewig). Wenn du 2003 hast, dann gibt es sogar noch die lokale Hilfe. Suche dort mal nach Property oder markiere das Wort Property und dann mit {F1} weiter. 

Gruß
Ulrich

Siehe auch:
https://www.akademie.de/de/wissen/vba-prozeduren-parameter-optimieren/properties-statt-funktionen
https://learn.microsoft.com/de-de/office/vba/language/concepts/getting-started/writing-a-property-procedure