Answered by:
I have a problem with the database

Question
-
I'm trying to search for a word in a database of type (Access)
Any word containing (')
This message appears
I want a solution please- Edited by jamilaid Sunday, September 17, 2017 11:44 PM
Sunday, September 17, 2017 11:42 PM
Answers
-
You should always post your code which is having issues. Here is what you need to search using a LIKE condition where the like condition below is a contains.
Public Sub FindExample(ByVal pValue As String) Using cn As New OleDbConnection(Builder.ConnectionString) Using cmd As New OleDbCommand("SELECT LastName FROM users WHERE FirstName Like @FirstName;", cn) cmd.Parameters.AddWithValue("@FirstName", pValue) cn.Open() Dim reader As OleDbDataReader = cmd.ExecuteReader If reader.HasRows Then While reader.Read Console.WriteLine(reader.GetString(0)) End While End If End Using End Using End Sub
Usage where input comes from a TextBox
If Not String.IsNullOrWhiteSpace(TextBox1.Text) Then FindExample($"%{TextBox1.Text}%") End If
Table and output from above code
TextBox value, an apostrophe
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
VB Forums - moderator
- Edited by KareninstructorMVP Monday, September 18, 2017 2:23 AM
- Proposed as answer by Cherry BuMicrosoft contingent staff Monday, September 18, 2017 2:51 AM
- Marked as answer by jamilaid Monday, September 18, 2017 11:43 AM
- Unmarked as answer by jamilaid Monday, September 18, 2017 12:30 PM
- Marked as answer by jamilaid Wednesday, September 20, 2017 3:40 PM
Monday, September 18, 2017 2:21 AM -
Hi jamilaid,
If you want to find a word contains('), you can use String.Contains Method (String) to find, like this:
Dim str As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Database\TestTable.accdb;Persist Security Info=False;" Dim dt As New DataTable Dim con As New OleDbConnection(str) Dim query As String = "select * from Test2" Dim cmd As New OleDbCommand(query, con) con.Open() Dim reader As OleDbDataReader = cmd.ExecuteReader If reader.HasRows Then While reader.Read If reader("Column1").contains("'") Then Console.WriteLine(reader("Column1")) End If End While End If
Best Regards,
Cherry
MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.- Edited by Cherry BuMicrosoft contingent staff Monday, September 18, 2017 2:55 AM
- Marked as answer by jamilaid Monday, September 18, 2017 11:44 AM
- Unmarked as answer by jamilaid Monday, September 18, 2017 12:31 PM
- Marked as answer by jamilaid Wednesday, September 20, 2017 3:40 PM
Monday, September 18, 2017 2:54 AM -
You should always post your code which is having issues. Here is what you need to search using a LIKE condition where the like condition below is a contains.
Public Sub FindExample(ByVal pValue As String) Using cn As New OleDbConnection(Builder.ConnectionString) Using cmd As New OleDbCommand("SELECT LastName FROM users WHERE FirstName Like @FirstName;", cn) cmd.Parameters.AddWithValue("@FirstName", pValue) cn.Open() Dim reader As OleDbDataReader = cmd.ExecuteReader If reader.HasRows Then While reader.Read Console.WriteLine(reader.GetString(0)) End While End If End Using End Using End Sub
Usage where input comes from a TextBox
If Not String.IsNullOrWhiteSpace(TextBox1.Text) Then FindExample($"%{TextBox1.Text}%") End If
Table and output from above code
TextBox value, an apostrophe
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
VB Forums - moderator
Thanks everyone
This code is great but I want to search exactly for the word if the letters are big or small
This code shows any word that contains part of the search textI want to search exactly
Monday, September 18, 2017 12:36 PM -
this should do it...
change FindExample($"%{TextBox1.Text}%") to FindExample($"'{TextBox1.Text}'") and Using cmd As New OleDbCommand("SELECT LastName FROM users WHERE FirstName Like @FirstName;", cn) to Using cmd As New OleDbCommand("SELECT LastName FROM users WHERE FirstName = @FirstName;", cn)
Live as if you were going to die today, learn as if you were going to live forever -Mahatma Gandhi
- Marked as answer by jamilaid Wednesday, September 20, 2017 3:39 PM
Monday, September 18, 2017 1:25 PM -
I just tinkered around with a dataview, maybe this will work for you.
With dt .Columns.Add("Col1", GetType(System.String)) .Columns.Add("IsVisible", GetType(System.Boolean)) .Rows.Add("That's") .Rows.Add("Thats") End With dv = dt.DefaultView DataGridView1.DataSource = dv Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp For Each DTRow As DataRow In dt.Rows Dim SearchString As String = TextBox1.Text If DTRow("Col1").ToString.Contains(SearchString) Then DTRow("IsVisible") = True Else DTRow("IsVisible") = False End If Next dv.RowFilter = "IsVisible = True" End Sub
Live as if you were going to die today, learn as if you were going to live forever -Mahatma Gandhi
Monday, September 18, 2017 3:49 PM -
This code does not search exactly
Lookand
I want to write in the Textbox1 looking for him exactly
Try this
Dim SearchString As String = TextBox1.Text If DTRow("Col1").ToString.Contains(SearchString) And DTRow("Col1").ToString = SearchString Then DTRow("IsVisible") = True Else DTRow("IsVisible") = False End If Next dv.RowFilter = "IsVisible = True"
Live as if you were going to die today, learn as if you were going to live forever -Mahatma Gandhi
- Marked as answer by jamilaid Wednesday, September 20, 2017 3:39 PM
Tuesday, September 19, 2017 12:06 PM -
Convert all the string to upper should work?
Dim SearchString As String = TextBox1.Text.ToUpper For Each dtrow As DataRow In dt.Rows If dtrow("Col1").ToString.ToUpper.Contains(SearchString) And dtrow("Col1").ToString.ToUpper = SearchString Then dtrow("IsVisible") = True Else dtrow("IsVisible") = False End If Next
Live as if you were going to die today, learn as if you were going to live forever -Mahatma Gandhi
- Marked as answer by jamilaid Wednesday, September 20, 2017 3:39 PM
Wednesday, September 20, 2017 1:41 AM
All replies
-
Hi
Guess what is missing from your post!
Yes, the code is missing..........
Regards Les, Livingston, Scotland
Monday, September 18, 2017 2:14 AM -
You should always post your code which is having issues. Here is what you need to search using a LIKE condition where the like condition below is a contains.
Public Sub FindExample(ByVal pValue As String) Using cn As New OleDbConnection(Builder.ConnectionString) Using cmd As New OleDbCommand("SELECT LastName FROM users WHERE FirstName Like @FirstName;", cn) cmd.Parameters.AddWithValue("@FirstName", pValue) cn.Open() Dim reader As OleDbDataReader = cmd.ExecuteReader If reader.HasRows Then While reader.Read Console.WriteLine(reader.GetString(0)) End While End If End Using End Using End Sub
Usage where input comes from a TextBox
If Not String.IsNullOrWhiteSpace(TextBox1.Text) Then FindExample($"%{TextBox1.Text}%") End If
Table and output from above code
TextBox value, an apostrophe
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
VB Forums - moderator
- Edited by KareninstructorMVP Monday, September 18, 2017 2:23 AM
- Proposed as answer by Cherry BuMicrosoft contingent staff Monday, September 18, 2017 2:51 AM
- Marked as answer by jamilaid Monday, September 18, 2017 11:43 AM
- Unmarked as answer by jamilaid Monday, September 18, 2017 12:30 PM
- Marked as answer by jamilaid Wednesday, September 20, 2017 3:40 PM
Monday, September 18, 2017 2:21 AM -
Hi jamilaid,
If you want to find a word contains('), you can use String.Contains Method (String) to find, like this:
Dim str As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Database\TestTable.accdb;Persist Security Info=False;" Dim dt As New DataTable Dim con As New OleDbConnection(str) Dim query As String = "select * from Test2" Dim cmd As New OleDbCommand(query, con) con.Open() Dim reader As OleDbDataReader = cmd.ExecuteReader If reader.HasRows Then While reader.Read If reader("Column1").contains("'") Then Console.WriteLine(reader("Column1")) End If End While End If
Best Regards,
Cherry
MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.- Edited by Cherry BuMicrosoft contingent staff Monday, September 18, 2017 2:55 AM
- Marked as answer by jamilaid Monday, September 18, 2017 11:44 AM
- Unmarked as answer by jamilaid Monday, September 18, 2017 12:31 PM
- Marked as answer by jamilaid Wednesday, September 20, 2017 3:40 PM
Monday, September 18, 2017 2:54 AM -
You should always post your code which is having issues. Here is what you need to search using a LIKE condition where the like condition below is a contains.
Public Sub FindExample(ByVal pValue As String) Using cn As New OleDbConnection(Builder.ConnectionString) Using cmd As New OleDbCommand("SELECT LastName FROM users WHERE FirstName Like @FirstName;", cn) cmd.Parameters.AddWithValue("@FirstName", pValue) cn.Open() Dim reader As OleDbDataReader = cmd.ExecuteReader If reader.HasRows Then While reader.Read Console.WriteLine(reader.GetString(0)) End While End If End Using End Using End Sub
Usage where input comes from a TextBox
If Not String.IsNullOrWhiteSpace(TextBox1.Text) Then FindExample($"%{TextBox1.Text}%") End If
Table and output from above code
TextBox value, an apostrophe
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
VB Forums - moderator
Thanks everyone
This code is great but I want to search exactly for the word if the letters are big or small
This code shows any word that contains part of the search textI want to search exactly
Monday, September 18, 2017 12:36 PM -
this should do it...
change FindExample($"%{TextBox1.Text}%") to FindExample($"'{TextBox1.Text}'") and Using cmd As New OleDbCommand("SELECT LastName FROM users WHERE FirstName Like @FirstName;", cn) to Using cmd As New OleDbCommand("SELECT LastName FROM users WHERE FirstName = @FirstName;", cn)
Live as if you were going to die today, learn as if you were going to live forever -Mahatma Gandhi
- Marked as answer by jamilaid Wednesday, September 20, 2017 3:39 PM
Monday, September 18, 2017 1:25 PM -
You never indicated this in your initial post. SQL-Server provides this functionality natively but not MS-Access. You would need to rely on looping through all rows for this or query via the LIKE operator for case insensitive results and loop through those matches. How you do this is dependent on how many rows might be a match for the search criteria e.g. several hundred thousand rows verses several hundred plus if there are indexes on the field(s) in question.
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
VB Forums - moderator
Monday, September 18, 2017 1:26 PM -
this should do it...
change FindExample($"%{TextBox1.Text}%") to FindExample($"'{TextBox1.Text}'") and Using cmd As New OleDbCommand("SELECT LastName FROM users WHERE FirstName Like @FirstName;", cn) to Using cmd As New OleDbCommand("SELECT LastName FROM users WHERE FirstName = @FirstName;", cn)
Live as if you were going to die today, learn as if you were going to live forever -Mahatma Gandhi
Monday, September 18, 2017 2:04 PM -
youre right. i wasnt paying attention that youre looking for '
I know better than to answer questions on less than 1 cup of coffee
Live as if you were going to die today, learn as if you were going to live forever -Mahatma Gandhi
Monday, September 18, 2017 2:10 PM -
You never indicated this in your initial post. SQL-Server provides this functionality natively but not MS-Access. You would need to rely on looping through all rows for this or query via the LIKE operator for case insensitive results and loop through those matches. How you do this is dependent on how many rows might be a match for the search criteria e.g. several hundred thousand rows verses several hundred plus if there are indexes on the field(s) in question.
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
VB Forums - moderator
I am sorry because I do not speak English so I have made the right mistake ....
But now I work with Access
Monday, September 18, 2017 2:13 PM -
I want a code that searches for any word you type exactly if it contains (') or not
But if the word contains (') I want to appear naturallyWithout the appearance of the error message
Monday, September 18, 2017 2:36 PM -
I just tinkered around with a dataview, maybe this will work for you.
With dt .Columns.Add("Col1", GetType(System.String)) .Columns.Add("IsVisible", GetType(System.Boolean)) .Rows.Add("That's") .Rows.Add("Thats") End With dv = dt.DefaultView DataGridView1.DataSource = dv Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp For Each DTRow As DataRow In dt.Rows Dim SearchString As String = TextBox1.Text If DTRow("Col1").ToString.Contains(SearchString) Then DTRow("IsVisible") = True Else DTRow("IsVisible") = False End If Next dv.RowFilter = "IsVisible = True" End Sub
Live as if you were going to die today, learn as if you were going to live forever -Mahatma Gandhi
Monday, September 18, 2017 3:49 PM -
This code does not search exactly
Lookand
I want to write in the Textbox1 looking for him exactly- Edited by jamilaid Monday, September 18, 2017 9:28 PM
Monday, September 18, 2017 9:14 PM -
I want a code that searches for any word you type exactly if it contains (') or not
But if the word contains (') I want to appear naturallyWithout the appearance of the error message
Hi jamilaid,
According to your description, you want to find out some data in access database that contains a entire word in the column, for example, one column 1 is "I am Cherry", column 2 is "Helloam", then the find string is "am", so column1 will meet your requirement, am I right?
Best Regards,
Cherry
MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.Tuesday, September 19, 2017 9:48 AM -
This code does not search exactly
Lookand
I want to write in the Textbox1 looking for him exactly
Try this
Dim SearchString As String = TextBox1.Text If DTRow("Col1").ToString.Contains(SearchString) And DTRow("Col1").ToString = SearchString Then DTRow("IsVisible") = True Else DTRow("IsVisible") = False End If Next dv.RowFilter = "IsVisible = True"
Live as if you were going to die today, learn as if you were going to live forever -Mahatma Gandhi
- Marked as answer by jamilaid Wednesday, September 20, 2017 3:39 PM
Tuesday, September 19, 2017 12:06 PM -
This is perfect
Could it come to the word if it was small or Capital
- Edited by jamilaid Wednesday, September 20, 2017 12:21 AM
Tuesday, September 19, 2017 11:40 PM -
Convert all the string to upper should work?
Dim SearchString As String = TextBox1.Text.ToUpper For Each dtrow As DataRow In dt.Rows If dtrow("Col1").ToString.ToUpper.Contains(SearchString) And dtrow("Col1").ToString.ToUpper = SearchString Then dtrow("IsVisible") = True Else dtrow("IsVisible") = False End If Next
Live as if you were going to die today, learn as if you were going to live forever -Mahatma Gandhi
- Marked as answer by jamilaid Wednesday, September 20, 2017 3:39 PM
Wednesday, September 20, 2017 1:41 AM -