FIX: ADO Filter Fails if Filter String Contains '*strval'

ID: Q181487


The information in this article applies to:


SYMPTOMS

Receiving error 3001 using an ADODB.Recordset when the filter string contains '*stringvalue' pattern for the string column even if the operator is '='.


CAUSE

The application is using arguments that are of the wrong type, are out of acceptable range, or are in conflict with one another.


STATUS

This bug was corrected in ActiveX Data Objects (ADO) version 2.0.


MORE INFORMATION

Put_Filter fails if the filter string contains '*stringvalue' pattern for the string column even if the operator is an '='. It should not fail. It acts like the LIKE syntax.

Steps to Reproduce Behavior


   Sub FilterEqualFails()
       Dim conn As New Connection
       Dim rs As New Recordset

       conn.Open "<DSN_Name>", "sa", ""
       On Error Resume Next
       conn.Execute "drop table Foo"
        On Error GoTo errh
       conn.Execute "create table Foo(id int primary key,f1 " & _
                    "varchar(200), f2 binary(200))"
       rs.Open "select * from Foo", conn, adOpenKeyset, adLockOptimistic
       rs.AddNew
       rs("id") = 1
       rs("f1") = "*x Hello world"
       rs.Update
       rs.Requery
       rs.filter = "f1 = '*x Hello world'"
       Exit Sub

   errh:

       Debug.Print "Error:", Err, Hex(Err)
       Debug.Print "Source:", Err.Source
       Debug.Print "Desc:", Err.Description

   End Sub 
When you execute this code, you expect it to find the row with the value. However, this is the output received when you execute the code:

   Error:        3001         BB9
   Source:       ADODB.Recordset 

Additional query words:


Keywords          : kbADO kbADO150bug kbADO200fix kbDatabase 
Version           : WINDOWS:1.5
Platform          : WINDOWS 
Issue type        : kbbug 

Last Reviewed: July 14, 1999