Neuigkeiten:

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

Mobiles Hauptmenü

Frage zum gezielten Auslesen aus einer Tabelle

Begonnen von Gockel67, April 18, 2026, 10:05:36

⏪ vorheriges - nächstes ⏩

Gockel67

Moin Gemeinde,

ich habe ein Problem bei dem ich leider alleine nicht weiterkomme.

Gegeben ist eine Tabelle 'tblKartenBilder'. Diese enthält relative Pfade zu Bilddateien.

Hier mal der Aufbau:

ID   ID_Haupttabelle   Bildpfad
1   1   \Anlagen\Karten Bilder\LS 001\LS 001 - 00001.jpg
2   1   \Anlagen\Karten Bilder\LS 001\LS 001 - 00001_01.jpg
3   2   \Anlagen\Karten Bilder\K 001\K 001 - 00059.jpg
4   3   \Anlagen\Karten Bilder\K 001\K 001 - 00060.jpg
5   4   \Anlagen\Karten Bilder\K 001\K 001 - 00061.jpg
6   5   \Anlagen\Karten Bilder\K 001\K 001 - 00053.jpg
7   6   \Anlagen\Karten Bilder\K 001\K 001 - 00052.jpg
8   7   \Anlagen\Karten Bilder\K 001\K 001 - 00051.jpg
9   8   \Anlagen\Karten Bilder\K 001\K 001 - 00058.jpg
10   9   \Anlagen\Karten Bilder\K 001\K 001 - 00056.jpg
.
.
.
ID   ID_Haupttabelle   Bildpfad
134   110   \Anlagen\Karten Bilder\PO 001\PO 001 - 00001.jpg
135   110   \Anlagen\Karten Bilder\PO 001\PO 001 - 00001_01.jpg
136   110   \Anlagen\Karten Bilder\PO 001\PO 001 - 00001_02.jpg
137   110   \Anlagen\Karten Bilder\PO 001\PO 001 - 00001_03.jpg
138   111   \Anlagen\Karten Bilder\PO 001\PO 001 - 00002.jpg
139   111   \Anlagen\Karten Bilder\PO 001\PO 001 - 00002_01.jpg
140   111   \Anlagen\Karten Bilder\PO 001\PO 001 - 00002_02.jpg
141   111   \Anlagen\Karten Bilder\PO 001\PO 001 - 00002_03.jpg
142   112   \Anlagen\Karten Bilder\PO 001\PO 001 - 00003.jpg
143   112   \Anlagen\Karten Bilder\PO 001\PO 001 - 00003_01.jpg
144   112   \Anlagen\Karten Bilder\PO 001\PO 001 - 00003_02.jpg

In einem Kombinationsfeld soll der entsprechende Suchbegriff ausgewählt werden. Also z.B. 'K 001' oder 'G 001' oder 'P 001' usw.

Es sollen dann nur die Bilder in einem Endlosformular angezeigt werden die dem Suchbegriff entsprechen.

Für einen ersten Test habe ich mir einen Code aus dem Internet gesucht der zwar ohne Fehlermeldung durchläuft aber auch kein Ergebins bringt.

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim suchBegriff As String

' Suchbegriff aus einem Formularfeld nehmen
suchBegriff = Karton.Value ' Sucht nach Einträgen, die mit "Test" beginnen

' SQL-String erstellen (LIKE verwenden)
strSQL = "SELECT * FROM tblKartenBilder WHERE Bildpfad LIKE '*" & suchBegriff & "';"

' Recordset öffnen
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL)

' Ergebnisse durchlaufen
Do While Not rs.EOF
    Debug.Print rs!Bildpfad
    rs.MoveNext
Loop

rs.Close
Set rs = Nothing
Set db = Nothing

Was mache ich falsch?

Ich füge eine Testdatei mal an.

Wünsche allen ein schönes Wochenende
Jörg

https://www.transfernow.net/dl/20260418PmnlYLE2

mmarschner

Hallo Jörg,

Dein SQL String ist nicht ganz korrekt. So wie Du es geschrieben hast, werden nur Begriffe am Ende des betreffenden Zellenfeldes gesucht.

Es muss so aussehen:

LIKE '*" & suchBegriff & "*';"

Dann klappt es auch.

Michael

andyfau

Hallo Jörg,

es ist nicht notwendig ein neues Recordset mit Do While zu durchlaufen um dann die Zeilen des Formulars zu füllen. Ein einfacher Filter tuts auch.

Erstelle Dir mit Hilfe des Formulargenerators ein Formular (tabellarisch=Endlosformular) zur Tabelle tblKartenBilder.

Dann setzt Du in den Kopf des Formulars das Kombinationsfeld, welches als Datenquelle die Tabelle mit den Abkürzungen hat.
Achte bei den Einstellungen auf Anzahl Spalten 2, gebundene Spalte 2, Spaltenbreiten 0;2cm

Setze in das Click-Ereignis des (Kombinations)Suchfeldes folgenden Code:

Private Sub Suchfeld_Click()
Dim strFilter As String
  Me.FilterOn = False
  strFilter = "[Bildpfad] LIKE '*" & Me.Suchfeld & "*'"
  Me.Filter = strFilter
  Me.FilterOn = True
End Sub

Beste Grüße
Andreas

Knobbi38

Hallo Jörg,

ich weiß jetzt nicht, ob es Zufall ist, aber Informationen in Ordnernamen und Dateinamen zu verwalten, ist keine gute Idee. Eine Kategorisierung gehört als Fremdschlüssel in deine Bilddatenbank und damit entfallen sowohl die Abhängigkeiten zu den Ordnernamen als auch dem besonderen Format der Dateinamen. Das solltest du ändern.

Anbei jedoch mal eine Lösung auf Basis des vorgegebenen Dateiformats.

Knobbi38

PS:
Bitte lade deine Beispieldatenbanken nächstes mal hier im Forum hoch - auf unbekannte Filehoster wird nicht gerne zugegriffen.

Gockel67

@andyfau Danke. Auf den Filter bin ich kurz vorher auch gekommen :-D
@Knobbi38 Danke für die Zip. Werde ich mir anschauen. Das mit dem hochladen hatte ich iwie nicht hinbekommen.

Knobbi38

#5
@andyfau

Wenn man schon eine Kombo so einsetzt, sollte tatsächlich auch eine Beziehung zwischen den Tabellen bestehen und dann braucht nicht mehr mit Like und Platzhaltern hantiert werden, sondern kann direkt mit den Fremdschlüssel auf Gleichheit gefiltert werden.  Leider wurde das in der Beispieldatenbank falsch implementiert bzw. der Fremdschlüssel fehlt noch.

Übrigens kann das Suchmuster mit den Platzhaltern so nicht richtig funktionieren, weil z.B. diese Suchmuster "S 001" und "LS 001" in Verbindung mit den Platzhaltern keine eindeutigen Ergebnisse liefern. Hier müsste das Suchmuster entsprechend geändert werden:
strFilter = "[Bildpfad] LIKE '*[\]" & Me.Suchfeld & "*'"
Das Muster wird somit nur auf den Anfang des Ordner- bzw. Dateinamens angewendet - ebenfalls ein Designfehler beim Datenmodell.

Wie bereits angedeutet, sollte das Datenmodell dahingehend von Jörg noch geändert werden, denn das würde einiges vereinfachen.

Gruß Knobbi38