Private Sub Command1_Click()Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strsql As String
strsql = "select 索书号 as 索书号,子序号 as 子序号,书名 as 书名,作者 as 作者,当前状态as 当前状态,被借还次数 as 被借还次数,出版日期 as 出版日期, 出版社 as 出版社,借阅时长 as 借阅时长 from 借书 where "
Select Case True
Case Option1.Value
strsql = strsql & "书名"
Case Option2.Value
strsql = strsql & "索书号"
Case Option3.Value
strsql = strsql & "作者"
End Select
strsql = strsql & "like '%" & Trim(txtData) & "%'"
On Error GoTo errorhandle
conn.Open "BOOK"rs.Open strsql, conn
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
errorhandle:
If Err.Description <> "" Then
mdgbox Err.Description
Exit Sub
End If
End Sub求问是为什么,,好急
Dim rs As New ADODB.Recordset
Dim strsql As String
strsql = "select 索书号 as 索书号,子序号 as 子序号,书名 as 书名,作者 as 作者,当前状态as 当前状态,被借还次数 as 被借还次数,出版日期 as 出版日期, 出版社 as 出版社,借阅时长 as 借阅时长 from 借书 where "
Select Case True
Case Option1.Value
strsql = strsql & "书名"
Case Option2.Value
strsql = strsql & "索书号"
Case Option3.Value
strsql = strsql & "作者"
End Select
strsql = strsql & "like '%" & Trim(txtData) & "%'"
On Error GoTo errorhandle
conn.Open "BOOK"rs.Open strsql, conn
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
errorhandle:
If Err.Description <> "" Then
mdgbox Err.Description
Exit Sub
End If
End Sub求问是为什么,,好急
下面帮你改正了
errorhandle:
If Err.Description <> "" Then
MsgBox Err.Description '<-
Exit Sub
End If
like前面加空格
strsql = strsql & " like '%" & Trim(txtData) & "%'"
以及
Case Option1.Value
strsql = strsql & "书名"
Case Option2.Value
strsql = strsql & "索书号"
Case Option3.Value
strsql = strsql & "作者"
这样硬编码真的好吗?出错信息说得明明白白, 就是你用到了未定义的函数或过程(也可能是变量名), 你还是先把on error这种注释掉吧. 最后, 把联接数据库, 查询记录这些事统统都放在一个小小的按钮事件中是否妥当?
等你数据量大一点, 再遇到个有事没事喜欢多点几下的, 你这程序不得跑死?
哦, 新手...没事, 慢慢写下去, 上面的坑你会踩个遍的!
一、strsql = "select 索书号 as 索书号,子序号 as 子序号,书名 as 书名,作者 as 作者,当前状态as 当前状态,被借还次数 as 被借还次数,出版日期 as 出版日期, 出版社 as 出版社,借阅时长 as 借阅时长 from 借书 where "
这个字符串读取离奇,as前后一样,不知道什么意图,不如这样一目了然:
strsql = "select * from 借书 where " 既简单又明了,无非可以检索所有字段而已二、Select Case True '这个True是VB的关键字不能作为变量使用!!
Case Option1.Value '|呵呵,有这样..........
strsql = strsql & "书名"
Case Option2.Value
strsql = strsql & "索书号"
Case Option3.Value
strsql = strsql & "作者"
End Select
将 Option1控件设置为数组控件, Option1(0)、 Option1(1)、Option1(2)
Dim XX As Ineger
XX = Option1(Index).Index
Select Case XX
Case 0
strsql = strsql & "书名"
Case 1
strsql = strsql & "索书号"
Case 2
strsql = strsql & "作者"
End Select 这样应该没有问题了三、conn.Open "BOOK" conn是需要连接数据库的,不明白你这个"BOOK" 字符串是什么
应该是 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\aaa.mdb;Persist Security Info=False"
上面是连接Access数据库的连接语句,连接的数据库是 aaa.mdb 数据库四、strsql = strsql & "like '%" & Trim(txtData) & "%'"
应该是 strsql = strsql & " like '%" & Trim(txtData.Text) & "%'" 注意字符串必须的空格,新手养成(控件.属性)这样的书写习惯
谢谢谢谢谢谢您的指点,改正了很多错误,但是不知道为什么(可能因为我实在太蠢orz),按照您说的改了以后还是有问题
Private Sub Command1_Click()Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strsql As String
strsql = "select * from 借书 where "
Dim t As Integer
t = Option1(Index).Index
Select Case t
Case 0
strsql = strsql & "书名"
Case 1
strsql = strsql & "索书号"
Case 2
strsql = strsql & "作者"
End Select
strsql = strsql & " like '%" & Trim(txtData) & "%'"
On Error GoTo errorhandle
conn.Open "BOOK"
rs.Open strsql, conn
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
errorhandle:
If Err.Description <> "" Then
MsgBox Err.Description '<-
Exit Sub
End If
End Sub哪里出现差错了?
ps BOOK好像是我给odbc命名的一个连接
这样子连接应该成功了吧?(按照网上的教程做的也不知道对不对hhhh)