[Gambas-user] DataSource filter using Like operator
Ernest Wilson
gambasml at junkheaven.com
Fri May 4 20:04:39 CEST 2018
I am using Gambas 3.10.0 and trying to implement a "Find" on a form
displaying a database of people. So far, the form works perfectly for
maintaining the database, however, the "Find" is not working as I would
like. I have attempted to implement the "Find" using a DataSource filter
as described below, but, the result is not as I expected. Any guidance
will be appreciated.
On a form I have a DataBrowser displaying the content of an SQLite
database table containing a list of people. The fields consist of:
ID - ID Number
FName - Persons first name and possibly an initial
LName - Persons surname
Company - Persons employer
Various other fields with persons information
Also, on the form are a TextBox for user entry, a button for "Find" and
a button for "Clear".
The desired action is as follows:
User enters any substring of the persons name (first name or surname) in
the TextBox and clicks the "Find" Button. The matching records are
displayed in the DataBrowser. When the user clicks the "Clear" button,
the DataBrowser displays all the records.
Example: If I have records for (1) Jack Smith, (2) Sally Simple, (3)
Jack B. Nimble, (4) John Dough, (5) Jack B. Quick, entering:
"Jack" should return records 1, 3, 5
"im" should return records 2, 3
"s" should return records 1, 2
"Jack B" should return records 3, 5
I have implemented the "Find" button as follows:
Public Sub Button1_Click()
'Find Button
Dim $findtext As String
Dim $filterstr As String
$findtext = TextBox1.Text 'Assignment to a variable seems to be
required for DB.Subst
$filterstr = DB.Subst("LName LIKE &1 OR FName LIKE &1", $findtext)
'Look for Find entry in either First or Last name
TextBox2.Text = $filterstr 'Debugging output
DataSource1.Filter = $filterstr
DataBrowser1.Refresh
FormatDataBrowser1 'Set column widths, header alignment, etc.
End
The result I get is only an exact match of the string entered in the
TextBox, as if I had used "=" instead of "Like" as the operator in the
filter string.
I am obviously missing something, or have taken a wrong approach.
Suggestions will be appreciated.
Regards,
Ernest Wilson
More information about the User
mailing list