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才可以显示。如何解决?
利用treeview控件跟mshflexgrid一起做学生信息目录只要把红色那段sql语句加上去后就出现with变量未设置。我本意为调用自身,当单击树目录的时候搜索锁所当前单击的年级,然后右边显示学号班级等信息,现在只有除去where才可以显示。如何解决?
我想问1下我多个的话where里面需要多打几个 学生信息.classno= ' " & 班级编码变量 & " ' or 班级信息.classname= ' " & 班级名称变量 & " ' 么
学生信息.classno='' or 班级信息.classname=''去掉一个,重复了,因为之前的on条件就是这2个改为where 学生信息.classno='" & txtsql & "' order by
而 classname属于班级名称 为xx计算机 这样的我的想法就是
treeview里
xxx年级(根)-----------------点击的时候出现只属于这个年级所有班级学生信息
----xx班(子树) -----------------点击的时候出现只属于这个年级只有该班级学生信息
mrc.MoveFirst 是下一行来的
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或别的,其它相应地方也改一下
这个试过了无效只要去掉where 就可以执行 或者where 学生信息.classno='2000'一个数值就可以使用
Set mrc=ExecuteSQL(txtsql)
是不是少了个对象?
Set mrc=ConnObject.ExecuteSQL(txtsql) 这样行吗
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
----xx班(子树) -----------------点击的时候出现只属于这个年级只有该班级学生信息 如果是年级则
con="年级条件"
如果是班则
con="年级条件"txtsql= "…… where " & con & " order by ……"
con = "select classno form 班级信息 where classno=''"?
con="班级信息.classname='年级名'"
else if 点了班级 then
con="学生信息.classno='班级名'"
else
con="1=2"
end iftxtsql=" …… where " & con & " order by …… "
这个干什么用的?
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
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建立树的代码
If InStr(TreeView1.SelectedItem.Text, "年级") > 0 Then '找出带"年级"字的,说明调用的是年级,否则是班
con = "class.班级系别='" & TreeView1.SelectedItem.Text & "'"
Else
con = "class.班级专业='" & TreeView1.SelectedItem.Text & "'"
End If
不行的话,把源代码打包到网上,帮你看看
class.班级专业,一定不能含有"年级"2字OK,好了,结贴给分吧