Option Explicit
    Private newnode As node
    Private mynode As node
Public Sub showdata()
Dim i As Integer
Set rs = Nothing
Set rs1 = Nothing
   conn.CursorLocation = adUseClient
Select Case usertype
  Case "学生"
   sql = " select userid,dqszj,xsh,bh,password,newuser,disable,what from sys_user where usertype='" & usertype & "' and bh='" & nodetext & "'"    '判断用户类型
  Case "教师"
   sql = " select userid,xsh,password,newuser,disable ,what from sys_user where usertype='" & usertype & "' and xsh='" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "'"
  Case "学院"
  nodetext = Right(nodekey, 2)
   sql = " select userid,xsh,password,newuser,disable,what  from sys_user where usertype='" & usertype & "'  and xsh='" & nodetext & "'"
   Case "管理员"
   sql = " select userid,password,newuser,disable ,what from sys_user where usertype='" & usertype & "' and userid='" & nodetext & "'"
   Case "领导"
   sql = " select userid,password,newuser,disable ,what  from sys_user where usertype='" & usertype & "' and userid='" & nodetext & "'"
   Case "出错"
    sql = " select userid,dqszj,xsh,bh,password,newuser,disable ,what from sys_user where (xsh='' or dqszj='' or bh='') and usertype='学生'"
    treeview1.Nodes.Clear
    Set mynode = treeview1.Nodes.add(, , "node", "错误信息")
    treeview1.Enabled = False  End Select
rs.open sql,conn,3,2 '可以在datagrid里面编辑
   'Set rs = conn.Execute(sql)  '赋植给datagrid1 不可以编辑的
   If rs.Fields.Count = 0 Then
        DataGrid1.ClearFields   Else
        Set DataGrid1.DataSource = rs
        DataGrid1.ClearFields
        DataGrid1.ReBind
    End If    sql = "select * from sys_zdmcb "                                                  '显示datagrid1的头部信息值
    rs1.Open sql, conn, adOpenStatic, adLockOptimistic
    For i = 0 To rs.Fields.Count - 1
    rs1.MoveFirst
    Do While Not rs1.EOF
    If UCase(rs.Fields(i).Name) = Trim(UCase(rs1("zdm"))) Then
    DataGrid1.Columns(i).Caption = rs1("zdzwm")
    Exit Do
    End If
    rs1.MoveNext
    Loop
    Next i
    rs1.Close
    Set rs1 = Nothing
    cmdstate = True
    Call cmdcontrol
End Sub
Public Sub treeout()
    Dim found As Boolean
    Dim i As Integer                                                                                '显示树形结构
    Dim xshstr, dqszjstr As String
    Set mynode = treeview1.Nodes.add(, , "node", "南京航空航天大学")
Select Case usertype
 Case "学生"
    Label2.Caption = "学生详细信息显示:"
    sql = "select  distinct xsh,dqszj,bh from sys_user where usertype='" & usertype & "' order by xsh,dqszj,bh "
    Set rs = conn.Execute(sql)
    sql = "select * from code_xsb "
    rs1.Open sql, conn, 3, 2
        If Not rs.EOF Then
    xshstr = "sd()"
    dqszjstr = "rs()"
    
     Do While Not rs.EOF
      If xshstr = rs(0) Then
         If dqszjstr = rs(1) Then
         Else
            dqszjstr = rs(1)
                     If Trim(rs(0)) = "" Or Trim(rs(1)) = "" Or Trim(rs(2)) = "" Then
         MsgBox "非空字段有空值! 请添加数据库非空字段值为空的记录!"
    usertype = "出错"
 Label2.Caption = "出错数据详细信息显示:"
Call showdata
         Exit Sub
         End If
            Set newnode = treeview1.Nodes.add("x_" & Trim(rs(0)), tvwChild, "x_" & Trim(rs(1)) & "_" & Trim(rs(0)), rs(1))
         End If
      Else
         xshstr = rs(0)
        Do While Not rs1.EOF
        found = False
        If Trim(rs1("xsh")) = Trim(rs(0)) Then
                     If Trim(rs(0)) = "" Or Trim(rs(1)) = "" Or Trim(rs(2)) = "" Then
         MsgBox "非空字段有空值! 请添加数据库非空字段值为空的记录!"
usertype = "出错"
 Label2.Caption = "出错数据详细信息显示:"
Call showdata
         Exit Sub
         End If
      Set newnode = treeview1.Nodes.add("node", tvwChild, "x_" & Trim(rs(0)), Trim(rs1("xsm")))
      found = True
        Exit Do
        End If
        rs1.MoveNext
        Loop
        If found = False Then
        If Trim(rs(0)) = "" Then
        MsgBox "学生用户系所号不能为空,请检查数据库!"
        Else
        MsgBox "不存在系所号为" & Trim(rs(0)) & "的学院,请检查数据库!"
        End If
        rs1.Close
        rs.Close
        Exit Sub
        End If
         dqszjstr = rs(1)
                     If Trim(rs(0)) = "" Or Trim(rs(1)) = "" Or Trim(rs(2)) = "" Then
         MsgBox "非空字段有空值! 请添加数据库非空字段值为空的记录!"
 Label2.Caption = "出错数据详细信息显示:"
Call showdata
         Exit Sub
         End If
         Set newnode = treeview1.Nodes.add("x_" & Trim(rs(0)), tvwChild, "x_" & Trim(rs(1)) & "_" & Trim(rs(0)), rs(1))
      End If
                     If Trim(rs(0)) = "" Or Trim(rs(1)) = "" Or Trim(rs(2)) = "" Then
         MsgBox "非空字段有空值! 请添加数据库非空字段值为空的记录!"
usertype = "出错"
 Label2.Caption = "出错数据详细信息显示:"
Call showdata
         Exit Sub
         End If
         Set newnode = treeview1.Nodes.add("x_" & Trim(rs(1)) & "_" & Trim(rs(0)), tvwChild, "x_" & Trim(rs(2)) & "_" & Trim(rs(1)) & "_" & Trim(rs(0)), rs(2))
        rs1.MoveFirst
      rs.MoveNext
    Loop
    treeview1.Nodes("node").Expanded = True
    End If
    rs.Close
    rs1.Close
 Case "教师"
  Label2.Caption = "教师详细信息显示:"
    sql = "select distinct xsh from sys_user "
    Set rs = conn.Execute(sql)
    sql = "select * from code_xsb "
    rs1.Open sql, conn, 3, 2
       If Not rs.EOF And Not rs.BOF Then
     Do While Not rs.EOF
        Do While Not rs1.EOF
        If Trim(rs1("xsh")) = Trim(rs(0)) Then
      Set newnode = treeview1.Nodes.add("node", tvwChild, "nuaajs_" & Trim(rs(0)), Trim(rs1("xsm")))
       
        Exit Do
        End If
        rs1.MoveNext
        Loop
        rs1.MoveFirst
      rs.MoveNext
     Loop
     rs.Close
    End If
      treeview1.Nodes("node").Expanded = True
    rs1.Close
 Case "学院"
  Label2.Caption = "学院用户详细信息显示:"
    sql = "select distinct xsh from sys_user "    Set rs = conn.Execute(sql)
    sql = "select * from code_xsb "
    rs1.Open sql, conn, 3, 2
       If Not rs.EOF And Not rs.BOF Then
     Do While Not rs.EOF
        Do While Not rs1.EOF
        If Trim(rs1("xsh")) = Trim(rs(0)) Then
      Set newnode = treeview1.Nodes.add("node", tvwChild, "xygly_" & Trim(rs(0)), Trim(rs1("xsm")))
        Exit Do
        End If
        rs1.MoveNext
        Loop
        rs1.MoveFirst
      rs.MoveNext
     Loop
     rs.Close
    End If
     treeview1.Nodes("node").Expanded = True
    rs1.Close
    
 Case "管理员"
  Label2.Caption = "管理员详细信息显示:"     sql = "select * from sys_user where usertype='" & usertype & "'"
      Set rs = conn.Execute(sql)
       If Not rs.EOF And Not rs.BOF Then

解决方案 »

  1.   

    next:
         Do While Not rs.EOF
          Set newnode = treeview1.Nodes.add("node", tvwChild, "xtgly_" & Trim(rs("userid")), Trim(rs("userid")))
          rs.MoveNext
         Loop
           treeview1.Nodes("node").Expanded = True
         rs.Close    End If
     Case "领导"
      Label2.Caption = "校领导详细信息显示:"
        sql = "select *  from sys_user where usertype='" & usertype & "'"
          Set rs = conn.Execute(sql)
           If Not rs.EOF Then
         Do While Not rs.EOF
          Set newnode = treeview1.Nodes.add("node", tvwChild, "xyxsh_" & Trim(rs("userid")), Trim(rs("userid")))
          rs.MoveNext
         Loop
         rs.Close
           treeview1.Nodes("node").Expanded = True    End If
        
        End Select   Set rs = Nothing
       cmdstate = False
       Call cmdcontrol
    End Sub
    Private Sub able_Click()
    If rs.State = 1 And Not rs.EOF Then
    If Trim(able.Caption) = "启用用户(&S)" Then
    sql = "update sys_user set disable='是' where userid='" & Trim(rs("userid")) & "'"
    conn.Execute (sql)
    Call showdata
    Else
    sql = "update sys_user set disable='否' where userid='" & Trim(rs("userid")) & "'"
    conn.Execute (sql)
    Call showdata
    End If
    End If
    End SubPrivate Sub adduser_Click()
    If usertype = "领导" Or usertype = "管理员" Then
    Else
       If InStr(1, nodekey, "_", 1) = 0 Then
       Exit Sub
       End If
    End If
    edadd = "3"
    frmadd.Show vbModal, main
    End SubPrivate Sub cmdedit_Click()
    If rs.State = 1 And Not rs.EOF Then
    edadd = "2"
    frmadd.Show vbModal, main
    End If
    End SubPrivate Sub cmdinput_Click()
    frminput.Show vbModal, main
    End Sub
    Private Sub cmdprint_Click()
    frmprint.Show vbModal, main
    End SubPrivate Sub DataGrid1_BeforeUpdate(Cancel As Integer)                                              '限制修改
    Cancel = True
    End Sub
    Private Sub DataGrid1_Click()
    If rs.State = 0 Then Exit Sub
    If Not rs.EOF And Not rs.BOF Then
    If rs.State = 0 Then Exit Sub
    If Trim(rs("disable")) = "是" Then
    able.Caption = "禁用用户(&S)"
    Else
    able.Caption = "启用用户(&S)"
    End If
    End If
    End SubPrivate Sub DataGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
    If Not rs.EOF And Not rs.BOF Then
       Select Case KeyCode    Case vbKeyUp, vbKeyPageUp
        rs.MovePrevious
                  DataGrid1_Click
        Case vbKeyDown, vbKeyPageDown
        rs.MoveNext
              DataGrid1_Click
      End Select
      Else
      If rs.EOF Then
      rs.MoveLast
        Else
        rs.MoveFirst
        End If
        End If End SubPrivate Sub deletedata_Click()
    Dim yesno
    If InStr(1, nodekey, "_", 1) = 0 Then
    MsgBox "不可以删除整个数据库!"
    Exit Sub
    End If
    Select Case usertype
    Case "学生"If InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1) = 0 Then
    sql = "delete sys_user where usertype='学生' and xsh='" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "'"
    yesno = MsgBox("确认要删除" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "院吗?删除后数据不可恢复,确认点yes,取消操作点no", vbYesNo + vbCritical + vbDefaultButton2, "确认删除")
    If yesno = vbYes Then
    conn.Execute (sql)
    treeview1.Nodes.Remove treeview1.SelectedItem.Index
    Set DataGrid1.DataSource = Nothing
        cmdstate = False
        Call cmdcontrol
    Exit Sub
    Else
    Exit Sub
    End If
      Else
      If InStr(InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1) + 1, nodekey, "_", 1) = 0 Then
    sql = "delete sys_user where  usertype='学生' and  xsh='" & Right(nodekey, Len(nodekey) - InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1)) & "' and dqszj='" & Right(Left(nodekey, InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1) - 1), Len(Left(nodekey, InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1) - 1)) - InStr(1, nodekey, "_", 1)) & "'"
    yesno = MsgBox("确认要删除" & Right(nodekey, Len(nodekey) - InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1)) & "院" & Right
      

  2.   

    (Left(nodekey, InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1) - 1), Len(Left(nodekey, InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1) - 1)) - InStr(1, nodekey, "_", 1)) & "级所有学生吗?删除后数据不可恢复,确认点yes,取消操作点no", vbYesNo + vbCritical + vbDefaultButton2, "确认删除")
    If yesno = vbYes Then
    conn.Execute (sql)
    treeview1.Nodes.Remove treeview1.SelectedItem.Index
    Set DataGrid1.DataSource = Nothing
        cmdstate = False
        Call cmdcontrol
    Exit Sub
    Else
    Exit Sub
    End If
       Else
    sql = " delete sys_user where  usertype='学生' and  bh='" & nodetext & "'"
    yesno = MsgBox("确认要删除" & nodetext & "班吗?删除后数据不可恢复,确认点yes,取消操作点no", vbYesNo + vbCritical + vbDefaultButton2, "确认删除")
    If yesno = vbYes Then
    conn.Execute (sql)
    treeview1.Nodes.Remove treeview1.SelectedItem.Index
    Set DataGrid1.DataSource = Nothing
        cmdstate = False
        Call cmdcontrol
    Exit Sub
    Else
    Exit Sub
    End If
    End If
    End If
     
    Case "教师"
    sql = " delete sys_user where usertype='教师' and xsh='" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "'"
    yesno = MsgBox("确认要删除" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "院所有教师吗?删除后数据不可恢复,确认点yes,取消操作点no", vbYesNo + vbCritical + vbDefaultButton2, "确认删除")
    If yesno = vbYes Then
    conn.Execute (sql)
    Set DataGrid1.DataSource = Nothing
        cmdstate = False
        Call cmdcontrol
    Exit Sub
    Else
    Exit Sub
    End IfCase "学院"
    sql = " delete sys_user where usertype='学院' and xsh='" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "'"
    yesno = MsgBox("确认要删除" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "院所有管理用户吗?删除后数据不可恢复,确认点yes,取消操作点no", vbYesNo + vbCritical + vbDefaultButton2, "确认删除")
    If yesno = vbYes Then
    conn.Execute (sql)
    Set DataGrid1.DataSource = Nothing
        cmdstate = False
        Call cmdcontrol
    Exit Sub
    Else
    Exit Sub
    End IfCase "管理员"
    sql = " delete sys_user where userid='" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "'"
    yesno = MsgBox("确认要删除" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "号管理员吗?删除后数据不可恢复,确认点yes,取消操作点no", vbYesNo + vbCritical + vbDefaultButton2, "确认删除")
    If yesno = vbYes Then
    conn.Execute (sql)
    Set DataGrid1.DataSource = Nothing
        cmdstate = False
        Call cmdcontrol
    Exit Sub
    Else
    Exit Sub
    End If
    Case "领导"
    sql = " delete sys_user where userid='" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "'"
    yesno = MsgBox("确认要删除" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "号管理员吗?删除后数据不可恢复,确认点yes,取消操作点no", vbYesNo + vbCritical + vbDefaultButton2, "确认删除")
    If yesno = vbYes Then
    conn.Execute (sql)
    Set DataGrid1.DataSource = Nothing
        cmdstate = False
        Call cmdcontrol
    Exit Sub
    Else
    Exit Sub
    End If
    End Select
    End Sub
    Private Sub Form_Load()
    connstr = "file name=c:\dsn\tq.udl"                                                             'form的处始化
    conn.Open connstr
    sql = "select usertype from sys_usertype"
    rs1.Open sql, conn, 3, 2
    Do While Not rs1.EOF And Not IsNull(rs1("usertype"))
    utype.AddItem rs1("usertype")
    rs1.MoveNext
    Loop
    rs1.Close
    usertype = "学生"
    Call treeout
    cmdstate = False
    cmdcontrol
    Dim NodeX As MSComctlLib.node
    End Sub
    Private Sub Form_Resize()
    If Me.WindowState = vbMinimized Then Exit Sub
    If Me.Width > 10770 Then
    DataGrid1.Width = Me.Width - 2910
    Me.cmdclose.Left = Me.Width - 1365
    Me.cmdrefresh.Left = Me.Width - 2685
    Me.cmddelete.Left = Me.Width - 3995
    Me.cmdedit.Left = Me.Width - 5325
    Me.cmdadd.Left = Me.Width - 6765
    Me.able.Left = Me.Width - 8085
    Me.cmdprint.Left = Me.Width - 2445
    Me.cmdinput.Left = Me.Width - 3995
    Me.Label2.Left = Me.Width - 7245
    End If
    If Me.Height > 4000 Then
    DataGrid1.Height = Me.Height - 1320
    Me.cmdadd.Top = Me.Height - 765
    Me.cmdedit.Top = Me.Height - 765
    Me.cmdrefresh.Top = Me.Height - 765
    Me.cmdclose.Top = Me.Height - 765
    Me.cmddelete.Top = Me.Height - 765
    Me.able.Top = Me.Height - 765
    Me.treeview1.Height = Me.Height - 1320
    End If
    If Not Me.WindowState = vbMaximized And Not Me.WindowState = vbMinimized Then
    If Me.Width < 10800 Then Me.Width = 10800
    If Me.Height < 4000 Then Me.Height = 4000
    End If
    End SubPrivate Sub jinyong_Click()
    If InStr(1, nodekey, "_", 1) = 0 Then
    Exit Sub
    End IfSelect Case usertype
    Case "学生"
    If InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1) = 0 Then
    sql = "update sys_user set disable='否' where usertype='学生' and xsh='" & Right(nodekey, Len(nodekey) - InStr(1, nodekey, "_", 1)) & "'"
    conn.Execute (sql)
    Call showdata
      Exit Sub
      Else
      If InStr(InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1) + 1, nodekey, "_", 1) = 0 Then
    sql = "update  sys_user set disable='否' where  usertype='学生' and  xsh='" & Right(nodekey, Len(nodekey) - InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1)) & "' and dqszj='" & Right(Left(nodekey, InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1) - 1), Len(Left(nodekey, InStr(InStr(1, nodekey, "_", 1) + 1, nodekey, "_", 1) - 1)) - InStr(1, nodekey, "_", 1)) & "'"
    conn.Execute (sql)
    Call showdata
      Exit Sub