txtsql = "select 学生信息.num,学生信息.name,学生信息.sex,学生信息.classno,班级信息.classname,学生信息.birth,学生信息.address,学生信息.tel,学生信息.zhengzhimianmao,学生信息.team,学生信息.bak from 学生信息 INNER JOIN 班级信息 on 学生信息.classno=班级信息.classno where 学生信息.classno='" & txtsql & "' or 班级信息.classname='" & txtsql & "order by 学生信息.num,班级信息.classno ,班级信息.classname  "
利用treeview控件跟mshflexgrid一起做学生信息目录只要把红色那段sql语句加上去后就出现with变量未设置。我本意为调用自身,当单击树目录的时候搜索锁所当前单击的年级,然后右边显示学号班级等信息,现在只有除去where才可以显示。如何解决?

解决方案 »

  1.   

     ... where   学生信息.classno= '" & 班级编码变量 & "' or 班级信息.classname= '" & 班级名称变量 &"' order   by 学生信息.num,班级信息.classno,班级信息.classname" 
      

  2.   

    Leftie 
    我想问1下我多个的话where里面需要多打几个 学生信息.classno=   ' "   &   班级编码变量   &   " '   or   班级信息.classname=   ' "   &   班级名称变量   & " '  么
      

  3.   

    SQL写错了吧红色字应该为txtsql="select 学生信息.num,学生信息.name,学生信息.sex,学生信息.classno,班级信息.classname,学生信息.birth,学生信息.address,学生信息.tel,学生信息.zhengzhimianmao,学生信息.team,学生信息.bak from 学生信息 INNER JOIN 班级信息 on 学生信息.classno=班级信息.classno where 学生信息.classno='" & txtsql   & "' or 班级信息.classname= '" & txtsql & ' order by 学生信息.num,班级信息.classno ,班级信息.classname"order by前面应该有单引号'和空格
      

  4.   

    txtsql= "select   学生信息.num,学生信息.name,学生信息.sex,学生信息.classno,班级信息.classname,学生信息.birth,学生信息. address,学生信息.tel,学生信息.zhengzhimianmao,学生信息.team,学生信息.bak   from   学生信息   INNER   JOIN   班级信息   on   学生信息.classno=班级信息.classno   where   学生信息.classno= ' "   &   txtsql       &   " '   or   班级信息.classname=   ' "   &   txtsql   &   '   order   by   学生信息.num,班级信息.classno   ,班级信息.classname " 
      

  5.   

    clear_zero 跟Phenlit  程序打上去后说缺少表达式 where       学生信息.classno=   '   "       &       txtsql               &       "   '       or       班级信息.classname=       '   "       &       txtsql       &    "   '   +了后"这个后程序能运行但是还是出现之前的错误
      

  6.   

    where 学生信息.classno='" & txtsql & "' or 班级信息.classname='" & txtsql & ' order by 这个里面的
    学生信息.classno='' or 班级信息.classname=''去掉一个,重复了,因为之前的on条件就是这2个改为where 学生信息.classno='" & txtsql & "' order by 
      

  7.   

    Phenlit classno为2个表里面的班级系别属于xx年级的
    而 classname属于班级名称 为xx计算机 这样的我的想法就是
    treeview里
    xxx年级(根)-----------------点击的时候出现只属于这个年级所有班级学生信息
    ----xx班(子树) -----------------点击的时候出现只属于这个年级只有该班级学生信息
      

  8.   

    菜鸟学编程之C++/MFC: QQ群 41977413  C++/MFC编程开发技术,有问题讨论问题,无事适当吹水;一起讨论学习,习惯潜水者勿加菜鸟学编程之C/C#   : QQ群 41976716  C/C#编程开发技术,有问题讨论问题,无事适当吹水;一起讨论学习,习惯潜水者勿加菜鸟学编程之VB/ VBA : QQ群 20772662  VB/ VBA编程开发技术群,有问题讨论问题,无事适当吹水;一起讨论学习,习惯潜水者勿加
      

  9.   

    能不能详细点?从上面看,发现不了别的问题了,要有也是变量txtSQL的问题了,你debug.print出来看txtSQL是什么值
      

  10.   

    那个
    mrc.MoveFirst  是下一行来的
      

  11.   

    调用EOF时出现错误,就是表没有打开问题在
    Set mrc=ExecuteSQL(txtsql)问题应该是txtsql变量你的txtsql是模块级吧,那么where后面的条件上写的txtsql变量名改一下,估计重复使用了几次了where 学生信息.classno='" & txtsql & "' or 班级信息.classname='" & txtsql & ' order by
    变为
    where 学生信息.classno='" & txtsqlCld & "' or 班级信息.classname='" & txtsqlCld & ' order by将那个地方的txtsql改为txtsqlCld或别的,其它相应地方也改一下
      

  12.   

    txtsql = "select 学生信息.num,学生信息.name,学生信息.sex,学生信息.classno,班级信息.classname,学生信息.birth,学生信息.address,学生信息.tel,学生信息.zhengzhimianmao,学生信息.team,学生信息.bak from 学生信息,班级信息 where 学生信息.classno=班级信息.classno and (学生信息.classno= '" & txtsql & "' or 班级信息.classname= '" & txtsql & "') order by 学生信息.num,班级信息.classno,班级信息.classname" 
      

  13.   

    of123 
    这个试过了无效只要去掉where 就可以执行 或者where 学生信息.classno='2000'一个数值就可以使用
      

  14.   

    晕死
    Set mrc=ExecuteSQL(txtsql) 
    是不是少了个对象?
    Set mrc=ConnObject.ExecuteSQL(txtsql) 这样行吗
      

  15.   

    变成要求对象424....这个是公共模块的 ExecuteSQL的代码 应该没写错吧?
    Public Function ExecuteSQL(ByVal sql As String) As ADODB.Recordset
        Dim mycon As ADODB.Connection
        Dim rst As ADODB.Recordset
        Set mycon = New ADODB.Connection
        mycon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
                                 & StudentDBfile & ";Persist Security Info=False"
        mycon.Open '打开连接(连接数据源)
        If mycon Is Nothing Then
            MsgBox "连接失败,请你检查数据库路径!"
        End If
        Dim sArray() As String
        On Error GoTo executesql_error
        sArray = Split(sql)
        If InStr("INSERT,DELETE,UPDATE", UCase(sArray(0))) Then
              mycon.Execute sql
        Else
          Set rst = New ADODB.Recordset
          rst.Open sql, mycon, adOpenKeyset, adLockOptimistic '打开记录集对象
          Set ExecuteSQL = rst
        End If
    executesql_exit:
          Set rst = Nothing
          Set mycon = Nothing
          Exit Function
    executesql_error:
          Resume executesql_exit
    End Function
      

  16.   

    where条件里的变量,用一个xxx年级(根)-----------------点击的时候出现只属于这个年级所有班级学生信息 
    ----xx班(子树)   -----------------点击的时候出现只属于这个年级只有该班级学生信息 如果是年级则
    con="年级条件"
    如果是班则
    con="年级条件"txtsql= "…… where " & con & " order by ……"
      

  17.   

    是否好像这样
    con = "select classno form 班级信息 where classno=''"?
      

  18.   

    con为if 点了年级 then
        con="班级信息.classname='年级名'"
    else if 点了班级 then
        con="学生信息.classno='班级名'"
    else
        con="1=2"
    end iftxtsql=" …… where " & con & " order   by   …… " 
      

  19.   

    学生信息.classno 是什么类型数据?
      

  20.   

    ayalicer 学生信息.classno   accsee中为 文本类型
      

  21.   

    晕,怎么乱七八糟的If con = "select distinct 班级系别 from xj order by 班级系别" Then 
    这个干什么用的?
      

  22.   

    明显用错了,写成这样吧Private Sub TreeView1_Click()
        On Error GoTo ss
        If TreeView1.SelectedItem.Index = 0 Then
            msf1.Clear
            Exit Sub
        End If
        If InStr(TreeView1.SelectedItem.Text, "年级") > 0 Then
            con = "class.班级系别='" & TreeView1.SelectedItem.Text & "'"
        Else
            con = "class.班级专业='" & TreeView1.SelectedItem.Text & "'"
        End If
        txtsql = "select xj.*,class.* from xj INNER JOIN class on xj.班级系别=class.班级系别 where " & con & " order by xj.学号,class.班级系别,xj.班级专业"
                  
        Me.Caption = "浏览学生档案 "
        Me.showtitle
        Me.showdata
        Exit Sub
    ss:
        msf1.ClearEnd Sub
      

  23.   

    还是出现错误我那个树用的是数据库连的开始的时候调用tree函数
    Public Sub tree()
    TreeView1.Nodes.Clear
    Dim nodex As Node
    Dim mrc As ADODB.Recordset
    Dim mrc1 As ADODB.Recordset
    Dim str As String
    Dim a As String
    a = "年级"
    'TreeView1.LineStyle = tvwRootLines
    str = "select distinct 班级系别 from class order by 班级系别"
    Set mrc = ExecuteSQL(str)
    str = "select distinct 班级系别,班级专业 from class order by 班级系别,班级专业"
    Set mrc1 = ExecuteSQL(str)
    mrc.MoveFirst
    Do Until mrc.EOF
      mrc1.MoveFirst
      Set nodex = TreeView1.Nodes.add(, , a, mrc.Fields(0), 1, 1)
      Do While Not mrc1.EOF
       If mrc1.Fields(0) = mrc.Fields(0) Then
         Set nodex = TreeView1.Nodes.add(a, tvwChild, , mrc1.Fields(1), 1, 1)
       End If
       mrc1.MoveNext
      Loop
      a = a & "1"
      mrc.MoveNext
    Loop
     mrc1.Close
     mrc.Close
     Set mrc = Nothing
      Set mrc1 = Nothing
    End Sub然后调用Private   Sub   TreeView1_Click() 事件。并不是直接创建的老麻烦你真不好意思。上面是tree建立树的代码
      

  24.   

    上面是没问题的,
    If InStr(TreeView1.SelectedItem.Text, "年级") > 0 Then '找出带"年级"字的,说明调用的是年级,否则是班
        con = "class.班级系别='" & TreeView1.SelectedItem.Text & "'"
    Else
        con = "class.班级专业='" & TreeView1.SelectedItem.Text & "'"
    End If
    不行的话,把源代码打包到网上,帮你看看
      

  25.   

    Phenlit 估计你睡觉了吧。辛苦你了麻烦你那么久
      

  26.   

    谢谢你了。终于可以了。十分感谢。还有最后一个疑问InStr(TreeView1.SelectedItem.Text, "年级") 这个函数 如果在2个表中都有相同的字段是否不能查找?
      

  27.   

    class.班级系别,必须含有"年级"2个字
    class.班级专业,一定不能含有"年级"2字OK,好了,结贴给分吧
      

  28.   

    马上给,那么如果 xj跟class表里面都有年级2字是否函数失效?最后最后1问,不好意思再麻烦你1点时间