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: 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 611 mal)

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Laufzeitfehler 2447 beim Doppelklick
« am: September 20, 2017, 15:51:50 »
Hallo,
ich wollte eine schon funktionale Routine in einem anderen Bereich anwenden und bekomme den Laufzeitfehler 2447
Ein .-(Punkt) oder !-Operator wird auf ungültige Weise verwendet, oder es liegt ein ungültiges Klammernpaar vor.
Das debuggen springt dann zur neuen Zeile im VBA Editor. Also was habe ich gemacht.
Ich habe ein Suchformular, in dem ich zu jedem Datensatz eine thumb anzeigen lasse. Jetzt wollte ich mit einem Doppelklick das thumb größer anzeigen lassen. Dies mache ich schon in einem anderen Formular so, wo dieser Ablauf auch funktioniert.
Die VBA Anweisung sieht so aus:
Private Sub imgDeckblattThumb_DblClick(Cancel As Integer)
   DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.BilderPfad & Me.BildDateiName
End Sub
Der einzige Unterschied zum funktionierenden liegt im Namen und dass ich dort parent nutzen muss, weil es in einem Ufo ist
'Private Sub imgBild_DblClick(Cancel As Integer)
'    DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.Parent.BilderPfad & Me.BildDateiName
'End Sub

Kann mir da jemand sagen, welcher Operator dort nicht passen soll?? Danke für eventuelle Hilfe.

mfG
Andreas
 
Grüße und Dank im voraus
Andreas
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 850
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #1 am: September 20, 2017, 16:01:32 »
Es handelt sich wohl eher um einen Fehler im SQL-Abfragetext.
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: derilzemer

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #2 am: September 20, 2017, 16:28:50 »
Hi,
hmmm in der Tat, das Bild was aktuell angezeigt wird und vergrößert werden soll, hat als Steuerelementinhalt folgenden Eintrag:
=DomWert("BilderPfad";"tblBildPfad") & [BilderOrdner] & "\" & [Verzeichnisname] & "\" & [BildDateiName]Das bedeutet  im VBA muss der String anders zusammengesetzt werden :(. Okay, das weiss ich nicht, wie man das jetzt im VBA umsetzt. Da muss ich diesen Gimmick sein lassen.

Gruß Andreas

Grüße und Dank im voraus
Andreas
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1600
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #3 am: September 20, 2017, 16:45:55 »
Hallo Andreas,
Zitat
Das bedeutet  im VBA muss der String anders zusammengesetzt werden
Nee, das bedeutet, das der genauso zusammengesetzt werden muss ( "\" ).
Hast du die Möglichkeiten von Debug.Print immer noch nicht erkannt?  ;)
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 derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #4 am: September 20, 2017, 17:12:41 »
Hi Ekkehard,
Zitat
Das bedeutet  im VBA muss der String anders zusammengesetzt werden
Nee, das bedeutet, das der genauso zusammengesetzt werden muss ( "\" ).
Ja das hört sich doch für mich mal wieder einfach an.
Hast du die Möglichkeiten von Debug.Print immer noch nicht erkannt?  ;)
gruss ekkehard
Selbst wenn ich das jetzt mal in der aktuellen Konfiguration aktiviere, so komme ich gar nicht zur Ausgabe von debug.print. da ich ja schon vorher hänge bleibe weil er Me.BilderPfad nicht findet.
Private Sub imgDeckblattThumb_DblClick(Cancel As Integer)
   DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.BilderPfad & Me.BildDateiName
      Debug.Print
End Sub

BilderPfad ist ja eine Feld in tblBildPfad. Auch mit Me.Parent.Bilderpfad komme ich da natürlich nicht hin. Sprich ich weiss nicht wie ich den Verweis auf die tblBildPfad.BilderPfad hinbekomme.

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

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 850
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #5 am: September 20, 2017, 17:52:00 »
Leg' Dir doch eine eigene Eigenbnschaft in der DB an, die anschließend wie jede andere Eigenschaft auch beschrieben und ausgelesen werden kann.
Option Compare Database
Option Explicit

'in einem allgemeinen Modul

' von Allen Browne
Function SetPropertyDAO(obj As Object, strPropertyName As String, intType As Integer, _
                        varValue As Variant, Optional strErrMsg As String) As Boolean
   On Error GoTo ErrHandler
   'Purpose:   Set a property for an object, creating if necessary.
   'Arguments: obj = the object whose property should be set.
   '           strPropertyName = the name of the property to set.
   '           intType = the type of property (needed for creating)
   '           varValue = the value to set this property to.
   '           strErrMsg = string to append any error message to.

   If HasProperty(obj, strPropertyName) Then
      obj.Properties(strPropertyName) = varValue
   Else
      obj.Properties.Append obj.CreateProperty(strPropertyName, intType, varValue)
   End If
   SetPropertyDAO = True

ExitHandler:
   Exit Function

ErrHandler:
   strErrMsg = strErrMsg & obj.Name & "." & strPropertyName & " not set to " & varValue & _
               ". Error " & Err.Number & " - " & Err.Description & vbCrLf
   Resume ExitHandler
End Function

Function HasProperty(obj As Object, strPropName As String) As Boolean
   'Purpose:   Return true if the object has the property.
   Dim varDummy As Variant

   On Error Resume Next
   varDummy = obj.Properties(strPropName)
   HasProperty = (Err.Number = 0)
End Function
Beispiel zur Nutzung im VBA-Direktbereich.'Test - Bilderpfad noch nie verwendet
'
?CurrentDb.Properties("Bilderpfad")
' Laufzeitfehler: 3270

'Eigenschaft anlegen und gleich bestücken
?SetPropertyDAO(CurrentDb, "Bilderpfad", dbText, "C:\MeineBilder\Karten\Deckblaetter\")
Wahr

'Jetzt benötigt man die Funktionen nicht mehr

?CurrentDb.Properties("Bilderpfad")
C:\MeineBilder\Karten\Deckblaetter\

'korrigieren
CurrentDb.Properties("Bilderpfad") = "D:\NeuerBildpfad\"

?CurrentDb.Properties("Bilderpfad")
D:\NeuerBildpfad\
Die Eigenschaft und ihr Wert bleibt natürlich auch nach dem Schließen der DB erhalten.
Grüße von der (⌒▽⌒)
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #6 am: September 20, 2017, 18:54:16 »
Hallo Lachtaube,
ich habe mir mal das Allgemeine Modul angelegt (Name Allgemein_SetProperty), den oberen Teil eingefügt. Dann habe ich auch im VBA-DB das Ergebnis mit dem Laufzeitfehler erhalten. Soweit habe ich es verstanden, jedoch kann ich jetzt nicht wie in deinem Beispiel den kompletten Pfad einfügen, da die "Deckblätter" bzw Spiele ja von unterschiedlichen Verlagen strammen und somit der Verlag und auch das Spielverzeichnis wechseln können.
=DomWert("BilderPfad";"tblBildPfad") & [BilderOrdner] & "\" & [Verzeichnisname] & "\" & [BildDateiName]Der Bilderpfad ist in tblBildPfad, der Bilderordner in tblVerlag und der Verzeichnisname in tblSpiele als Feld definiert. Im Verzeichnis findet sich letztendlich der Bilddateiname. Das Problem ist wie gesagt, dass der Pfad mehr oder weniger dynamisch ist bzw. der Pfad sich ständig ändern kann. Das kann ich ja mit der SetProperty Variante so nicht fixen, oder sehe ich das falsch?

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

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 850
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #7 am: September 20, 2017, 20:14:06 »
Dann steht wohl in Verzeichnisname etwas, was da nict hingehört. Nur, woher bezieht Verzeichnisname seinen Wert?
Grüße von der (⌒▽⌒)
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #8 am: September 20, 2017, 20:35:41 »
Hi,
Dann steht wohl in Verzeichnisname etwas, was da nicht hingehört. Nur, woher bezieht Verzeichnisname seinen Wert?
wie schon in #6 erwähnt,
Zitat
=DomWert("BilderPfad";"tblBildPfad") & [BilderOrdner] & "\" & [Verzeichnisname] & "\" & [BildDateiName]
Der Bilderpfad ist in tblBildPfad, der Bilderordner in tblVerlag und der Verzeichnisname in tblSpiele als Feld definiert. Im Verzeichnis findet sich letztendlich der Bilddateiname. Das Problem ist wie gesagt, dass der Pfad mehr oder weniger dynamisch ist bzw. der Pfad sich ständig ändern kann. Das kann ich ja mit der SetProperty Variante so nicht fixen, oder sehe ich das falsch?
Das verhält sich ja so. Der Bildpfad wird global festgelegt, ist also statisch. Das Verzeichnis eines Verlages ist dann schon dynamisch, wird in tblVerlag festgelegt. Ebenso ist es mit dem Verzeichnisname des Spieles, welches z.B. vom Verlag Ass kommt. Das wird dann in tblSpiele mit z.b 3200_1971 definiert, ist unique. Der Pfad setzte sich dann also so zusammen
W:\quartette\bilder\ass\3200_1971\ und wie erwähnt ab Ass dynamisch.

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

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 850
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #9 am: September 20, 2017, 20:50:09 »
Ja, das ist mir schon klar. Du solltest ergründen, woher das Steuerelement oder Feld Verzeichnisname seinen Inhalt bezieht. Ist da VBA involviert?
Grüße von der (⌒▽⌒)
 

Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #10 am: September 20, 2017, 21:18:55 »
....... Du solltest ergründen, woher das Steuerelement oder Feld Verzeichnisname seinen Inhalt bezieht. Ist da VBA involviert?
Für das Feld Verzeichnisname in tblSpiele gibt es keinen VBA. Ich schreibe da lediglich den Verzeichnisnamen des Spieles rein, wenn ich ein neues Spiel erfasse.

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

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23087
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #11 am: September 21, 2017, 08:06:45 »
Hallo,

ohne weiter einzusteigen und wenn dies in einem (Haupt)Form funktioniert:



Zitat
Private Sub imgDeckblattThumb_DblClick(Cancel As Integer)
   DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.BilderPfad & Me.BildDateiName
End Sub

dann sollte es bei einem in diesem HFO liegenden UFO so lauten:

Zitat
Private Sub imgBild_DblClick(Cancel As Integer)
    DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.Parent!BilderPfad & Me.Parent!BildDateiName
End Sub

Wobei in "Me.Parent!BilderPfad"  ein abschließender Backslash stehen muss.




Offline derilzemer

  • Access-Meister
  • ***
  • Beiträge: 535
    • Quartettportal
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #12 am: September 21, 2017, 16:28:55 »
Hi Franz,
wenn dies in einem (Haupt)Form funktioniert:
Zitat
Private Sub imgDeckblattThumb_DblClick(Cancel As Integer)
   DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.BilderPfad & Me.BildDateiName
End Sub
dann sollte es bei einem in diesem HFO liegenden UFO so lauten:
Zitat
Private Sub imgBild_DblClick(Cancel As Integer)
    DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.Parent!BilderPfad & Me.Parent!BildDateiName
End Sub
Wobei in "Me.Parent!BilderPfad"  ein abschließender Backslash stehen muss.
ich verstehe nicht wirklich, wieso das nicht geht :(. Ich will diese Funktion ja in der frmQuartettSuche. Das Thumb welches ich gerne mit Doppelklick größer darstellen will wird ja schon angezeigt :-\. Was genau bewirkt, dass es angezeigt wird?
In der Query für frmQuartettSuche sind alle erforderlichen Felder und Tabellen hinterlegt. Das Thumb wird über ein Bildelement dargestellt, welcher als Steuerelementinhalt diesen Eintrag hat:
=DomWert("BilderPfad";"tblBildPfad") & [BilderOrdner] & "\" & [Verzeichnisname] & "\" & [BildDateiName].
Meinem Verständnis nach, ist in dem String alles drin, was den Pfad angeht, sonst würde er ja das Thumb nicht anzeigen. Jetzt müsste doch auch meinem Verständnis nach über die Eigenschaften des Bildelement unter Ereignis mit Doppelklicken eine Ereignisprozedur hinterlegt werden können. Man muss dann wohl nur den Pfad anpassen, dachte ich ja auch.
Ich habe dann jetzt im VBA noch einmal umgestellt:
DoCmd.OpenForm "frmDeckblatt", acNormal, , , , acDialog, Me.Verlag & Me.BilderOrdner & Me.BildDateiNamesiehe da, er meckert Laufzeitfehler 2220, QuartettDB von Andreas Müller kann die Datei Berlinerberl6316737_1974_db.png nicht öffnen.
Berlinerberl6316737_1974_db.png = Berliner=Verlag | berl=BilderOrdner | 6316737_1974_db.png=BildDateiName.
Ergo ist er nah dran, ich muss noch die Backslashes mit reinmachen, aber wie :( Ich dachte einfach & "\" aber das geht nicht, auch nicht mit Asterix. Wie mache ich das?

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

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1600
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #13 am: September 21, 2017, 16:36:06 »
Zitat
Wie mache ich das?
Na, genauso wie beim DomWert, - oder nicht. -> siehe #3
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 DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23087
Re: Laufzeitfehler 2447 beim Doppelklick
« Antwort #14 am: September 21, 2017, 19:38:21 »
Hallo,

das solltest Du aber jetzt wirklich interpretieren und abstellen können...

Offensichtlich fehlen die Backslashes...



Zitat
ich verstehe nicht wirklich, wieso das nicht geht :(. Ich will diese Funktion ja in der frmQuartettSuche. Das Thumb welches ich gerne mit Doppelklick größer darstellen will wird ja schon angezeigt :-\. Was genau bewirkt, dass es angezeigt wird?

Ich verstehe es so, dass das "Thumb" in einem Bild-Steuerelement angezeigt wird, dessen Steuerelement den (kompletten) Pfad-Dateinamen des Bildes zugewiesen erhalten hat.

Beim Öffnen des frmDeckblatt wird der (komplette) Bild-Pfaddateiname als Openargs-Parameter übergeben.   Im Open- oder Load-Ereignis des frmDeckblatt muss Code stehen, der das Openargs-Argument auswertet und damit den Bild-Pfaddateinamen dem Steuerelement-Inhalt eines Bild-St.-El. zuweist.  Alternativ kann der Dateiname auch der Picture-Eigenschaft des Buld-St. El. zugewiesen werden.


Mit diesen Infos und ein bisschen Debuggen (mit einem Haltepunkt und/oder der Ausgabe mit Debug.Print ins Direktfenster ) solltest Du das Ganze nun aber selber hinbekommen.