collapse

* Benutzer Info

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

* Wer ist Online

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

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13797
  • stats Beiträge insgesamt: 63470
  • stats Themen insgesamt: 8600
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Laufzeitfehler 2447 beim Doppelklick  (Gelesen 612 mal)

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #15 am: September 21, 2017, 19:43:01 »
Hi,
dachte ich ja auch, aber es geht so einfach nicht :-(. Wenn ich den kompletten String aus dem Steuerelementinhalt des Bildes nehme =DomWert("BilderPfad";"tblBildPfad") & [BilderOrdner] & "\" & [Verzeichnisname] & "\" & [BildDateiName] und im VBA angepasst eingebe DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.BilderPfad & Me.BilderOrdner & "\" & Me.Verzeichnisname & "\" & Me.BildDateiName, kompiliere, dann meckert er weil er BildPfad nicht findet.
Dann habe ich mal "gefummelt". ich habe den DomWert kopiert und leicht angepasst im Detailbereich sichtbar eingefügt. Dann habe ich zumindest mal gesehen, dass alle Pfade passen. Sichtbar auf nein umgestellt, VBA angepasst
 DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.BilderPfad & "\" & Me.BildDateiNameSiehe da, er öffnet ein Bild!
Aber wenn ich dann das nächste Bild doppelklicke, dann macht er wieder das selbe Bild auf, verwendet als wieder den gleichen Pfad wie vom vorherigen Bild. Markiere ich über den Datensatzmarkierer einen anderen Datensatz, dann macht er ein neues Bild auf. Was ist das jetzt für eine Eigenschaft?? Ich will natürlich nicht ständig den Datensatz markieren, damit er das andere Bild öffnet.

Gruß und Danke für die Unterstützung
Andreas
Grüße und Dank im voraus
Andreas
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #16 am: September 21, 2017, 19:45:46 »
Hi Franz,
hab ich ja jetzt. Aus meiner Sicht mit "getrickse" und noch mit einer Einschränkung die ich beschrieben habe. Da weiss ich nun wieder nicht, ob ich da in den Eigenschaften was einstellen muss oder einen Refresh setzen muss etc. :(.

Gruß Andreas
Grüße und Dank im voraus
Andreas
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23087
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #17 am: September 22, 2017, 08:58:35 »
Hallo,

also, ich versteh Deine Ausführungen nicht richtig...

Zitat
hab ich ja jetzt

WAS hast Du jetzt?

Zitat
Da weiss ich nun wieder nicht, ob ich da in den Eigenschaften was einstellen muss oder einen Refresh setzen muss etc.


Vermutlich denkst Du zu kompliziert und ich blicke bei deiner Formularkonstellation nicht durch.

WO steht  das und funktioniert das auch?:
Zitat
=DomWert("BilderPfad";"tblBildPfad") & [BilderOrdner] & "\" & [Verzeichnisname] & "\" & [BildDateiName]

Wobei Folgendes etwas anderes ist :

Zitat
DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.BilderPfad & Me.BilderOrdner & "\" & Me.Verzeichnisname & "\" & Me.BildDateiName

Hier wird der Bild-Pfaddateiname aus 4 Form-Textfeldern zusammengesetzt,  im ersten Fall wird

der "BilderPfad"  mit DomWert aus der Tabelle "tblBilderpfad" aus irgendeinem Datensatz ausgelesen (Kriterium fehlt bei DomWert (Dlookup))

Du musst Dir endlich im Klaren werden, WOHER die Werte kommen sollen/müssen.

Zudem solltest du das schon öfters vorgeschlagene Mittel mit Debug.Print umsetzen, damit man den realen Inhalt der zusammengesetzten Strings sehen kann.

Im VBA-Editor das Direktfenster öffnen.

1) Im Code von Form-Ereignisprozedur "Beim Anzeigen" eingeben:

Debug.Print DomWert("BilderPfad";"tblBildPfad") & [BilderOrdner] & "\" & [Verzeichnisname] & "\" & [BildDateiName]
2) Vor der Zeile  Docmd.Openform "frmDeckblatt"   eingeben:

Debug.Print Me.BilderPfad & Me.BilderOrdner & "\" & Me.Verzeichnisname & "\" & Me.BildDateiName
und

Debug.Print Me.BilderPfad & "\" & Me.BildDateiName

3)  einen Haltepunkt an die Stelle
Private Sub imgDeckblattThumb_DblClick(Cancel As Integer)
setzen.   Dazu auf den Balken links des Schreibbereiches an die Stelle neben der Codezeile klicken. Es erscheint dort ein dicker brauner Punkt.


Zitat
Aber wenn ich dann das nächste Bild doppelklicke

WO befindet sich das Bild-Steuerelement?  Wovon gehst Du aus, dass beim Doppelklick auf das (nächste?)Bild sich der Datensatz ändern sollte? Das  passiert nur, wenn das Bild-St.-El.  sich im Endlosform im Detailbereich befindet und an ein Tabellenfeld gebunden wäre.

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #18 am: September 22, 2017, 12:46:23 »
Hallo Franz,
Ich verstehe ja deine Kritik und es fällt mir ja auch schwer das alles so "geordnet" zu erklären, damit ihr was damit anfangen könnt.
WO steht  das und funktioniert das auch?:
Zitat
=DomWert("BilderPfad";"tblBildPfad") & [BilderOrdner] & "\" & [Verzeichnisname] & "\" & [BildDateiName]

Dieser Eintrag steht im Such Formular frmQuartettSuche in den Eigenschaften des Bildes im Steuerelementinhalt. Es funktioniert in soweit, dass beim Aufruf des Formulares die Bilder dadurch direkt angezeigt werden --> bild1. Ich poste heute mal das eine oder andere Bild zwecks Visualisierung.

Wobei Folgendes etwas anderes ist :
Zitat
DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.BilderPfad & Me.BilderOrdner & "\" & Me.Verzeichnisname & "\" & Me.BildDateiName
Hier wird der Bild-Pfaddateiname aus 4 Form-Textfeldern zusammengesetzt,  im ersten Fall wird
der "BilderPfad"  mit DomWert aus der Tabelle "tblBilderpfad" aus irgendeinem Datensatz ausgelesen (Kriterium fehlt bei DomWert (Dlookup)). Du musst Dir endlich im Klaren werden, WOHER die Werte kommen sollen/müssen.
Will ich ja auch, aber es ist wohl zu "kompliziert". (Kriterium fehlt bei DomWert (Dlookup)) was genau meinst du damit? DLookup anstatt DomWert? Sorry wegen meiner Begriffsstutzigkeit :(.

Zudem solltest du das schon öfters vorgeschlagene Mittel mit Debug.Print umsetzen, damit man den realen Inhalt der zusammengesetzten Strings sehen kann.
Im VBA-Editor das Direktfenster öffnen.
1) Im Code von Form-Ereignisprozedur "Beim Anzeigen" eingeben:
Debug.Print DomWert("BilderPfad";"tblBildPfad") & [BilderOrdner] & "\" & [Verzeichnisname] & "\" & [BildDateiName]
Private Sub Form_Current()
    Debug.Print "BilderPfad"; "tblBildPfad" & [BilderOrdner] & "\" & [Verzeichnisname] & "\" & [BildDateiName]
End Sub
DomWert musste ich weglassen, da er sagt dass die Variable nicht definiert sei. Weiß ich nicht wie ich das machen muss.

2) Vor der Zeile  Docmd.Openform "frmDeckblatt"   eingeben:
Debug.Print Me.BilderPfad & Me.BilderOrdner & "\" & Me.Verzeichnisname & "\" & Me.BildDateiNameund
Debug.Print Me.BilderPfad & "\" & Me.BildDateiName3)  einen Haltepunkt an die Stelle
Private Sub imgDeckblattThumb_DblClick(Cancel As Integer)
setzen.   Dazu auf den Balken links des Schreibbereiches an die Stelle neben der Codezeile klicken. Es erscheint dort ein dicker brauner Punkt.
Habe ich gemacht
Private Sub imgDeckblattThumb_DblClick(Cancel As Integer)
    Debug.Print Me.Parent.BilderPfad & Me.BilderOrdner & "\" & Me.Verzeichnisname & "\" & Me.BildDateiName
    Debug.Print Me.Parent.BilderPfad & "\" & Me.BildDateiName
    DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.Parent.BilderPfad & "\" & Me.BilderOrdner & "\" & Me.Verzeichnisname & "\" & Me.BildDateiName
End Sub

Ich kann das ausführen, aber im Direktbereich kommt nichts, aber im Lokal. Er meckert wegen dem DoCmd, da stört er sich an dem Ausdruck Parent. Laufzeitfehler 2452. Der von ihnen eingegeben Ausdruck enthält einen ungültigen Verweis auf die Hauptobjekt-Eigenschaft.

Und jetzt komme ich noch mal auf das "getrickse" zu sprechen.
Ich füge im Detailbereich des Endlosformular frmQuartettSuche das Textfeld hinzu =DomWert("BilderPfad";"tblBildPfad")
Die Ereignisprozedur beim Doppelklicken des Bildes sieht sieht so aus:
    DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.BilderPfad & "\" & Me.BilderOrdner & "\" & Me.Verzeichnisname & "\" & Me.BildDateiNameWenn ich jetzt doppelklicke, dann geht es bis auf das erwähnte Thema, dass immer das gleiche Bild kommt :(. siehe bild2.
Ja, ich verstehe jetzt aber immer noch nicht, wieso es da mit dem Bildpfad klappt.

Zitat
Aber wenn ich dann das nächste Bild doppelklicke
WO befindet sich das Bild-Steuerelement?  Wovon gehst Du aus, dass beim Doppelklick auf das (nächste?)Bild sich der Datensatz ändern sollte? Das  passiert nur, wenn das Bild-St.-El.  sich im Endlosform im Detailbereich befindet und an ein Tabellenfeld gebunden wäre.
Wie oben erwähnt, befindet sich das Bild-Steuerelement im Endlosformular im Detailbereich. Wie in bild1 zu sehen ist, gehe ich wirklich davon aus, dass wenn ich ein anderes Bild doppelklicke, dass dann auch ein anderer Datensatz den "Focus" bekommt und sich somit auch das Bild öffnet und nicht das zuvor aufgerufene, oder denke ich da auch falsch? Muss ich das via VBA deklarieren?

Gruß Andreas
« Letzte Änderung: September 22, 2017, 13:20:27 von derilzemer »
Grüße und Dank im voraus
Andreas
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 850
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #19 am: September 22, 2017, 12:53:22 »
Ich kann auch nur raten, vermute aber, dass der Ausdruck im Formular in einem Textfeld steht. Das Problem dabei ist, dass für den Anwender keine Möglichkeit besteht, festzustellen, bzw. eine Reihenfolge festgelegt werden kann, wann der Inhalt des Ausdrucks ausgewertet wurde bzw. wird. Man kann allerhöchstens im Code-Ablauf ein Recalc auf das Formular absetzen, welches das Textfeld mit dem Ausdruck beherbergt, um den ausgewerteten Wert sicher zu ermitteln.
Grüße von der (⌒▽⌒)
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #20 am: September 22, 2017, 13:18:19 »
Hallo,
.....Man kann allerhöchstens im Code-Ablauf ein Recalc auf das Formular absetzen, welches das Textfeld mit dem Ausdruck beherbergt, um den ausgewerteten Wert sicher zu ermitteln.
mit einem Recalc im Code-Ablauf meinst du, den im Private Sub Form_Current() oder in der Doppelklickaktion Private Sub imgDeckblattThumb_DblClick(Cancel As Integer) unterbringen?

Gruß Andreas
Grüße und Dank im voraus
Andreas
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23087
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #21 am: September 22, 2017, 13:28:32 »
Hallo,

Zitat
Domwert weglassen

Ok, da hab ich die Anpassung "versäumt" (und Code im UFO)

Debug.Print DLookup("BilderPfad","tblBildPfad") & Me![BilderOrdner] & "\" & Me![Verzeichnisname] & "\" & Me![BildDateiName]
Zitat



Ich kann das ausführen, aber im Direktbereich kommt nichts, aber im Lokal. Er meckert wegen dem DoCmd, da stört er sich an dem Ausdruck Parent.


Dann ist das Formular kein UFO , d. h. das Endlosform (in dem sich der Code befindet,) wird nicht in einem UFO-Steuerelement angezeigt.


=DomWert("BilderPfad";"tblBildPfad")
Die Ereignisprozedur beim Doppelklicken des Bildes sieht sieht so aus:



Zitat
    DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Dlookup("BilderPfad";"tblBildPfad") & "\" & Me.BilderOrdner & "\" & Me.Verzeichnisname & "\" & Me.BildDateiName

Wenn ich jetzt doppelklicke, dann geht es bis auf das erwähnte Thema, dass immer das gleiche Bild kommt.

Ja, ich verstehe jetzt aber immer noch nicht, wieso es da mit dem Bildpfad klappt.



Ist ja normal... Der Steuerelementinhalt des Bild-Steuerelementes ändert sich ja auch nicht (m. M. nach..)  .

Ändere den Aufruf so ab wie oben in Rot dargestellt.

Oder gibt es diesen Code im frmDeckblatt:


Sub Form_Load_()

If not IsNull(Me.Openargs) Then
Me!BildSteuerelement.Controlsource = "=" & Me.Openargs
End If

End Sub

oder auch

Sub Form_Load_()

If not IsNull(Me.Openargs) Then
'Me!BildSteuerelement.ControlSource =""   'evtl. erforderlich
Me!BildSteuerelement.Picture =  Me.Openargs
End If
End Sub


Zitat
Ich kann das ausführen, aber im Direktbereich kommt nichts,

Das kann gar nicht sein...  Scroll mal im Direktfenster rauf und runter....

Kannst Du den Haltepunkt setzen?


Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #22 am: September 22, 2017, 14:48:33 »
Hallo Franz,
Zitat
Domwert weglassen
Ok, da hab ich die Anpassung "versäumt" (und Code im UFO)
Debug.Print DLookup("BilderPfad","tblBildPfad") & Me![BilderOrdner] & "\" & Me![Verzeichnisname] & "\" & Me![BildDateiName]

Es ist ja kein UFO, sondern ein normales, eigenständiges Formular.

Zitat
Dann ist das Formular kein UFO , d. h. das Endlosform (in dem sich der Code befindet,) wird nicht in einem UFO-Steuerelement angezeigt.
Jo, hatte ich aber mehrfach erwähnt. Dass ich dann Parent doch verwendet habe ist das Thema, dass man alles versucht auch wenn es jeglicher Logik entsagt :(.

Zitat
Ändere den Aufruf so ab wie oben in Rot dargestellt.
Oder gibt es diesen Code im frmDeckblatt:
Sub Form_Load_()
If not IsNull(Me.Openargs) Then
Me!BildSteuerelement.Controlsource = "=" & Me.Openargs
End If
End Sub

oder auch

Sub Form_Load_()
If not IsNull(Me.Openargs) Then
'Me!BildSteuerelement.ControlSource =""   'evtl. erforderlich
Me!BildSteuerelement.Picture =  Me.Openargs
End If
End Sub
Nein gibt es nicht diese Codezusätze. Wenn ich in die DoCmd Zeile mit DLookup so gleich anpasse, und den Pfadhinweis aus dem Detailbereich entferne, dann geht das jetzt mit dem Bild aufrufen. Es besteht also nur noch das Problem mit dem Bild anzeigen, wenn ich ein Bild eines anderen Datensatzes doppelklicke. Da öffnet er dann also immer das zuletzt geöffnete. Ich muss über den Datensatzmarkierer den Datensatz marken, dann öffnet er auch das dazugehörige Bild. Das muss doch auch anders gehen, oder? Ob das mit dem Hinweis mit Recalc von Lachtaube geht weiss ich nicht

Gruß Andreas
Grüße und Dank im voraus
Andreas
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23087
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #23 am: September 22, 2017, 16:33:46 »
Hallo,


ok, wenn kein UFO, dann auch keine Parent_Eigenschaft...

Zitat
Das muss doch auch anders gehen, oder? Ob das mit dem Hinweis mit Recalc von Lachtaube geht weiss ich nicht


Solange das Steuerelement (hier das Bild-St.-El.)  nicht an ein Datensatzfeld (aus dem Form-Recordset) gebunden ist,  wird auch der Fokus nicht auf den erwarteten DS gesetzt. 

Abhilfe könnte es sein, in der zugrundeliegenden Abfrage ein berechnetes Feld einzubauen, das mit dem besagten Ausdruck den Bild-Pfaddateinamen ermittelt.

Das hätte aber zur Folge, dass das Form nicht mehr aktualisierbar (d. h. die Felder in einer DS-Zeile) wäre.


Vielleicht könnte es auch gehen, das Bild "in den Hintergrund" zu setzen und ein vorhandenes (gebundenes) Textfeld als Kopie über das Bild zu platzieren.  Wenn dieses zusätzliche Textfeld dann passend formatiert wird, kann die Ereignisprozedur dieses Textfeldes fokussieren des DS und zum Öffnen des Anzeigeforms herhalten. Eine Schaltfläche wäre auch geeignet.

Ein Recalc wird vermutlich auch nichts nutzen...


Warum wehrst Du Dich gegen den Klick auf den DS-Markierer?

« Letzte Änderung: September 22, 2017, 17:14:23 von DF6GL »
 
Folgende Mitglieder bedankten sich: derilzemer

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 850
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #24 am: September 22, 2017, 16:41:01 »
OpenArgs wird nur beim Öffnen eines Formulars neu initialisiert - deswegen heißt es vermutlich auch so. Du kannst aber, solange das Formular nicht als Dialog geöffnet wird, im Doppelklickereignis das offene Formular adressieren.Private Sub Deinsteuerelement_DblClick(Cancel As Integer)
   DoCmd.OpenForm "Formname"
   Forms("Formname").Bildsteuerelementname.Picture = DLookup(...)
End Sub
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: derilzemer

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #25 am: September 22, 2017, 17:50:48 »
Hallo Franz,
Warum wehrst Du Dich gegen den Klick auf den DS-Markierer?
Ich wehre mich nur wie ein typischer User, der irgendwie immer den schnellsten Weg sucht, auch wenn es wie in diesem Fall nur ein Klick wäre :(.

Gruß Andreas
Grüße und Dank im voraus
Andreas
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #26 am: September 22, 2017, 18:04:14 »
Hi,
Du kannst aber, solange das Formular nicht als Dialog geöffnet wird, im Doppelklickereignis das offene Formular adressieren.Private Sub Deinsteuerelement_DblClick(Cancel As Integer)
   DoCmd.OpenForm "Formname"
   Forms("Formname").Bildsteuerelementname.Picture = DLookup(...)
End Sub
Ich habe das mal so gemacht.
Private Sub imgDeckblattThumb_DblClick(Cancel As Integer)
'     DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, DLookup("BilderPfad", "tblBildPfad") & "\" & Me.BilderOrdner & "\" & Me.Verzeichnisname & "\" & Me.BildDateiName
    DoCmd.OpenForm "frmDeckblatt"
Forms("frmDeckblatt").imgDeckblattThumb.Picture = DLookup("BilderPfad", "tblBildPfad") & "\" & Me.BilderOrdner & "\" & Me.Verzeichnisname & "\" & Me.BildDateiName
End Sub

Beim ausführen des Doppelklicks, bringt er Laufzeitfehler 94: Unzulässige Verwendung von Null.
Klicke ich dann aud Debuggen, dann springt er im VB Editor zur frmDeckblatt, und markiert die ZTeile
Private Sub Form_Open(Cancel As Integer)
   [color=yellow]Me.imgqryDeckblatt.Picture = Me.OpenArgs[/color]
End Sub

Was müsste ich ändern?

Gruß Andreas
Grüße und Dank im voraus
Andreas
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23087
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #27 am: September 22, 2017, 18:38:37 »
Hallo,

die Form-Open-Ereignisprozedur wegwerfen...   8)

Natürlich is t Me.Openargs   NULL, wenn Du gar nichts als Parameter übergibst.... ;)

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #28 am: September 22, 2017, 18:50:51 »
Hi,
die Form-Open-Ereignisprozedur wegwerfen...   8)
:-[ dann öffnet er zwar das frmDeckblatt, aber er zeigt auch kein Bild an. Im übrigen funkioniert das gleiche Feature (doppelklick auf thumb zeigt großes Bild an) aus einem Ufo heraus bestens (hatte ich ja mal im Thread erwähnt). Von daher würde ich da wohl eher nichts ändern. Dann beiss ich in den sauren Apfel und nutze das eben über den DS Markierer oder baue das Suchformular nach dem Muster des Bilderfeature aus dem Ufo, damit es genauso funktioniert :(. Aber jetzt erst mal so.

Gruß Andreas
Grüße und Dank im voraus
Andreas