PCav
asked on
Why can't I use the Like Predicate
I'm using ADO to connect to an Access 95 database through a DSN. The problem is I have SQL statement similar to the following
SELECT * FROM [Table] WHERE [FieldName] Like('*" & FieldValue & "*') ORDER BY [FieldName2]
Now there is nothing wrong with the SQL string because if I go into Access and put this as a query it returns the correct records. The problem is when I run the following line:
rs.Open sSQL, "DSN=Town;uid=;pwd=", adOpenForwardOnly, adLockReadOnly
I get this error:
Expression cannot be used with the Like predicate. in query expression '[Owner] alike('*Name*')'.
SELECT * FROM [Table] WHERE [FieldName] Like('*" & FieldValue & "*') ORDER BY [FieldName2]
Now there is nothing wrong with the SQL string because if I go into Access and put this as a query it returns the correct records. The problem is when I run the following line:
rs.Open sSQL, "DSN=Town;uid=;pwd=", adOpenForwardOnly, adLockReadOnly
I get this error:
Expression cannot be used with the Like predicate. in query expression '[Owner] alike('*Name*')'.
ASKER
I no longer get an error, but it doesn't return any records even though there are some that me the criteria.
Use the same answer as BeerMan gave, but include the asterisks inside the quotes. There's no asterisks in there.
"SELECT * From [Table] " & "WHERE [Field] LIKE " & " ' " & query & " '
The quotes have to be Outside.
The quotes have to be Outside.
ASKER
They are inside the quotes if you look it say 'query' where query = *Mr.Jones*.
ASKER
This is what my final SQL Statement evalutes to
SELECT [ID],[Location],[Owner],[M ap],[Lot], [Unit] FROM [Town] WHERE [Owner] Like '*diesso*' ORDER BY [Owner]
the odd thing is if I run this exact same query in Access it returns one record (which is what it is supposed to do), but doing
rs.open ABOVESQLSTATEMENT, cn, adOpenForwardOnly, adLockReadOnly
where rs is an ADODB.Recordset object and cn is a ADODB.Connection object I get rs.eof evaluting to TRUE. Now I know the connection to the database is valid because I can run a different SQL Query w/out the like predicate and it returns the way it is suppose to.
SELECT [ID],[Location],[Owner],[M
the odd thing is if I run this exact same query in Access it returns one record (which is what it is supposed to do), but doing
rs.open ABOVESQLSTATEMENT, cn, adOpenForwardOnly, adLockReadOnly
where rs is an ADODB.Recordset object and cn is a ADODB.Connection object I get rs.eof evaluting to TRUE. Now I know the connection to the database is valid because I can run a different SQL Query w/out the like predicate and it returns the way it is suppose to.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks that works.
dim query as string
query = "Mr. Jones" ' Exemple !
query = "*" & query & "*"
"SELECT * From [Table] " & "WHERE [Field] LIKE " & "'" & query & "' "