Neuigkeiten:

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

Mobiles Hauptmenü

openargs

Begonnen von Carl, September 15, 2017, 16:23:58

⏪ vorheriges - nächstes ⏩

Carl

Mal ne andere Frage

Ich habe ein frmHF, in dem u.a. 10 Textfelder mit variablen Inhalten sind. Alle Textfelder enthalten jeweils einen Makro, der bei Doppelklick ein frmPOPUP öffnet. Aus den Flächen gebe ich die ID mit. Das frmPOPUP ist für alle 10 Textfelder gleich, zeigt aber jeweils andere Inhalte an.

Jetzt möchte ich, das frmPOPUP als Überschrift den jeweiligen Inhalt des doppelgeklickten Textfeldes in frmHF erbt, damit der Anwender nicht vergisst, welches Feld er mit dem frmPOPUP bearbeitet. Dazu habe ich in frmPOPUP ein Textfeld [=openargs] eingefügt, das auch keinen Fehler verursacht.

Ich möchte mit Makro arbeiten.

Frage:
Was muss ich als Öffnungsargument im Makro-Fenster wo eintragen?

DF6GL

Hallo,


schreib einfach bei der Openform-Methode (Makro) bei Öffnungsargumente den Namen des Textfeldes hin, dessen Inhalt an das Popup übergeben werden soll.

Der Steuerelementinhalt des Textfeldes im Popup  muß so lauten:
=[Openargs]

evtl. heißt es auch
=[Öffnungsargumente] 

(Makros werden hier eher nicht behandelt)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo Carl,
Mit Macros kenne ich mich zwar nicht aus, ich vermute aber sowas wie
Formulare!frmHF!relevantesTextfeld
Da musst du aber für jedes Textfeld ein eigenes Macro erstellen, -vermute ich.

Per VBA könnte man des PopUp so öffnen
Public Sub OpenPopUp()
DoCmd.OpenForm FormName:="NameDesPopUp", WindowMode:=acDialog, OpenArgs:=Me.Controls(Screen.ActiveControl.Name).Value
End Sub

(zu faul zum Kommas zählen, und es kann sein, dass es eine Function
sein muss, nicht getestet)
Bei den Textfeldern schreibst du dann im Eigenschaftenblatt Ereignisse
"Bei Doppelklick"
=OpenPopUp()
Und
ZitatDer Steuerelementinhalt des Textfeldes im Popup  muß so lauten:
=[Openargs]
beachten.

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)

Carl

Ich komm hier irgendwie nicht weiter, vermutlich habe ich das falsche Fenster. (siehe Anhang)

Wo soll ich was rein schreiben?

Beaker s.a.

Hallo Carl,
Sorry, aber wie bereits gesagt kenne ich mich mit Macros nicht aus. Und
den meisten hier geht es ähnlich. Macros sind wirklich nicht sehr beliebt.
Da meine Lösung per VBA nicht vollständig war, hier eine Schritt-für-Schritt-Anleitung das umzusetzen.
Vorab aber noch etwas Grundsätzliches, da du ja wohl noch nicht mit dem VBA-Editor gearbeitet hast.
- öffne ihn, - Menu Datenbanktools/Visual Basic
- öffne das Menu Extras/Optionen
- dort setzt du das Häkchen bei "Variablendeklaration erforderlich"
- "OK"
(das ist zwar für das aktuelle Problem nicht relevant, aber eine grundsätzliche Einstellung)
jetzt geht's los
- öffne dein frmHF in der Entwurfsansicht und wechsele in den VBA-Editor
- Formular auswählen und Code anzeigen
- den schon gezeigten Code dort einfügen

Public Sub OpenPopUp()
    DoCmd.OpenForm FormName:="frmAngebotsnutzungMo", WindowMode:=acDialog, OpenArgs:=Me.Controls(Screen.ActiveControl.Name).Value
End Sub

- kompilieren und speichern
- zurück zur Entwurfsansicht
- die 10 Textfelder markieren
- das Eigenschaftenblatt einblenden (F4) -> Register "Ereignisse"
- in die Zeile "Bei Doppelklick" schreibst du nun
=OpenPopUp()
- speichern, dann sollte das hinterher in jedem Textfeld in der Eigenschaft stehen
jetzt der zuvor fehlende Teil
- dein PopUp in der Entwurfsansicht öffnen
- im Eigenschaftenfenster/Ereignisse in der Zeile "Beim Laden" den Button mit den ... klicken, - landest du wieder im Editor und der Prozedurrumpf ist schon angelegt.
da hinein (leere Zeile) schreibst du
Me!Caption = Me.OpenArgs
  - kompilieren + speichern
Wenn ich jetzt keinen Fehler eingebaut habe und du alles richtig umsetzt sollte jetzt bei einem Doppelklick auf eines der Textfelder (natürlich jetzt in der Formularansicht) sich dein PopUp öffnen und den Wert im Textfeld als Formularnamen anzeigen.
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)

Carl

okay, ich setzt mich da dran :-)

Carl

Vielen Dank für die gute Erklärung. Aber das funktionierte nach vielen Versuchen nicht und ist auch zu aufwändig.

Mir wäre schon sehr geholfen, wenn mir jemand sagt, wo man in der oben geposteten Maske das Öffnungsargument des Textfeldes eingibt, das langt wahrscheinlich schon hin. :-)

DF6GL

Hallo,

offensichtlich gibt es den Parameter "Openargs" (Öffnungselemente) nicht (mehr) im ÖffnenFormular-Makro.

Versuch, nach dem Öffnen des Forms ein "SetzenWert"-Makro einzubauen.

Trotzdem ist dringend angeraten, sofern die DB vernünftig arbeiten soll, sich mit ein bisschen VBA zu beschäftigen.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo Carl,
Zitatdas funktionierte nach vielen Versuchen nicht
Ein Standardtext, der aber für beide Seiten nicht hilfreich ist; - Fehlermeldungen, falsche Werte?
Zitatist auch zu aufwändig
Na ja, Sonderwünsche verlangen eben ein wenig Aufwand.

Bei welchem Schritt scheiterst du denn?

Vielleicht hilft ja schon folgende Ergänzung. Das hatte ich vergessen.
Zitat
Public Sub OpenPopUp()
    Dim strOA as string

    strOA = Nz(Me.Controls(Screen.ActiveControl.Name).Value, "leeres Feld")

    DoCmd.OpenForm FormName:="frmAngebotsnutzungMo", WindowMode:=acDialog, OpenArgs:=strOA
End Sub
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)

Carl

Ich kriegs nicht hin. Er findet die Funktion nicht. Das blöde ist, dass ich auch nicht verstehen kann, was falsch ist. Ich habe einfach zu wenig Erfahrung und muss weiter lernen.

Wenn es mir jemand zeigen würde, könnte ich es am funktionierenden Beispiel besser verstehen und auch in anderen Zusammenhängen erfolgreich "nach bauen".

Carl

DF6GL

Hallo,

dann lad halt mal eine passende Beispiel-DB hier hoch...

mit

ZitatIch kriegs nicht hin. Er findet die Funktion nicht.

ergibt sich (für uns) auch keine neue Erkenntnis....
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Carl

OK, also

Einsatzplan_HF, Text53
hier soll bei Doppelklick das Formular frmAngebotsnutzungMo geöffnet werden.

Im Formular frmAngebotsnutzungMo soll das Feld Text57 den Inhalt von Text53 anzeigen.

Den Code von Beaker habe ich schon eingefügt.

Lachtaube

Die Tabellen mit den sich wiederholenden Spalten (ich meine z. Bsp. die nebeneinander aufgelisteten Tage oder die Berufe in der Mitarbeitertabelle) sollten dringend in die Normalisierundswerkstatt, bevor an Formularen, sofern sie danach noch verwendbar sind, weitergebastelt wird.
Grüße von der (⌒▽⌒)

MzKlMu

#13
Hallo,
um in das gleiche Horn zu blasen, so gut wie alle Ja/Nein Felder zeugen von einem falschen Datenmodell.
Weil es so schön passt, hier noch ein Link:
http://allenbrowne.com/casu-23.html
Gruß Klaus

DF6GL

#14
Hallo,

nur zur Demonstration der Lösung (mit OpenPopUp()  )  des Ausgangsproblems:

Aufruf der Funktion (nicht Sub) in einer passenden Ereignis-Eigenschaft:

=OpenPopUp([screen].[activecontrol])

Funktion in einem Standard-Modul(!) :

Public Function OpenPopUp(ctl As Control)
    DoCmd.OpenForm "frmAngebotsnutzungMo", , , , , acDialog, ctl.Value
End Function



Form_Load-Ereignisprozedur:

Private Sub Form_Load()
Me!Text57 = Me.OpenArgs
End Sub



Ich schlage in dieselbe Kerbe und empfehle ebenfalls dringend, die Normalisierungsregeln anzuwenden UND eine vernünftige/aussagekräftige Benamsung zu verwenden.




Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access