我的查询窗体里的查询源码:Private Sub search_Click()
   
Dim sql As String
'按学号查询
If Check1.Value = vbChecked Then
   sql = "学号='" & Trim(txbId.Text & " ") & "'"
End If
'按学生姓名查询
If Check2.Value = vbChecked Then
   If Trim(sql) = "" Then
      sql = "学生姓名='" & Trim(txbName.Text & " ") & "'"
   Else
      sql = sql & "and 学生姓名='" & Trim(txbName.Text & " ") & "'"
   End If
End If
'按课程名称查询
If Check3.Value = vbChecked Then
   If Trim(sql) = "" Then
      sql = "课程名称='" & Trim(txbLesson.Text & " ") & "'"
   Else
      sql = sql & "and  课程名称='" & Trim(txbLesson.Text & " ") & "'"
   End If
End If
'按班级查询
If Check4.Value = vbChecked Then
   If Trim(sql) = "" Then
      sql = "选择班级='" & Trim(txbClass.Text & " ") & "'"
   Else
      sql = sql & "and 选择班级='" & Trim(txbClass.Text & " ") & "'"
   End If
End IfIf Trim(sql) = "" Then
   MsgBox "请选择查询方式!", vbOKOnly + vbExclamation
   Exit Sub
End IfAdodc1.RecordSource = "select Students.Student_Id,Student_Name,BadgeID,LessonName,Score from Students,Lessons,Scores where Students.Student_Id=Scores.Student_Id AND Lessons.LessonId=Scores.LessonId  " & sqlAdodc1.CommandType = adCmdText
Adodc1.Refresh
grdDataGrid.ReBind
grdDataGrid.AllowAddNew = False
grdDataGrid.AllowDelete = False
grdDataGrid.AllowUpdate = FalseEnd Sub编译的时候,在查询窗体里打入学生学号,就弹出
提示:"[Microsoft][OBDC SQL Server Driver][SQL Server]第一行:'学号'附近有语法错误",然后又弹出一个:"实时错误'-2147217900(80040e14)'对象'Refresh'的方法'IAdodc'失败"的错误,在其他3个查询条件里打TEXT是都会报错,和上面一样的错误.
我要实现的是3个表内容的查询students,lessons,scores
Scores表里面只有lessonID\studentID\score三项我是个初学者啊!请高手们帮帮我~~~~~~~~~~~~~~

解决方案 »

  1.   

    第一行:'学号'附近有语法错误"If Trim(sql) = "" Then
        sql = "学生姓名='" & Trim(txbName.Text & " ") & "'"
    Else好象每一种条件查询的第一个选择中SQL字串前都少了一个"AND"
    不知道说得对不,申明我不是高手~~
      

  2.   

    谢谢,这位朋友,我去调试下````````````````````带序ING
      

  3.   

    sql = "学生姓名='" & Trim(txbName.Text & " ") & "'"
    没看明白这句什么意思,要实现什么功能呀,为什么用trim 还用&""
      

  4.   

    查询啊!我用CHECKBOX控件的,主要是实现查询功能
      

  5.   

    Private Sub search_Click()
       
    Dim sql As String
    'initialize variable sql
    sql =""
    '按学号查询
    If Check1.Value = vbChecked Then
       sql =sql & " And 学号='" & Trim(txbId.Text & " ") & "'"
    End If
    '按学生姓名查询
    If Check2.Value = vbChecked Then
       sql = sql & " and 学生姓名='" & Trim(txbName.Text & " ") & "'"
    End If
    '按课程名称查询
    If Check3.Value = vbChecked Then
       sql = sql & " and  课程名称='" & Trim(txbLesson.Text & " ") & "'"
    End If
    '按班级查询
    If Check4.Value = vbChecked Then
       sql = sql & "and 选择班级='" & Trim(txbClass.Text & " ") & "'"
    End IfIf Trim(sql) = "" Then
       MsgBox "请选择查询方式!", vbOKOnly + vbExclamation
       Exit Sub
    End IfAdodc1.RecordSource = "select Students.Student_Id,Student_Name,BadgeID,LessonName,Score from Students,Lessons,Scores where Students.Student_Id=Scores.Student_Id AND Lessons.LessonId=Scores.LessonId  " & sqlAdodc1.CommandType = adCmdText
    Adodc1.Refresh
    grdDataGrid.ReBind
    grdDataGrid.AllowAddNew = False
    grdDataGrid.AllowDelete = False
    grdDataGrid.AllowUpdate = FalseEnd Sub
      

  6.   

    非常感谢楼上的朋友,我去调试下~~~~~~~~~~~~~~~~~~代序ING
      

  7.   

    不会是你不该用汉字的列名吧,而是STUDENT之类.把语句单独写好,再测试一下
      

  8.   

    我用的都是英文列名,城市流浪人的代码我编译了一下,新的问题出现::"[Microsoft][OBDC SQL Server Driver][SQL Server]列名'学号'无效,然后又弹出一个:"实时错误'-2147217900(80040e14)'对象'Refresh'的方法'IAdodc'失败"的错误,在其他3个查询条件里打TEXT是都会报错,和上面一样的错误.
    怎么改啊,哪位高手帮个忙啊!!!!!我的Adodc1.RecordSource 源应该没写错吧~~~~~~~
      

  9.   

    Adodc1.RecordSource = "select Students.Student_Id,Student_Name,BadgeID,LessonName,Score from Students,Lessons,Scores where Students.Student_Id=Scores.Student_Id AND Lessons.LessonId=Scores.LessonId  " & sql这个里面你的列名都是英文的,为什么后来出现了中文列名呢? "学号","学生姓名"等等
      

  10.   

    难道不对吗?"学号","学生姓名"等等是窗体里的CHECKBOX的CAPITON,不是列名啊!数据库里面的列名我都用英文的,为了显示方便,我才用中文的,这难道不对吗!!!
    请高手们指点~~~~~~~~~~~~~~~~~~~~~~~~
      

  11.   

    谢谢,楼上的朋友指点,我调试看看~~~~~~~~~~~~~~~~~代序ING