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求问是为什么,,好急

解决方案 »

  1.   

    消息提示是编译错误啊!会指出是哪一行错误的。
    下面帮你改正了
    errorhandle:
        If Err.Description <> "" Then
            MsgBox Err.Description '<-
            Exit Sub
        End If
      

  2.   

    strsql = strsql & "like '%" & Trim(txtData) & "%'"
    like前面加空格
    strsql = strsql & " like '%" & Trim(txtData) & "%'"
      

  3.   

    俺就来吐槽:as的前面和后面名字一样还as个啥?中文字段名将来等着debug吧. Select Case True 这样的写法你真的理解吗?
    以及
    Case Option1.Value
         strsql = strsql & "书名"
    Case Option2.Value
         strsql = strsql & "索书号"
    Case Option3.Value
         strsql = strsql & "作者"
    这样硬编码真的好吗?出错信息说得明明白白, 就是你用到了未定义的函数或过程(也可能是变量名), 你还是先把on error这种注释掉吧. 最后, 把联接数据库, 查询记录这些事统统都放在一个小小的按钮事件中是否妥当? 
    等你数据量大一点, 再遇到个有事没事喜欢多点几下的, 你这程序不得跑死?
    哦, 新手...没事, 慢慢写下去, 上面的坑你会踩个遍的!
      

  4.   

    哦,看来是新手,我也说说
    一、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) & "%'"   注意字符串必须的空格,新手养成(控件.属性)这样的书写习惯
      

  5.   


    谢谢谢谢谢谢您的指点,改正了很多错误,但是不知道为什么(可能因为我实在太蠢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)