collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 43
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13702
  • stats Beiträge insgesamt: 62196
  • stats Themen insgesamt: 8474
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: openargs  (Gelesen 469 mal)

Offline Carl

  • Access-User
  • *
  • Beiträge: 68
openargs
« am: September 15, 2017, 16:23:58 »
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?
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 22990
Re: openargs
« Antwort #1 am: September 15, 2017, 16:35:48 »
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)

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1493
Re: openargs
« Antwort #2 am: September 15, 2017, 16:43:48 »
Hallo Carl,
Mit Macros kenne ich mich zwar nicht aus, ich vermute aber sowas wie
Formulare!frmHF!relevantesTextfeldDa 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
Zitat
Der Steuerelementinhalt des Textfeldes im Popup  muß so lauten:
=[Openargs]
beachten.

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Carl

  • Access-User
  • *
  • Beiträge: 68
Re: openargs
« Antwort #3 am: September 16, 2017, 11:43:52 »
Ich komm hier irgendwie nicht weiter, vermutlich habe ich das falsche Fenster. (siehe Anhang)

Wo soll ich was rein schreiben?
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1493
Re: openargs
« Antwort #4 am: September 16, 2017, 13:42:21 »
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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Carl

  • Access-User
  • *
  • Beiträge: 68
Re: openargs
« Antwort #5 am: September 16, 2017, 19:17:53 »
okay, ich setzt mich da dran :-)
 

Offline Carl

  • Access-User
  • *
  • Beiträge: 68
Re: openargs
« Antwort #6 am: September 18, 2017, 18:32:24 »
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. :-)
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 22990
Re: openargs
« Antwort #7 am: September 19, 2017, 08:03:07 »
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.

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1493
Re: openargs
« Antwort #8 am: September 19, 2017, 15:42:26 »
Hallo Carl,
Zitat
das funktionierte nach vielen Versuchen nicht
Ein Standardtext, der aber für beide Seiten nicht hilfreich ist; - Fehlermeldungen, falsche Werte?
Zitat
ist 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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Carl

  • Access-User
  • *
  • Beiträge: 68
Re: openargs
« Antwort #9 am: September 21, 2017, 17:48:46 »
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
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 22990
Re: openargs
« Antwort #10 am: September 21, 2017, 19:00:47 »
Hallo,

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

mit

Zitat
Ich kriegs nicht hin. Er findet die Funktion nicht.

ergibt sich (für uns) auch keine neue Erkenntnis....

Offline Carl

  • Access-User
  • *
  • Beiträge: 68
Re: openargs
« Antwort #11 am: September 21, 2017, 19:48:34 »
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.
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 728
Re: openargs
« Antwort #12 am: September 21, 2017, 21:04:38 »
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 (⌒▽⌒)
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6754
Re: openargs
« Antwort #13 am: September 22, 2017, 09:33:29 »
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
« Letzte Änderung: September 22, 2017, 09:53:01 von MzKlMu »
Gruß
Klaus
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 22990
Re: openargs
« Antwort #14 am: September 22, 2017, 10:11:54 »
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.