Функциональность поиска RunTime ошибка 424 при выборе - PullRequest
0 голосов
/ 16 апреля 2011

Мое требование: Для поиска данных в базе данных, используя формы VB и 3 текстовых поля.

1 TextBox, я дам Input (UserName)
1 TextBox для местоположения
1 TextBox длявывод на экран

Мой код

Private Sub CommandButton3_Click()

Dim Cn As ADODB.Connection '* Connection String

Dim oCm As ADODB.Command '* Command Object

Dim sName As String
Dim rs As ADODB.Recordset
Dim uname As String
Set Cn = New ADODB.Connection

Cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\test2.accdb;Persist Security Info=False"
Cn.ConnectionTimeout = 40
Cn.Open
Set oCm = New ADODB.Command
oCm.ActiveConnection = Cn

‘Record Set
Set rs = New ADODB.Recordset

‘Select Operation
rs.Open "SampleTable", Cn, adOpenKeyset, adLockPessimistic, adCmdTable

uname = rs("UserName")

rs.Open "Select * from SampleTable where uname = '" & text1.Text & "'", ActiveConnection, adOpenForwardOnly, adLockReadOnly, adCmdText

**'Display the Output in TextBox3**
TextBox3.Text = rs("UserName") + rs("Location")

rs.Close
Cn.Close
End Sub

Я могу понять, что данных не происходит, поэтому я получаю ошибку RunTime 424 в операторе Select.Как я могу получить данные для соответствующего ввода данных?

1 Ответ

0 голосов
/ 16 апреля 2011
  1. Вам не нужно открывать стол;rs.Open "SampleTable" перед поиском.
  2. Не уверен, для чего это нужно;uname = rs("UserName")
  3. Вы должны просто бежать;rs.Open "Select * ... (Запуск .Open на одном и том же RS дважды без закрытия первого, вероятно, является причиной вашей ошибки)
  4. Вы должны избежать ввода;replace$(text1.Text, "'", "''")
  5. Вы должны проверить rs.EOF после .open
  6. Использовать & не + для объединения строк

update

sub xxx
Dim Cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sName As String

Set Cn = New ADODB.Connection
Cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\test2.accdb;Persist Security Info=False"
Cn.ConnectionTimeout = 40
Cn.Open

Set rs = New ADODB.Recordset

sName = replace$(text1.Text, "'", "''")
rs.Open "Select * from SampleTable where UserName = '" & sName & "'", Cn, adOpenForwardOnly, adLockReadOnly, adCmdText

if (rs.eof) then
    msgbox "no match"
else
    TextBox3.Text = rs("UserName") & " " & rs("Location")
    rs.Close
end if

set rs = nothing
Cn.Close
set cn = nothing
end sub
...