Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: derilzemer am April 09, 2015, 01:01:54

Titel: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 09, 2015, 01:01:54
Hallo,
die Datenbank (accdb 2013 Version) sieht wie folgt aus http://quartettportal.de/bilder/beziehungen.jpg (http://quartettportal.de/bilder/beziehungen.jpg).
Ich habe in der Tabelle tblQuKarten ein neues Feld BildNameFlaggen (Textfeld) hinzugefügt, im Bild rot markiert.
Diese Tabelle ist als Unterformular (frmErfassungUfoQuartUfoKarten) im Unterformular frmErfassungUfoQuart im Hauptformular frmErfassung integriert. Über das Textfeld BildNameFlaggen habe ich ein Bild gelegt, welches als Datenquelle das Textfeld BildNameFlaggen hat. Wenn ich nun das kleine png (max. 2KB) via Doppleklick oder als Dateiname eintrage, zeigt er mir das Bild auch an. Die Funktionalität ist also gewährleistet. Wenn ich nun die Datenbank schließe und erneut öffne, dann sehe ich von den hinzugefügten Bildern nur noch den Text. Wenn ich nun ein einziges Bild erneut via Doppelklick auswähle, dann zeigt er auch alle anderen Bilder wieder an. Die Bilder liegen extern auf einem NAS, welches sich zur aktuellen Situation nicht in einem Sleep Mode oder ähnlichen befindet. Das gleiche Verfahren wird innerhalb der Datenbank noch einmal an anderer Stelle verwendet (tblBilderZuSpiel, blau markiert), da habe ich diese "Probleme" oder Auffälligkeiten nicht. Den Code den ich bei der Doppelklickauswahl verwende sieht wie folgt aus:
Private Sub txtBildNameFlaggen_DblClick(Cancel As Integer)
    Dim dlgOpen As FileDialog
    Set dlgOpen = Application.FileDialog(msoFileDialogFilePicker)
    With dlgOpen
      'Set title of the dialog box
        .Title = "Wähle eine Datei aus"
      'Pathvar
        .InitialFileName = [u][b]Me.Parent.Parent.BilderPfad[/b][/u]
      'Add a filter that includes PNG, GIF and JPEG images and make it the first item in the list.
        .Filters.Add "Images", "*.png; *.gif; *.jpg; *.jpeg", 1
      ' Allow the user to make multiple selections in the dialog box.
        .AllowMultiSelect = False
      ' Show the dialog box. If the .Show method returns True, the user picked at least one file.
        If .Show Then _
        Me.txtBildNameFlaggen = Dir(.SelectedItems(1))
    End With
End Sub

Unterschied zum Code, den ich im Formular frmErfassungUfoBilder verwende, ist in Fett und Kursiv gehalten. Im anderen Code verwende ich lediglich einmal Parent. Kann es etwa daran liegen, oder muss ich einen requery auf das Textfeld setzen, sobald die DB geöffnet wird?
Um eure Hilfe wäre ich dankbar

Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 09, 2015, 10:32:42
Hallo Andreas,

wenn die Dateiauswahl an sich funktioniert und der Bilddateiname korrekt gespeichert, aber lediglich das Bild nicht angezeigt wird, ist der gezeigte Code wohl eher nicht ausschlaggebend.

Aber wie sieht es hiermit aus:
ZitatÜber das Textfeld BildNameFlaggen habe ich ein Bild gelegt, welches als Datenquelle das Textfeld BildNameFlaggen hat.
Das Datenfeld enthält doch lediglich den Dateinamen, du brauchst aber auch den Pfad zum Bild, um es anzeigen zu können.
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 09, 2015, 13:25:55
Hi Maggie,
BilderPfad ist praktisch eine Variable. Das Hauptformular (frmErfassung) basiert ja auf der Abfrage qryfrmErfassung. Dort gibt es den Eintrag BilderPfad: "W:\AccessDB\" & [Bilderordner] & "\". Bilderordner wiederrum ist in der tblVerlag hinterlegt. Wenn ich jetzt einem Spiel ein Bild zuordnen möchte, dann befindet man sich bzw. springt automatisch in den entsprechenden Verlagsordner. Deshalb habe ich diese Sache auch übernommen von dem schon existierenden Konstrukt was die Spielebilder angeht. Ich musste lediglich parent.parent machen, da ich mich 2. Unterformular befinde. Demnach kann es daran eigentlich nicht liegen, oder etwa doch? Bin aktuell unsicher was das Problem sein könnte :(.

Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 09, 2015, 13:38:57
Wie bereits gesagt, der oben gezeigte Code dient der Bildauswahl und das sollte nicht das Problem sein. Zumindest sollte es sich leicht feststellen lassen, ob der Suchpfad korrekt vorgegeben wird und ob in der Tabelle die richtigen Dateinamen stehen.

Interessant wird es doch erst an der Stelle wo das Bild angezeigt werden soll und wenn du schreibst, dass du das Bildsteuerelement an das neue Datenfeld gebunden hast, so ist das ein Fehler. Aber darauf bist du jetzt gar nicht eingegangen.

Man müsste sich das Formular und den zugehörigen Code mal ansehen können...
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 09, 2015, 19:15:05
Hi,
was heißt nicht darauf eingegangen. Ich habe ja geschrieben, wie der BildPfad funktioniert. Im anderen Formular muss ich auch nur den Bildnamen angeben, da der Pfad wie gesagt über das Hauptformular abgewickelt wird. Letztendlich habe ich das gleiche gemacht. Ich habe nur aus Platzgründen das Bild über das Textfeld gelegt, also nur ein Platzproblem, deswegen diese Lösung. Zumindest viel mir keine andere ein :).
Ich kann dir die DB mal schicken, da ich sie selbst komprimiert und gezipt nichtz unter 330 kb bringe :(. Das kann ich anbieten. Zum Download würde ich sie ungerne stellen, da doch viele Daten (Kosten der Spiele etc.) drin sind, die nicht jeder sehen muss.
Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: HB9876 am April 09, 2015, 20:17:38
Hallo Andreas,
am besten eine Kopie der Datenbank machen und nur ein paar relevante Testdaten belassen.
Dann komprimieren und ggf. zippen.
Das sollte dann immer passen.

Gruss

Jens'
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 09, 2015, 20:53:20
Hi,
jo wenn ich 20 Datensätze drin lasse, komprimieren und gezipt liegt sie bei 2Mb. accdb ist da wohl nicht mehr so schnieke wie mdb Format, da lag ich immer so um die 300-400 KB. Also die Filegröße im Forum ist meines erachtens eh etwas lächerlich, sorry. Aber sei es drum. Ich kann sie nicht hochladen, thats it.
Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 09, 2015, 22:13:43
Hallo,
Zitat von: derilzemer am April 09, 2015, 19:15:05Ich habe ja geschrieben, wie der BildPfad funktioniert.
darum geht es aber doch nicht, du hast geschrieben (ich zitiere es gerne noch einmal):
ZitatÜber das Textfeld BildNameFlaggen habe ich ein Bild gelegt, welches als Datenquelle das Textfeld BildNameFlaggen hat.
Das Datenfeld enthält nur den Dateinamen, zum Anzeigen des Bildes wird aber der vollständige Pfad benötigt.
ZitatIch kann dir die DB mal schicken
Das kannst du gerne machen, meine Email-Adresse hast du ja schon.
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 11, 2015, 00:30:24
Hallo Andreas,
Zitat von: derilzemer am April 09, 2015, 01:01:54Das gleiche Verfahren wird innerhalb der Datenbank noch einmal an anderer Stelle verwendet (tblBilderZuSpiel, blau markiert)
dann schau dir doch mal an, wie du das mit dem Anzeigen des Bildes dort gelöst hast.

Da gibt es nämlich (völlig überflüssigerweise) diesbezüglichen VBA-Code im Formulareignis "Beim Anzeigen". Das resultiert wohl noch aus anfänglichen, aber inzwischen überholten Empfehlungen. In den aktuellen Access-Versionen kann man ein Bild-Steuerelement an ein Datenfeld binden, welches den vollständigen Zugriffspfad zu einer Bilddatei beinhaltet.

Es ist zwar zutreffend, dass bei dem Bild-Steuerelement in dem funktionierenden Unterformular ("frmErfassungUfoBilder") das Datenfeld mit dem Dateinamen ("BildDateiName") als Steuerelementinhalt eingetragen ist, dies wird jedoch per Zuweisung im Form_Current-Ereignis überschrieben.

Im Unterformular "frmErfassungUfoQuartUfoKarten" fehlt dieser Code.

Meine Empfehlung wäre:
1.
halte den Zugriffspfad zum Bilder-Verzeichnis variabel, indem du ihn in einer Tabelle speicherst

2.
beziehe diese Tabelle in alle Abfragen ein, wo die Bilddateien eine Rolle spielen, so dass der Pfad in den Formularen verfügbar ist, ohne dass er als Konstante in Abfragen oder VBA-Prozeduren festgelegt werden muss

3.
des weiteren ist zu berücksichtigen, dass der endgültige Zugriffspfad zur Bilddatei auch noch vom Hersteller abhängig ist

Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 13, 2015, 19:37:43
Hi,
zuerst mal muss ich sagen, dass ich die DB erst vor kurzem in das accdb Format konvertiert habe. Von daher hatte ich vorher nicht die Option ein Bild-Steuerelemnt an ein Datenfeld zu binden.
Dass nun von dir als "überflüssig" bezeichneter Code vorhanden ist, kann ich aufgrund fehlendem Verständnis leider nicht komplett nachvollziehen :(. Ich denke mal es geht nur um die Zeile Forms!frmErfassung!frmErfassungUfoBilder.Form!lstBmWahl.Requery
Habe ich durch einen wie du sagst variabel gehaltenen Bildpfad nicht mehr Aufwand? Ich muss den immer neu eingeben, oder etwa nicht? Noch dazu muss ich dann eben die Verlagsabhängigkeit berücksichtigen, welche aktuell mit Bilderordner in in tblVerlag doch gar nicht sooo schlecht gelöst ist, oder? Sorry, das ist keine ketzerische Frage, sondern eher weil ich es nicht wirklich raffe :(.

Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 13, 2015, 19:51:58
ZitatIch denke mal es geht nur um die Zeile
Nein, es geht um die Zuweisung des Bildpfades an die Picture-Eigenschaft des Bild-Steuerelements. Hiermit hast du dich schließlich selbst ausgetrickst, da du zusätzlich den Namen des Bildes an das Bild-Steuerelement gebunden und geglaubt hast, dass es so funktionieren würde. Momentan wird der Code zwar gebraucht, weil er die korrekte Zuweisung des vollständigen Pfades enthält, aber das kannst du ebensogut über den Steuerelementinhalt lösen.

Die Speicherung des Pfades in einer Tabelle halte ich für einen großen Vorteil.
1. hast du keine Konstante im Code mehr, brauchst also keine Programmänderung vorzunehmen, wenn der Pfad sich ändert
2. kannst du den Pfad direkt in die Abfragen einbinden und somit alle benötigten Informationen an die Formulare liefern
Dann setzt sich der Zugriffspfad halt aus drei Teilen zusammen, Pfad + Verlagsordner + Dateiname.

Ich hoffe, nun siehst du etwas klarer.
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 13, 2015, 20:55:49
Hi,
ich habe das mal abgeändert, in der Tabelle tblQuKarten habe ich das Feld BildNameFlagge gelöscht und das Feld LandFlagge, Typ Anlage angelegt. Im Formular eingebunden und gut. Aktuell geht jetzt immer der FileDialog auf, wo ich das Bild auswählen muss. Wie kann ich ihm aber den Pfad vorgeben bzw. vor definieren? Geht das nur über den Weg mit Pfad in Tabelle? Wenn ich ehrlich bin würde ich den aktuell genutzten Weg gerne übernehmen was den BilderPfad angeht (bin ich zu stur?). Dazu müsste ich dann wohl aber Code verwenden, richtig?

Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 13, 2015, 22:14:02
Hi,

das halte ich jetzt für keine gute Entscheidung, auf Anlagen umzusteigen. Das bringt wiederum neue Probleme mit sich und bläht die (eh schon recht fette) DB nur unnötig auf.

Wie kommt es nur, dass meine Ratschläge bei dir alle nicht ankommen und sich im Zweifelsfall ins Gegenteil umkehren?
ZitatAktuell geht jetzt immer der FileDialog auf, wo ich das Bild auswählen muss.
Wieso kommt das jetzt ohne dass du es willst? Da stimmt doch wieder etwas nicht.
ZitatWie kann ich ihm aber den Pfad vorgeben bzw. vor definieren?
Wozu brauchst du einen Pfad, wenn du die Bilder als Anlagen gespeichert hast?
ZitatDazu müsste ich dann wohl aber Code verwenden, richtig?
Nein, alles was du brauchst ist ein sinnvolles Tabellenkonzept, dazu Abfragen und Formulare.

Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 13, 2015, 22:43:02
Hi,
ZitatWie kommt es nur, dass meine Ratschläge bei dir alle nicht ankommen und sich im Zweifelsfall ins Gegenteil umkehren?
Das liegt daran, dass ich dich schlicht und einfach falsch verstehe, mehr ist das nicht.
ZitatWieso kommt das jetzt ohne dass du es willst? Da stimmt doch wieder etwas nicht.
Das kommt nicht einfach so. Ich habe FileDialog gesagt, meinte aber das Anlagen Fenster wo man dann das Bild hinzufügen kannn, sorry. Das ist bei Anlage ja normal.
ZitatWozu brauchst du einen Pfad, wenn du die Bilder als Anlagen gespeichert hast?
Naja, wenn das Anlagenfenster aufgeht, dann steht er im Windows User Verzeichnis, deswewgen. Aber das ist ja eh hinfällig, da ich ja eh falsch unterwegs bin :(.
ZitatNein, alles was du brauchst ist ein sinnvolles Tabellenkonzept, dazu Abfragen und Formulare.
Du willst mir damit sagen, dass ich das Tabellenkonzept generell überdenken sollte?

Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 13, 2015, 23:48:18
Hi,
ich habe das mal komplett so umgesetzt wie du meinst, also Bildsteuerelement, Pfad in Tabelle. Alles gut, geht. Aber ich will diese Lösung mit dem Pfad in der Tabelle irgendwie nicht. Das ist aus meiner Sicht eben nicht "zentral" genug. Und wenn man dann ändern muss aus welchem Grund auch immer habe ich mehr Aufwand das in der TAbelle zu ändern, als wenn ich den zentralen BildPfad ändern müsste. Aber Danke für deinen Invest und sorry wenn ich mich mal wieder extrem Begriffsstutzig oder wie auch immer angestellt habe. Das ist keine Absicht euch bzw. dich zu nerven.

Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 14, 2015, 09:50:59
Natürlich sollst du den Pfad nicht bei jedem Bild speichern, das wäre ja kontraproduktiv. Was ich meinte ist eine neue Tabelle, die nichts weiter als den Pfad enthält. Diese Tabelle bindest du in jede Abfrage ein, in der du Bilddateien brauchst. Oder du holst den Pfad beim Öffnen des Formulars mit Hilfe der DlookUp-Methode hinzu. Das ist - so oder so - eindeutig besser als den Pfad konstant in den Code zu schreiben!

Dazu ein Formular, so dass der Anwender notfalls den Pfad selbst ändern kann, denn in der EDV (so wie auch sonst im Leben) ist nichts für die Ewigkeit.
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 16, 2015, 17:52:30
Hi,
okay jetzt kommt der Andy wieder mit seiner Unwissenheit :(.
Tabelle habe ich mal erstellt, tblBildPfad, Felder BildPfadID (PK) und Pfad (Kurzer Text). Ein Datensatz W:\AccessDB\.
Nun redest du von 2 Methoden, entweder Abfrage oder aber mit der "DLookup Methode". Wenn ich nun das mit der Abfrage mal nehme, meine vorhandene Abfrage qryErfassungUfoKarten bearbeite, die Tabelle tblVerlag (wegen BilderOrdner) und tblBildPfad hinzufüge (http://bildpfad.png), dann steh ich wie ein Ochs vor dem Berg, weil ich nicht weiss, wie der Code dazu aussehen muss. Ich kann kein VBA, welchen ich ja in dem Fall für die Aktion Bei Klick oder Doppelklick zu machen habe :(. Die von dir erwähnten Methoden 1+2 bringen mich zwingend in die Lage, dass ich da nicht weiter weiss.
Traurig aber wahr
Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 16, 2015, 21:55:52
Mit Screenshots vom Abfrageentwurf kann man nicht viel anfangen. Wenn es um Abfragen geht, zeige bitte den SQL-Code.

Nachdem was ich erkennen kann, brauchst du lediglich das Datenfeld "Pfad" aus der Tabelle "tblBildPfad" mit in die Datenfeldauswahl zu nehmen, so dass der Pfad bei jedem Datensatz automatisch hinzugefügt wird.
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 16, 2015, 22:10:05
Hi Maggie,
der Code zur qryErfasssungUfoKarten ist

SELECT tblQuartette.QuartettID, tblQuartette.SpielID_F, tblQuartette.QuartettKz, tblQuartette.QuartettBezeichnung, tblQuKarten.QuKartenID, tblQuKarten.QuartettID_F, tblQuKarten.KartenNr, tblQuKarten.Kartenbezeichnung, tblQuKarten.ModellTyp, tblQuKarten.Druckdatum, tblBildPfad.Pfad, tblVerlag.BilderOrdner, [QuartettKz] & [KartenNr] AS KartenKZ
FROM tblBildPfad, tblVerlag INNER JOIN ((tblSerieVerlag INNER JOIN tblSpiele ON tblSerieVerlag.SerieVerlagID = tblSpiele.SerieVerlagID_F) INNER JOIN (tblQuartette INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F) ON tblVerlag.VerlagID = tblSerieVerlag.VerlagID_F
ORDER BY tblQuartette.QuartettKz;

Laut deiner Aussage also kein weiterer Code von Nöten, lediglich das Bildsteuerelement? Wenn ich das Bildsteuerelement gesetzt habe, dann muss ich ja mit einem Ereignis (Klick o. Doppelklick) das Verzeichnis aufrufen können. Deswegen habe ich ja auch gedacht, man muss die tblVerlag mit einbinden, weil da ja die Verlagsspezifischen Bilder liegen. Die Beispiele im Internet zum Thema Bildsteuerelement gehen ja alle in Richtung, dass das Bildsteuerelement von einem Textfeld bedient wird. Wie du merkst, bin ich gerade mal wieder nicht auf voller Höhe.
Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 20, 2015, 17:10:05
Hallo,

wo kommt denn diese Abfrage überhaupt zum Einsatz, das kann ich in meiner Version nicht finden.

Und was das betrifft:
Zitat von: derilzemer am April 13, 2015, 23:48:18Das ist aus meiner Sicht eben nicht "zentral" genug.
zentraler geht's nicht! :-)
Und ich hoffe, dich noch davon überzeugen zu können. Bring mich nur mal kurz auf den neuesten Stand, wie weit bist du inzwischen damit gekommen?
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 20, 2015, 18:08:47
Hi,
ZitatUnd ich hoffe, dich noch davon überzeugen zu können....
Ja ich weiss, da arbeitest du hart dran. Einzig meine Vorstellungskraft lässt mich noch an dem zweifeln, dass es "einfacher" sein wird. Das liegt aber eben an dem Verständnis des Themas an sich, nicht an dir :).
Die Abfrage qryErfasssungUfoKarten kommt im Formular frmErfassungUfoQuartettUfoKarten zum Einsatz. Da ist der aktuelle Stand, dass ich eben nur das Bildsteuerelement platziert habe. Steuerelementinhalt ist ungebunden. Ich hatte noch die Tabelle tblBildPfad mit den Feldern BildPfadID (PK) und Pfad (W:\AccessDB\Flaggen) angelegt. Und ab da verließen sie mich. Jetzt heißt es ja, dass beim Klick die tblBildPfad berücksichtigt werden muss.

SELECT tblQuartette.QuartettID, tblQuartette.SpielID_F, tblQuartette.QuartettKz, tblQuartette.QuartettBezeichnung, tblQuKarten.QuKartenID, tblQuKarten.QuartettID_F, tblQuKarten.KartenNr, tblQuKarten.Kartenbezeichnung, tblQuKarten.ModellTyp, tblQuKarten.Druckdatum, tblBildPfad.Pfad, [QuartettKz] & [KartenNr] AS KartenKZ
FROM tblBildPfad, tblSpiele INNER JOIN (tblQuartette INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
ORDER BY tblQuartette.QuartettKz;


Das ist der aktuelle Stand. Ich habe diese Woche Rufbereitschaft und bin etwas knapp was die Zeit angeht, aber bin dann immer mal wieder am checken der Beiträge, sorry.

Gruß Andreas


Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: HB9876 am April 20, 2015, 23:19:28
Hi Andreas,
persoenlich finde ich den Vorschlag von MaggieMay sehr elegant.
Wenn sich dein Pfad zu den Bildern mal aendern sollte, must du nur den Eintrag in der Tabelle abaendern und nicht im Code basteln.
Ich finde das sehr Anwenderfreundlich geloest und man muss nicht die gefahr auf sich nehmen was am Code zu veraendern.

BTW:
ZitatAber Danke für deinen Invest und sorry wenn ich mich mal wieder extrem Begriffsstutzig oder wie auch immer angestellt habe. Das ist keine Absicht euch bzw. dich zu nerven.
Ich lese ja schon lange die Punkte deiner Datenbank mit (so lerne ich immer was dazu), finde ich deinen Wissensaufbau wirklich sehr gut.

Gruss
Jens
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 21, 2015, 21:47:00
Hi,
danke für dein Lob.
Ja, das mit dem Lerneffeklt stimmt schon und ich versteh es ja schon den Beweggrund vom Maggie. Bei mir ist dann aber immer der Hintergedanke, dass ich das bisherige umstellen muss und dann eben mit Problemen zu kämpfen habe bis das alles wieder läuft. Das ist auch das Hauptproblem an der Datenbankgeschichte, dass ich erst vor kurzem dazu gestoßen bin von Excel zu Access, keinerlei VBA Kenntnisse, noch nicht mal rudimentär. Ich bin jetzt zwar nicht unbedingt aufs Maul gefallen, aber man tut sich einfach schwer, weil man vieles wieder und wieder fragen muss und mit dem Googlemonster oft auch nicht ans Ziel kommt, weil es zu spezifisch ist. Aber so ist das eben, wenn man älter ist und dann anfängt sich mit solchen Sachen zu beschäftigen.

Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 22, 2015, 00:05:24
Hallo Andreas,
Zitat von: derilzemer am April 21, 2015, 21:47:00Bei mir ist dann aber immer der Hintergedanke, dass ich das bisherige umstellen muss und dann eben mit Problemen zu kämpfen habe bis das alles wieder läuft.
das ist nachvollziehbar, die Erfahrung hat sicher jeder schon mal gemacht, dass eine Änderung unerwartete (bzw. unbedachte) Konsequenzen hatte.

Was den Bildpfad betrifft, so sollte das jedoch überschaubar sein. Du solltest wissen wo du diesen als Konstante einsetzt, zum einen in Abfragen und evtl. auch im VBA-Code, was leicht feststellbar wäre. Was die Abfragen betrifft, so ist es völlig unproblematisch, die Konstante durch Einbindung des Datenfeldes einer zusätzlichen Tabelle zu ersetzen. In den Formularen ändert sich dadurch ja nichts, sofern sie den Pfad der Datenquelle entnehmen können.

Hast du das inzwischen mal ausprobiert?

Es wäre sinnvoll, wenn du dir jeweils den (zumindest in Teilbereichen) funktionierenden aktuellen Stand des Programms sichern würdest, ehe du weitere Änderungen und Erweiterungen am Programm vornimmst.
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 22, 2015, 22:47:20
Hi,
ZitatEs wäre sinnvoll, wenn du dir jeweils den (zumindest in Teilbereichen) funktionierenden aktuellen Stand des Programms sichern würdest, ehe du weitere Änderungen und Erweiterungen am Programm vornimmst.
Das habe ich mir gleich von Anfang an angewöhnt. Jeder größere Step wurde Versioniert. Das hat mir der Klaus auch gleich als 1. eingetrichtert als er anfing mich zu unterstützen.

ZitatHast du das inzwischen mal ausprobiert?
Nein, hab dir ja geschrieben wie der Stand ist. Ich habe mal geschaut, wo der aktuelle Bildpfad überall hinterlegt ist.
Im Formular frmErfassung BilderPfad: "W:\AccessDB\" & [Bilderordner] & "\"
SELECT tblSerieVerlag.SerieVerlagID, tblSpiele.SpielID, tblSpiele.SpielNr, tblSpiele.SpTitel, tblSpiele.SerieVerlagID_F, tblSpiele.KategorieID_F, tblSpiele.Ausgabejahr, tblSpiele.Zustand, tblSpiele.Kartenzahl, tblSpiele.KartenFormatID_F, tblSpiele.Komplett, tblSpiele.Bestand, tblSpiele.Katalog, tblSpiele.SchachtelID_F, tblSpiele.VarianteID_F, tblSpiele.RSMotiveID_F, tblSpiele.Info, tblSpiele.Kaufdatum, tblSpiele.HaendlerID_F, tblSpiele.Preis, tblSpiele.Porto, tblSerieVerlag.VerlagID_F, tblSerien.Serie, tblVerlag.Verlag, "W:\AccessDB\" & [Bilderordner] & "\" AS BilderPfad, tblSpiele.LetzteAenderung
FROM tblVerlag INNER JOIN ((tblSerien INNER JOIN tblSerieVerlag ON tblSerien.SerieID = tblSerieVerlag.SerieID_F) INNER JOIN tblSpiele ON tblSerieVerlag.SerieVerlagID = tblSpiele.SerieVerlagID_F) ON tblVerlag.VerlagID = tblSerieVerlag.VerlagID_F
ORDER BY tblSpiele.SpielID;

Das zu ändern sollte in der Tat überschaubar sein. Aber, selbst wenn ich das eingebunden habe. Bisher hat der Pfad mich immer gleich in den richtigen Ordner "befördert", weil eben auch der BilderOrdner des jeweiligen Verlages gleich mit verabeitet wurde. Den muss ich also irgendwie mit da ein binden. Erst dann kann ich auch dran denken global umzustellen, oder? Der BilderOrdner ist in der tblVerlag hinterlegt. Das mit dem Pfad selbst kann ich mir vorstellen, dass ich eben die Tabelle tblBildPfad in der Abfrage qryErfassung mit einbeziehen muss, der Rest aber zwecks Bilderordner zu "bauen", ist zu Abstrakt für mich :(.

Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 23, 2015, 00:10:26
Hi,

die Verlagstabelle ist und bleibt doch in der Abfrage drin, es kann also praktisch alles bleiben wie es ist, die beiden rot markierten Stellen sind die einzigen Änderungen an dieser Abfrage:
SELECT tblSerieVerlag.SerieVerlagID, tblSpiele.SpielID, tblSpiele.SpielNr, tblSpiele.SpTitel, tblSpiele.SerieVerlagID_F, tblSpiele.KategorieID_F, tblSpiele.Ausgabejahr, tblSpiele.Zustand, tblSpiele.Kartenzahl, tblSpiele.KartenFormatID_F, tblSpiele.Komplett, tblSpiele.Bestand, tblSpiele.Katalog, tblSpiele.SchachtelID_F, tblSpiele.VarianteID_F, tblSpiele.RSMotiveID_F, tblSpiele.Info, tblSpiele.Kaufdatum, tblSpiele.HaendlerID_F, tblSpiele.Preis, tblSpiele.Porto, tblSerieVerlag.VerlagID_F, tblSerien.Serie,
tblVerlag.Verlag, [color=red]tblBildPfad.Pfad[/color] & [Bilderordner] & "\" AS BilderPfad, tblSpiele.LetzteAenderung
FROM[color=red] tblBildPfad, [/color]tblVerlag INNER JOIN ((tblSerien INNER JOIN tblSerieVerlag ON tblSerien.SerieID = tblSerieVerlag.SerieID_F) INNER JOIN tblSpiele ON tblSerieVerlag.SerieVerlagID = tblSpiele.SerieVerlagID_F) ON tblVerlag.VerlagID = tblSerieVerlag.VerlagID_F
ORDER BY tblSpiele.SpielID;

und für das Formular bleibt alles beim Alten.

Vielleicht kann dich das konkrete Beispiel schließlich doch noch überzeugen. :-)
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 23, 2015, 18:40:38
Hallo,
ist ja schon gut, ich versuch es jetzt mal in der TestDB :). Ich habe das abgeändert, dann schlägt der Debugger an. Anmeckern tut er im Form_frmErfassungUfoBilder die Fett und unterstrichene Zeile. Das ist also der bestehende Teil rechts in der DB wo die Bilder für die Einzelkarten gelistet bzw. eingegeben werden. Ich bin also noch nicht bei den Flaggenbildern der Einzelkarten :(.
Private Sub Form_Current()
    Me.lstBmWahl = Me.BildmotivID_F
    If Nz(Me.BildDateiName, "") = "" Then
        Me.imgBild.Picture = ""
    Else
        [u][b]Me.imgBild.Picture = Me.Parent.BilderPfad & Me.BildDateiName[/b][/u]
    End If
    Select Case Me.ogrFormat
        Case 1
            Me.imgBild.Width = 2540
            Me.imgBild.Height = 3878
        Case 2
            Me.imgBild.Width = 3878
            Me.imgBild.Height = 2540
    End Select
End Sub


Was hat sich jetzt geändert? Vorher musste er mit Parent den Pfad im Hauptformular suchen.
Jetzt muss er den Pfad ja in der Tabelle suchen, bedeutet die Anweisung muss doch anders sein, da bin ich noch dabei. Ich hab dann die Tabelle in qryfrmErfassungUfoBilder die tblBildPfad hinzugefügt, damit ich das Feld Pfad ansprechen kann. Aber nein Me.imgBild.Picture = Me.Pfad & Me.Bilderordner geht nicht. Ich habe dann auch mit Parent versucht, also Me.imgBild.Picture = Me.Parent.Pfad & Me.Bilderordner aber das war dann schon die nur ohne Plan Technik. Jo, abgehängt bin ich :(
Da wird noch so die eine oder andere  Frage dazu auftreten befürchte ich, was nicht heißt dass ich es als schlecht bewerte weil es schon ein Problem ist. Das Problem sitzt ja meist hinter Bildschirm ... PEBKAC
Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 23, 2015, 21:31:40
ZitatVorher musste er mit Parent den Pfad im Hauptformular suchen.
Jetzt muss er den Pfad ja in der Tabelle suchen
Du bist wirklich ein besonders schwerer Fall. ;-)

Der Pfad kommt doch nach wie vor aus der Abfrage oder hattest du ihn als Konstante irgendwo im Formular festgelegt?
Und die Abfrage füttert das Hauptformular.

Wenn du deine aktuelle DB-Version hochlädst, kann ich dir die Stellen zeigen, die angepasst werden müssen.
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 23, 2015, 23:06:38
Hi Maggie,
ZitatDu bist wirklich ein besonders schwerer Fall. ;-)
:( ......
Da ich sie hier nicht mehr posten kann weil größer als 300 KB, habe ich sie in einer PM zugeschickt, auch mit den Bildern.
Hab dir da auch deine Fragen beantwortet.
Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 24, 2015, 01:11:49
Hallo Andreas,

Code aus "frmErfassungUfoBilder":        Me.imgBild.Picture = Me.Pfad & Me.BildDateiName
        'Me.imgBild.Picture = Me.Parent.BilderPfad & Me.BildDateiName

Wieso hast du das geändert? Das war doch überhaupt nicht notwendig!
Der Stamm-Pfad kommt weiterhin aus dem HF.
Hatte ich nicht schon mehrfach erklärt, dass sich daran nichts ändert?

ZitatUnd als Konstante im Formular, wenn du das als Konstante bezeichnest.
Nein, was du da zeigtest war lediglich das Steuerelement mit dem Zugriffspfad im HF das durch die Abfrage gefüllt wurde.

ZitatDas gleiche Thema sollte ich dann ja auch als Problem im frmErfassungUfoQuartUfoKarten bekommen
Woher kommt denn da das Bild?? Wie hast du dir das gedacht mit den Flaggen-Bildern?
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 24, 2015, 17:53:21
Hi,
ZitatWieso hast du das geändert? Das war doch überhaupt nicht notwendig!
weil der Debugger sich genau an diese Zeile gestört hat. Und ja hast du erklärt und habe 2 Threads zuvor ja nur gesagt, dass dann schon der Moment da war, wo ich eben ohne Plan etwas versucht habe.
Ich habe ja auch zuerst nur das gemacht, was du versucht hast mir zu erklären. tblBildPfad zur Abfrage qryfrmErfassungUfoBilder hinzugefügt. Dies habe ich ebenso in qryErfassungUfoKarten und qryfrmErfassung gemacht (wobei ich bei der letzten nicht sicher war ob notwendig).
Eben habe ich einen Fehler gefunden. Ich hatte in der qryfrmErfassungUfoBilder  in der SQL-Ansicht nur SELECT tblBilderZuSpiel.BildZuSpielID, tblBilderZuSpiel.BildmotivID_F, tblBilderZuSpiel.SpielID_F, tblBilderZuSpiel.BildDateiName, tblBilderZuSpiel.AnmerkungenBild, tblBilderZuSpiel.Format, [b]tblBildPfad.Pfad[/b]
FROM tblBilderZuSpiel, tblBildPfad
ORDER BY tblBilderZuSpiel.SpielID_F;

Da habe ich den fett markierten Passus ergänzt. Sieht jetzt so aus tblBildPfad.Pfad & [BilderOrdner] & "\" AS BilderPfad. Den von dir bemängelten Code Me.imgBild.Picture = Me.Pfad & Me.BildDateiName
        'Me.imgBild.Picture = Me.Parent.BilderPfad & Me.BildDateiName
habe ich wieder auf "alt" umgestellt.
Me.imgBild.Picture = Me.Parent.BilderPfad & Me.BildDateiName
Allerdings meckert er jetzt beim Öffnen der DB oder des Erfassungformulars, dass ich einen Parameter eingeben soll für BilderOrdner :-[. Klick ich okay, dann öffnet er das Formular und ich kann Bilder auswählen. Das Fenster kommt immer wieder, wenn ich in der Liste "Spiel wählen" klicke. Wenn der Debugger deswegen startet, dann meckert er in Form_frmErfassung die fett markierte Zeile an.
Private Sub Form_Current()
    Me.cboIDVerlag = Me.VerlagID_F
    Forms!frmErfassung!frmErfassungUfoQuart.Form!lstQuartettAuswahl.Requery
   [b] Forms!frmErfassung!frmErfassungUfoBilder.Form!lstBmWahl.Requery[/b]
    Me.lstSpielAuswahl = Me.txtSpielID
    Me.cboSerieVerlag.Requery
    Me.cboRSMotive.Requery
    Me.cboKartenFormat.Requery
    Me.frmErfassungUfoLagerPos.Form.cboSchrank = Null
    Me.frmErfassungUfoLagerPos.Form.cboReihe = Null
    Me.frmErfassungUfoLagerPos.Form.cboSchublade = Null
End Sub
. Sprich ich weiss nicht, wie das im Zusammenhang steht mit dem Parameterfensterchen.

ZitatWoher kommt denn da das Bild?? Wie hast du dir das gedacht mit den Flaggen-Bildern?
Das Bild ist Grundsätzlich im gleichen Pfad, W:\AccessDB\Flaggen\. Der Unterschied hier ist lediglich, dass es nicht in einem "Verlagsordner" liegt, sondern eben im Ordner Flaggen. Ich dachte mir, dass man es lösen kann wie mit dem Kartenspielbilder. Aktion bei Doppelklick oder Klick, eben wie bei dem Textfeld BildDateiName, da läuft aktuell eine VBA Prozedur ab. Allerdings ist da ja der Unterscheid, dass ich hier kein Steuerelemnt habe wie BildDateiName. Aber, deiner Frage nach zu urteilen, wird das so wohl nicht sein oder funktionieren.

Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 24, 2015, 19:30:00
Hallo Andreas,
Zitat von: derilzemer am April 24, 2015, 17:53:21Dies habe ich ebenso in qryErfassungUfoKarten und qryfrmErfassung gemacht (wobei ich bei der letzten nicht sicher war ob notwendig).
Ja natürlich, ganz besonders in qryErfassung (und sogar nur da!) wird der Bildpfad benötigt, damit er im HF angezeigt und aus den UFs von dort geholt werden kann.

ZitatAllerdings meckert er jetzt beim Öffnen der DB oder des Erfassungformulars, dass ich einen Parameter eingeben soll für BilderOrdner
Woher soll "Bilderordner" in der Abfrage "qryfrmErfassungUfoBilder" denn wohl genommen werden? Wer wenn nicht du, weiß in welcher Tabelle dieses Datenfeld steht?!
Aber wie gesagt, der Pfad wird nur einmal benötigt, und zwar in der Abfrage für das Hauptformular.

ZitatWenn der Debugger deswegen startet, dann meckert er in Form_frmErfassung die fett markierte Zeile an.
Mit welcher Fehlermeldung?

ZitatDas Bild ist Grundsätzlich im gleichen Pfad, W:\AccessDB\Flaggen\.
Das war nicht die Frage, sondern wo willst du den Namen der Bilddatei speichern? Ich habe kein dazu passendes Datenfeld in gefunden.

ZitatAllerdings ist da ja der Unterscheid, dass ich hier kein Steuerelemnt habe wie BildDateiName.
Eben. Ohne Bilddateiname kein Bild.

Es wäre gut, wenn du dir die Zusammenhänge klar machtest, ehe du wild drauf los änderst. Sonst machst du dir nur den vorhanden Code kaputt und somit unnötig viel Arbeit. Die Umstellung auf die Bereitstellung des Bildpfades via Tabelle wäre im Grunde eine "Kindergartennummer" gewesen, wenn du die dazu nötigen Anpassungen nur genauso vorgenommen hättest wie ich es beschrieben hatte.
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 24, 2015, 22:40:16
Hi,
ZitatJa natürlich, ganz besonders in qryErfassung (und sogar nur da!) wird der Bildpfad benötigt, damit er im HF angezeigt und aus den UFs von dort geholt werden kann.
Ich hab jetzt alles zurück gedreht. Der Bilderpfad kommt nur in der qryfrmErfassung vor.
SELECT tblSerieVerlag.SerieVerlagID, tblSpiele.SpielID, tblSpiele.SpielNr, tblSpiele.SpTitel, tblSpiele.SerieVerlagID_F, tblSpiele.KategorieID_F, tblSpiele.Ausgabejahr, tblSpiele.Zustand, tblSpiele.Kartenzahl, tblSpiele.KartenFormatID_F, tblSpiele.Komplett, tblSpiele.Bestand, tblSpiele.Katalog, tblSpiele.SchachtelID_F, tblSpiele.VarianteID_F, tblSpiele.RSMotiveID_F, tblSpiele.Info, tblSpiele.Kaufdatum, tblSpiele.HaendlerID_F, tblSpiele.Preis, tblSpiele.Porto, tblSerieVerlag.VerlagID_F, tblSerien.Serie, tblVerlag.Verlag, tblBildPfad.Pfad & [BilderOrdner] & "\" AS BilderPfad, tblSpiele.LetzteAenderung
FROM tblBildPfad, tblVerlag INNER JOIN ((tblSerien INNER JOIN tblSerieVerlag ON tblSerien.SerieID = tblSerieVerlag.SerieID_F) INNER JOIN tblSpiele ON tblSerieVerlag.SerieVerlagID = tblSpiele.SerieVerlagID_F) ON tblVerlag.VerlagID = tblSerieVerlag.VerlagID_F
ORDER BY tblSpiele.SpielID;
Es meckert nichts mehr, Bildzugriffe für die Spielkarten funktionieren.

ZitatDas Bild ist Grundsätzlich im gleichen Pfad, W:\AccessDB\Flaggen\.
Das war nicht die Frage, sondern wo willst du den Namen der Bilddatei speichern? Ich habe kein dazu passendes Datenfeld in gefunden.
Jo ich hab mal im Thread ganz am Anfang geschaut. Da habe ich mal wie immer oder so oft bei solchen Aktionen etwas falsch interpretiert. Egal wie, ich habe das Feld in tblQuKarten wieder angelegt, LandesFlagge Typ kurzer Text.

SELECT tblQuartette.QuartettID, tblQuartette.SpielID_F, tblQuartette.QuartettKz, tblQuartette.QuartettBezeichnung, tblQuKarten.QuKartenID, tblQuKarten.QuartettID_F, tblQuKarten.KartenNr, tblQuKarten.Kartenbezeichnung, tblQuKarten.ModellTyp, tblQuKarten.Druckdatum, tblQuKarten.LandesFlagge, [QuartettKz] & [KartenNr] AS KartenKZ
FROM tblSpiele INNER JOIN (tblQuartette INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
ORDER BY tblQuartette.QuartettKz;

Ich habe jetzt noch das Textefeld angelegt, die Steuerelemnte entsprechend "bestückt, Code für das Ufo gesetzt und angepasst, geht. Der Bilderpfad öffnet sich, jedoch im entsprechenden Verlag. Das soll ja im Fall der Flaggen eben ein anderes Verzeichnis sein. Ich kann das über den Code lösen, das funktioniert bis, ja bis ich die DB wieder schließe und öffne. Dann muss ich ein Bild wieder öffnen, damit sie initalisiert werden. Ich weiss, das hatten wir schon mal :-( ....

Private Sub txtFlaggenbild_DblClick(Cancel As Integer)
    Dim dlgOpen As FileDialog
    Set dlgOpen = Application.FileDialog(msoFileDialogFilePicker)
    With dlgOpen
      'Set title of the dialog box
        .Title = "Wähle eine Datei aus"
      'Pathvar
       [b] .InitialFileName = "W:\AccessDB\Flaggen\"[/b]
        '.InitialFileName = Me.Parent.Parent.BilderPfad
      'Add a filter that includes PNG, GIF and JPEG images and make it the first item in the list.
        .Filters.Add "Images", "*.png; *.gif; *.jpg; *.jpeg", 1
      ' Allow the user to make multiple selections in the dialog box.
        .AllowMultiSelect = False
      ' Show the dialog box. If the .Show method returns True, the user picked at least one file.
        If .Show Then _
        Me.txtFlaggenbild = Dir(.SelectedItems(1))
    End With
End Sub

Wenn es über die Datei BildPfad ginge wäre das natürlich eleganter und vor allem die Bilder wären dauerhaft da :(. Wie kann ich das bewerkstelligen?
Zitat
Es wäre gut, wenn du dir die Zusammenhänge klar machtest, ehe du wild drauf los änderst. Sonst machst du dir nur den vorhanden Code kaputt und somit unnötig viel Arbeit. Die Umstellung auf die Bereitstellung des Bildpfades via Tabelle wäre im Grunde eine "Kindergartennummer" gewesen, wenn du die dazu nötigen Anpassungen nur genauso vorgenommen hättest wie ich es beschrieben hatte.
Sorry, bin ja in mich gegangen und hab korrigiert. Wie schon erwähnt, auch wenn du es nicht glauben magst. Das ist nicht stur, sondern pures "ich versteh es nicht oder falsch" :(

Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 28, 2015, 19:47:01
Hallo Andreas,

bist du inzwischen schon weiter gekommen? Sonst wollte ich dir vorschlagen, nicht nur den zusammengesetzten Pfad, sondern auch den Bildpfad (Stammverzeichnis) allein als zusätzliches Feld mit in die Abfrage und ins Hauptformular zu nehmen. Dann kannst du das bei der Anzeige der Länder-Flaggen folgendermaßen nutzen:
=Parent.Parent.Pfad & "Flaggen\" & BildNameFlaggen

Zweimal "Parent" weil Ufo im Ufo.
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 28, 2015, 22:11:35
Hi Maggie,
nur soweit wie ich beschrieben hatte. Ich kam gedanklich nicht mehr weiter, ich sag wie es ist.
Ich hab jetzt mal versucht deinen Vorsvchlag umzusetzen. Ich habe im qryfrmErfassung zusätzlich den BildPfad als Feld hinzugefügt. Die Abfrage sieht dann so aus
SELECT tblSerieVerlag.SerieVerlagID, tblSpiele.SpielID, tblSpiele.SpielNr, tblSpiele.SpTitel, tblSpiele.SerieVerlagID_F, tblSpiele.KategorieID_F, tblSpiele.Ausgabejahr, tblSpiele.Zustand, tblSpiele.Kartenzahl, tblSpiele.KartenFormatID_F, tblSpiele.Komplett, tblSpiele.Bestand, tblSpiele.Katalog, tblSpiele.SchachtelID_F, tblSpiele.VarianteID_F, tblSpiele.RSMotiveID_F, tblSpiele.Info, tblSpiele.Kaufdatum, tblSpiele.HaendlerID_F, tblSpiele.Preis, tblSpiele.Porto, tblSerieVerlag.VerlagID_F, tblSerien.Serie, tblVerlag.Verlag, [b]tblBildPfad.Pfad[/b], tblBildPfad.Pfad & [Bilderordner] & "\" AS BilderPfad, tblSpiele.LetzteAenderung
FROM tblBildPfad, tblVerlag INNER JOIN ((tblSerien INNER JOIN tblSerieVerlag ON tblSerien.SerieID = tblSerieVerlag.SerieID_F) INNER JOIN tblSpiele ON tblSerieVerlag.SerieVerlagID = tblSpiele.SerieVerlagID_F) ON tblVerlag.VerlagID = tblSerieVerlag.VerlagID_F
ORDER BY tblSpiele.SpielID;

Im qryfrmErfaqssungUfoKarten habe ich ein Textfeld hinzugefügt, txtBildFlagge.
SELECT tblQuartette.QuartettID, tblQuartette.SpielID_F, tblQuartette.QuartettKz, tblQuartette.QuartettBezeichnung, tblQuKarten.QuKartenID, tblQuKarten.QuartettID_F, tblQuKarten.KartenNr, tblQuKarten.Kartenbezeichnung, tblQuKarten.ModellTyp, tblQuKarten.Druckdatum, tblQuKarten.BildFlagge, [QuartettKz] & [KartenNr] AS KartenKZ
FROM tblSpiele INNER JOIN (tblQuartette INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
ORDER BY tblQuartette.QuartettKz;

Dem Bildelement (für die Flagge) habe ich als Steuerelementinhalt txtBildFlagge zugeordnet. Dann wollte ich den gleichen Code, den ich auch schon im frmErfassungUfoBilder verwende nutzen (entsprechend angepasst)
Private Sub txtBildFlagge_DblClick(Cancel As Integer)
    Dim dlgOpen As FileDialog
    Set dlgOpen = Application.FileDialog(msoFileDialogFilePicker)
    With dlgOpen
      'Set title of the dialog box
        .Title = "Wähle eine Datei aus"
      'Pathvar
        .InitialFileName = Parent.Parent.Pfad & "Flaggen\" & BildFlagge
      'Add a filter that includes PNG, GIF and JPEG images and make it the first item in the list.
        .Filters.Add "Images", "*.png; *.gif; *.jpg; *.jpeg", 1
      ' Allow the user to make multiple selections in the dialog box.
        .AllowMultiSelect = False
      ' Show the dialog box. If the .Show method returns True, the user picked at least one file.
        If .Show Then _
        Me.txtBildFlagge = Dir(.SelectedItems(1))
    End With
End Sub


Jetzt springt er aber erstmal in mein lokales Verzeichnis User Verzeichnis (Eigene Dateien). Selbst wenn ich jetzt das Verzeichnis auswähle, dann springt der Debugger an
Laufzeitfelher '-2147352567 (80020009)':
Diese Datensatzgruppe kann nicht aktualisiert werden.
Wenn ich dann auf Debuggen gehe, dann springt er zum oben aufgeführten Code in gelb markierte Zeile (siehe Bild)
Was habe ich falsch gemacht bzw. vergessen?

Gruß Andreas




Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 29, 2015, 00:22:12
Was mich wundert:
Du wolltest doch die Flaggen-Bilder in einem eigenen Ordner unterbringen und nicht bei den Verlagen.

Außerdem ist es nicht sinnvoll, die Datenfelder (BildFlagge/BildNameFlaggen) ständig umzubenennen, das erschwert das Nachvollziehen der Beispiele. Oder du musst immer wieder neue Test-DBs mit dem aktuellen Stand hochladen.

ZitatIm qryfrmErfaqssungUfoKarten habe ich ein Textfeld hinzugefügt, txtBildFlagge.
In der Abfrage gibt es das Datenfeld "BildFlagge" und nicht "txtBildFlagge".
ZitatDem Bildelement (für die Flagge) habe ich als Steuerelementinhalt txtBildFlagge zugeordnet.
Ich hatte etwas anderes vorgeschlagen.
Hier wird der vollständige Zugriffspfad gebraucht.

ZitatJetzt springt er aber erstmal in mein lokales Verzeichnis
Dann stimmt der hier angegebene Pfad nicht:
.InitialFileName = Parent.Parent.Pfad & "Flaggen\" & BildFlagge

ZitatDiese Datensatzgruppe kann nicht aktualisiert werden.
Dann zeige bitte den SQL-Code der Abfrage zum zugehörigen Formular.


PS:
Wenn ich mich unverständlich ausdrücke, dann sage es mir bitte. Möglicherweise bin ich nach zig Jahren in diesem Metier betriebsblind und unsensibel für Anfängerprobleme geworden. Falls es dich tröstet, so nähert sich meine Frustration vermutlich so langsam an deine an. ;-)
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: derilzemer am April 29, 2015, 18:14:30
Hi Maggie,
ZitatWas mich wundert: Du wolltest doch die Flaggen-Bilder in einem eigenen Ordner unterbringen und nicht bei den Verlagen.
Nein, ich habe immer gesagt, dass der Flaggen Ordner im gleichen Ordner liegt wie die Verlagsbilder. Bilder --> W:\AccessDB\{Verlag}, Flaggen --> W:\AccessDB\{Flaggen}. Wenn dies aber ein Problem ist, dann extrahiere ich den eben, an dem sollte es nicht scheitern.

ZitatAußerdem ist es nicht sinnvoll, die Datenfelder (BildFlagge/BildNameFlaggen) ständig umzubenennen, das erschwert das Nachvollziehen der Beispiele. Oder du musst immer wieder neue Test-DBs mit dem aktuellen Stand hochladen.
Da stimme ich dir zu, jedoch habe ich hier einfach gekürzt, weil BildNameFlagge sinnfrei ist. Deshalb BildFlaggen. Aber ich verstehe deinen Einwand. In der Vergangenheit habe ich mich da auch bemüht, gleich einen sprechenden Namen zu setzen.

ZitatIn der Abfrage gibt es das Datenfeld "BildFlagge" und nicht "txtBildFlagge".
Habe ich angepasst, wobei ich hier wirklich dachte, dass es ja über den Steuerelementinhalt korrekt angesprochen wird und da war es ja BildFlaggen. Aber ich habe es angepasst.

ZitatIch hatte etwas anderes vorgeschlagen. Hier wird der vollständige Zugriffspfad gebraucht.
Da weiss ich nicht, wie ich es sonst machen sollte, sprich da versteh ich wohl den Vorschlag nicht richtig. Dein Vorschlag war ja
ZitatSonst wollte ich dir vorschlagen, nicht nur den zusammengesetzten Pfad, sondern auch den Bildpfad (Stammverzeichnis) allein als zusätzliches Feld mit in die Abfrage und ins Hauptformular zu nehmen.
Habe ich ausgeführt, also zusätzlich zum zusammengesetzten Pfad das Feld Pfad in qryfrmErfassung hinzugefügt. Unsicher bin ich dann, wenn du von ....und ins HF... aufzunehmen sprichst. Wenn ich das in der Query hinterlege, dann soll ich im HF (frmErfassung) noch das Feld Pfad setzen, ein Textfeld also? Hier wieder einer meiner Gaps was Verständnis angeht :(.

ZitatDann stimmt der hier angegebene Pfad nicht
Ich habe eben noch einmal das ganze durchgeschaut, Korrekturen vorgenommen wo nötig und siehe da er springt jetzt mit Doppelklick in das Flaggen Verzeichnis rein. Aber es ist immer noch ein Problem beim erneuten öffnen der DB, dann sind die Bilder wieder weg und ich muss eines neu setzen, damit alle anderen angezeigt werden. Das ist dann wieder das Thema, dass ich irgendwo deinen Vorschlag nicht korrekt befolgt habe (unbewusst), z.B. dass ich den absoluten Pfad setzen muss. Aktuell sieht der Code (Aktion bei Doppelklick) wie folgt aus
Private Sub BildFlaggen_DblClick(Cancel As Integer)
    Dim dlgOpen As FileDialog
    Set dlgOpen = Application.FileDialog(msoFileDialogFilePicker)
    With dlgOpen
      'Set title of the dialog box
        .Title = "Wähle eine Datei aus"
      'Pathvar
        .InitialFileName = Parent.Parent.Pfad & "Flaggen\" & BildFlaggen
      'Add a filter that includes PNG, GIF and JPEG images and make it the first item in the list.
        .Filters.Add "Images", "*.png; *.gif; *.jpg; *.jpeg", 1
      ' Allow the user to make multiple selections in the dialog box.
        .AllowMultiSelect = False
      ' Show the dialog box. If the .Show method returns True, the user picked at least one file.
        If .Show Then _
        Me.BildFlaggen = Dir(.SelectedItems(1))
    End With
End Sub


Hier noch die SQL zum Hauptformular qryfrmErfassung und qryfrmErfassungUfoKarten

qryfrmErfassung
SELECT tblSerieVerlag.SerieVerlagID, tblSpiele.SpielID, tblSpiele.SpielNr, tblSpiele.SpTitel, tblSpiele.SerieVerlagID_F, tblSpiele.KategorieID_F, tblSpiele.Ausgabejahr, tblSpiele.Zustand, tblSpiele.Kartenzahl, tblSpiele.KartenFormatID_F, tblSpiele.Komplett, tblSpiele.Bestand, tblSpiele.Katalog, tblSpiele.SchachtelID_F, tblSpiele.VarianteID_F, tblSpiele.RSMotiveID_F, tblSpiele.Info, tblSpiele.Kaufdatum, tblSpiele.HaendlerID_F, tblSpiele.Preis, tblSpiele.Porto, tblSerieVerlag.VerlagID_F, tblSerien.Serie, tblVerlag.Verlag, tblBildPfad.Pfad, tblBildPfad.Pfad & [Bilderordner] & "\" AS BilderPfad, tblSpiele.LetzteAenderung
FROM tblBildPfad, tblVerlag INNER JOIN ((tblSerien INNER JOIN tblSerieVerlag ON tblSerien.SerieID = tblSerieVerlag.SerieID_F) INNER JOIN tblSpiele ON tblSerieVerlag.SerieVerlagID = tblSpiele.SerieVerlagID_F) ON tblVerlag.VerlagID = tblSerieVerlag.VerlagID_F
ORDER BY tblSpiele.SpielID;


qryfrmErfassungUfoKarten
SELECT tblQuartette.QuartettID, tblQuartette.SpielID_F, tblQuartette.QuartettKz, tblQuartette.QuartettBezeichnung, tblQuKarten.QuKartenID, tblQuKarten.QuartettID_F, tblQuKarten.KartenNr, tblQuKarten.Kartenbezeichnung, tblQuKarten.ModellTyp, tblQuKarten.Druckdatum, tblQuKarten.BildFlaggen, [QuartettKz] & [KartenNr] AS KartenKZ
FROM tblSpiele INNER JOIN (tblQuartette INNER JOIN tblQuKarten ON tblQuartette.QuartettID = tblQuKarten.QuartettID_F) ON tblSpiele.SpielID = tblQuartette.SpielID_F
ORDER BY tblQuartette.QuartettKz;



ZitatWenn ich mich unverständlich ausdrücke, dann sage es mir bitte. Möglicherweise bin ich nach zig Jahren in diesem Metier betriebsblind und unsensibel für Anfängerprobleme geworden.
Nochmal, das liegt nicht an deinen Erklärungen, auch wenn es sich auch als nach .......Mann, das ist doch klar anhört. Das verstehe ich aber wiederrum, weil es eben für dich "normal" ist. Für mich nicht wirklich, schon gar nicht trivial.

ZitatFalls es dich tröstet, so nähert sich meine Frustration vermutlich so langsam an deine an. ;-)
Das will ich eben vermeiden, weil ich keinen Bock habe den Eindruck zu erwecken, ich will mir alles von anderen (in dem Fall dir) machen lassen. Anfänglich war ich richtig heiß, wenn Antworten kamen auch die Antworten zu geben. Jetzt bekomme ich etwas schluckauf, wenn ich dann ... nicht mein Vorschlag oder anderes lese. Dann kommt der Faktor, lass es einfach, du kannst auch ohne das Feature leben :(. Wenn nötig kann ich natürlich dir die DB zukommen lassen, da ich sie wie schon erwähnt aufgrund der Größe nicht hochgeladen bekomme (trotz Datenreduzierung).

Gruß Andreas
Titel: Re: Bilder werden nur angezeigt, wenn erneut ein Bild gesetzt wird...
Beitrag von: MaggieMay am April 29, 2015, 22:43:32
Hallo Andreas,

1)
Zitat von: derilzemer am April 29, 2015, 18:14:30Nein, ich habe immer gesagt, dass der Flaggen Ordner im gleichen Ordner liegt wie die Verlagsbilder. Bilder --> W:\AccessDB\{Verlag}, Flaggen --> W:\AccessDB\{Flaggen}.
ich meinte damit, dass ich die Flaggen-Bilder in den Verlagsordnern gefunden hatte und nicht im Flaggen-Ordner, aber vielleicht bin ich da auch in einer älteren Version des Bilderordners gelandet.

2)
ZitatIn der Abfrage gibt es das Datenfeld "BildFlagge" und nicht "txtBildFlagge".
Der Hinweis bezog sich auf deine Aussage:
ZitatIm qryfrmErfaqssungUfoKarten habe ich ein Textfeld hinzugefügt, txtBildFlagge.
Das ist so nicht zutreffend, in der Abfrage wurde das Datenfeld "BildFlagge" hinzugefügt und im Formular das Textfeld "txtBildFlagge".
Es ging mir hier lediglich um deine missverständliche bzw. "falsche" Aussage.

3)
ZitatAber ich habe es angepasst.
Was auch immer du da angepasst hast, das wüsste ich gern genauer.

4)
Zitat
ZitatDem Bildelement (für die Flagge) habe ich als Steuerelementinhalt txtBildFlagge zugeordnet.
Ich hatte etwas anderes vorgeschlagen.
Hier wird der vollständige Zugriffspfad gebraucht.
Zu diesem Zweck wurde der Pfad doch noch zusätzlich mit in die Abfrage für das HF genommen, und natürlich auch als Steuerelement dort eingefügt, so dass man aus den UFs darauf zugreifen kann.
ZitatDa weiss ich nicht, wie ich es sonst machen sollte
Wie, das hatte ich auch schon erwähnt, und zwar mit Parent.Parent.Pfad & "Flaggen\" & BildFlagge

Anmerkung:
Die bessere Lösung wäre nach aktuellem Stand vermutlich, die Datenfelder entweder einzeln in die Abfrage zu bringen und je nach Bedarf variabel zu verwenden, oder die benötigten Pfade gebrauchsfertig zu liefern, also einmal:
tblBildPfad.Pfad & "Flaggen\" AS FlaggenPfad,
und zum zweiten:tblBildPfad.Pfad & tblVerlag.Bilderordner & "\" AS BilderPfad

5)
ZitatAber es ist immer noch ein Problem beim erneuten öffnen der DB, dann sind die Bilder wieder weg
Das habe ich heute Abend auch erlebt, aber irgendwann ging es wieder. Die Ursache ist mir (noch) nicht klar.

ZitatDann kommt der Faktor, lass es einfach, du kannst auch ohne das Feature leben :(.
Aufgeben gibt's nicht! ;-)