PDA

Vollständige Version anzeigen : Like


Michael
09.06.2012, 15:08
Hallo ich möchte folgende mittels Like innerhalb einer Abfrage einen entsprechenden Datensatz finden.

Nach diesem Inhalt soll gesucht DAS#7g0609616_________#FFF2156447#.

Das ganze läuft wie folgt ab:

Dim A_laser As Variant
Dim L_laser As Variant
Dim rs As Recordset, fld As Field, i As Integer
Dim rs1 As Recordset
Dim strSQL As String, strFeldListe As String
Dim strSQL1 As String
L_laser = "*" & Me.L_laser & "*"
A_laser = "*" & Me.A_laser & "*"



If Me.Zaehler = 10 Then
Set rs = CurrentDb.OpenRecordset("Select * From UEberschrift Where ID_Chargen_Ueberschrift = '" & pID & "'")
Do While Not rs.EOF
For Each fld In rs.Fields
If fld.Name Like "var*" And Not IsNull(fld.Value) Then
strFeldListe = strFeldListe & ", " & fld.Name & " AS [" & fld.Value & "]"
End If
Next fld
rs.MoveNext
Loop
strSQL = "Select ID, Mid([VAR_08],24,10) AS ID_EX, ID_Chargen_Ueberschrift, Sachnummer, Customer, MGRNR, Daten_TimeStamp, Cre_TimeStamp"
strSQL = strSQL & strFeldListe & " From Chargen_Chargen_Daten"
strSQL = strSQL & " WHERE Chargen_Chargen_Daten.VAR_08 Like '" & L_laser & "' or Chargen_Chargen_Daten.VAR_21 Like '" & A_laser & "'"
CurrentDb.QueryDefs("expQuery").SQL = strSQL

Ergebnis: Es wird kein Datensatz gefunden.
Packe ich das Ganze ohne Joker, in eine Abfrage, wird der Datensatz angezeigt.
mfg,
Michael

Lanz Rudolf
09.06.2012, 15:31
Hallo
mache doch einmal Nach
strSQL = strSQL & " WHERE Chargen_Chargen_Daten.VAR_08 Like '" & L_laser & "' or Chargen

Debug.Print strSQL

und schau Dir das im Direkfenster an

Michael
09.06.2012, 22:37
Hallo,
das steht so im Direktfenster drin.
or Chargen_Chargen_Daten.VAR_21 Like '*EPB#7P0609616_________#CTR2156449#*'

Ich erkenne jetzt nicht was falsch wäre....
mfg,
Michael

Anne Berg
09.06.2012, 23:24
Hallo,

ist dir bewusst, dass dein o.g. Suchstring Platzhalterzeichen enthält?
Um nach diesen Zeichen mit LIKE zu suchen, braucht es eine spezielle Syntax, die in der Access-Hilfe zu finden ist:Die Sonderzeichen öffnende Klammer ([ ), das Fragezeichen (?), das Nummernzeichen (#) und der Stern (*) können zum direkten Vergleich nur verwendet werden, wenn sie in eckigen Klammern stehen.

Nachtrag: ich möchte folgende mittels Like innerhalb einer Abfrage ... Gewöhne dir bitte an, deine Beiträge vor dem Posten Korrektur zu lesen, das erspart den potentiellen Helfern unnötige Kopfstände.

Lanz Rudolf
10.06.2012, 06:14
Hallo
wie Anne richtig sagt alle # in [] setzen so [#]

"*EPB[#]7P0609616_________[#]CTR2156449[#]*"

das sollte gehen

evtl. musst du sowas einsetzen:
Deinfeld = Replace(Deinfeld, "#", "[#]")



Auszug aus meiner doc:

• Wenn Sie Platzhalterzeichen verwenden, um nach einem Sternchen (*), einem Fragezeichen (?), einem
Nummernzeichen (#), einer offenen eckigen Klammer ([) oder einem Bindestrich (-) zu suchen, müssen Sie das zu
suchende Zeichen in Klammern einschliessen. Wenn Sie beispielsweise nach einem Fragezeichen suchen, geben Sie
in das Dialogfeld Suchen Folgendes ein: [?]. Wenn Sie gleichzeitig nach einem Bindestrich und anderen Zeichen
suchen, setzen Sie den Bindestrich entweder vor oder nach allen anderen Zeichen innerhalb der Klammern. Folgt
jedoch auf die offene Klammer ein Ausrufezeichen, setzen Sie den Bindestrich nach dem Ausrufezeichen. Wenn Sie
nach einem Ausrufezeichen (!) suchen, müssen Sie diese nicht in Klammern setzen.
• Sie können nicht gleichzeitig nach der offenen und der geschlossenen eckigen Klammer ([ ]) suchen, da Microsoft
Access diese Kombination als leere Zeichenfolge interpretiert. Sie müssen die Anfangs- und Endklammern in
Klammern angeben ([[ ]]).

Michael
10.06.2012, 11:00
Hallo zusammen,
danke für eure Antworten.
Jetzt funkt es, so wie es sein soll.

mfg,
Michael