Hej Problemet är att Like operatoner mot null värden ger null. Vilket inte är sant.SQL-uttryck
Visa = "SELECT * FROM Kunder WHERE Kunder.Refnr LIKE '" & Replace(Refnr, "'", "''") & "%' AND Kunder.Enamn LIKE '" & Replace(Enamn, "'", "''") & "%' AND Kunder.Fnamn LIKE '" & Replace(Fnamn, "'", "''") & "%' AND Kunder.TelA LIKE '" & Replace(Tel, "'", "''") & "%' AND Kunder.Adress LIKE '" & Replace(Adress, "'", "''") & "%' ORDER BY Kunder.Enamn, Kunder.Fnamn"
Använder mig av detta SQL uttryck. Variablerna Refnr, Enamn m.m. skickas från en tidigare sida. (användaren måste inte ange alla kriterier på föregåeende sida)
När jag ska presenter resultatet får jag inte med dem där det saknas ett värde i fältet. Om tex. Kunder.Adress är tomt så listas inte den posten.
Varför???
Trodde att %-tecknen fungerade som *.
Hur gör jag för att posten ska listas även om adressfältet i databasen är tomt???
Tack på förhandSv: SQL-uttryck
Förslag:
<code>
Dim strWhere
If Len(Refnr) > 0 Then
strWhere = strWhere " AND Kunder.Refnr LIKE '" & Replace(Refnr, "'", "''") & "%'"
End If
If Len(Enamn) > 0 Then
strWhere = strWhere " AND Kunder.Enamn LIKE '" & Replace(Enamn, "'", "''") & "%'"
End If
If Len(Fnamn) > 0 Then
strWhere = strWhere " AND Kunder.Fnamn LIKE '" & Replace(Fnamn, "'", "''") & "%'"
End If
If Len(Tel) > 0 Then
strWhere = strWhere " AND Kunder.TelA LIKE '" & Replace(Tel, "'", "''") & "%'"
End If
If Len(Adress) > 0 Then
strWhere = strWhere " AND Kunder.Adress LIKE '" & Replace(Adress, "'", "''") & "%'"
End If
If Len(strWhere) Then
Visa = "SELECT * FROM Kunder WHERE " & Mid(strWhere, 5) & " ORDER BY Kunder.Enamn, Kunder.Fnamn"
Else
Visa = "SELECT * FROM Kunder ORDER BY Kunder.Enamn, Kunder.Fnamn"
End If
</code>
Om inte det är tillräckligt kan du tillåta nullvärden att uppfylla vilkoret:
<code>
If Len(Refnr) > 0 Then
strWhere = strWhere " AND (Kunder.Refnr Is Null OR Kunder.Refnr LIKE '" & Replace(Refnr, "'", "''") & "%')"
End If
</code>