当前位置:编程学习 > VB >>

vb实时错误3021

请帮我看看代码错哪里?挺乱的

 Public combo As String

Private Sub Command1_Click(Index As Integer)
 Dim ConStr As String
   Dim cn As Connection
   Dim rs As Recordset
   Dim rs1 As Recordset
   Dim rs2 As Recordset
   Dim rs3 As Recordset
  
   Set cn = New ADODB.Connection
   Set rs = New ADODB.Recordset
   Set rs1 = New ADODB.Recordset
   Set rs2 = New ADODB.Recordset
   Set rs3 = New ADODB.Recordset
   ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\ttj02.Mdb"
   cn.Open ConStr
   cn.CursorLocation = adUseClient
   rs.Open "Select * from zhuti", cn, adOpenStatic, adLockReadOnly
   rs1.Open "Select * from keti", cn, adOpenStatic, adLockReadOnly
   Dim s, o, level1, level2, depart1, depart2 As String
   s = frmlogin.UserType
   o = combo
   
         rs2.Open "Select * From zhuti Where zhiwu= '" & s & "'", cn, adOpenStatic, adLockReadOnly
         rs3.Open "Select * From keti Where ziliao= '" & o & "'", cn, adOpenStatic, adLockReadOnly
         'level1 = "SELECT * FROM zhuti WHERE zhiwu='" & s & "'"
         'level2 = "SELECT * FROM keti WHERE zhiliao='" & o & "'"
        
   level1 = rs2("degree1")
   level2 = rs3("degree1")
   depart1 = rs2("bumen1")
   depart2 = rs3("bumen1")
   Do While Not rs.EOF

   If depart1 <> depart2 Then
   MsgBox "你没有权限!", vbExclamation + vbOKCancel, "错误"
   ElseIf level1 < level2 Then
   MsgBox "你没有权限!", vbExclamation + vbOKCancel, "错误"
   
  
   If level1 >= level2 Then
   MsgBox "你有权限!", vbExclamation + vbOKCancel, "提示"
                  Form2.Show
                  Unload Me


            Exit Sub
       End If
       End If
       Loop
         rs.Close
         rs1.Close
         rs2.Close
         rs3.Close
      Set rs = Nothing
Set rs1 = Nothing
Set rs2 = Nothing
Set rs3 = Nothing

End Sub


Private Sub Command2_Click(Index As Integer)
Dim ConStr As String
   Dim cn As Connection
   Dim rs As Recordset
   Dim rs1 As Recordset
   Dim rs2 As Recordset
   Dim rs3 As Recordset
  
   Set cn = New ADODB.Connection
   Set rs = New ADODB.Recordset
   Set rs1 = New ADODB.Recordset
   Set rs2 = New ADODB.Recordset
   Set rs3 = New ADODB.Recordset
   ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\ttj02.Mdb"
   cn.Open ConStr
   cn.CursorLocation = adUseServer
   rs.Open "Select * from zhuti", cn, adOpenStatic, adLockReadOnly
   rs1.Open "Select * from keti", cn, adOpenStatic, adLockReadOnly
   Dim s, o, level1, level2 As String
   s = frmlogin.UserType
   o = Form1.combo
   
         rs2.Open "Select * From zhuti Where zhiwu= '" & s & "'", cn, adOpenStatic, adLockReadOnly
         rs3.Open "Select * From keti Where ziliao= '" & o & "'", cn, adOpenStatic, adLockReadOnly
         'level1 = "SELECT * FROM zhuti WHERE zhiwu='" & s & "'"
         'level2 = "SELECT * FROM keti WHERE zhiliao='" & o & "'"
        
    level1 = rs2("degree1")
   level2 = rs3("degree1")
   depart1 = rs2("bumen1")
   depart2 = rs3("bumen1")
   Do While Not rs.EOF

   If depart1 <> depart2 Then
   MsgBox "你没有权限!", vbExclamation + vbOKCancel, "错误"
   ElseIf level2 < level1 Then
   MsgBox "你没有权限!", vbExclamation + vbOKCancel, "错误"
   
  
   If level2 >= level1 Then
   MsgBox "你有权限!", vbExclamation + vbOKCancel, "提示"
                  Form2.Show
                  Unload Me


            Exit Sub
       End If
       End If
       Loop
         rs.Close
         rs1.Close
         rs2.Close
         rs3.Close
      Set rs = Nothing
Set rs1 = Nothing
Set rs2 = Nothing
Set rs3 = Nothing

End Sub

Private Sub Form_Load()
With Combo2(0)


            .AddItem "生产部交总经理资料"
            .AddItem "生产部交经理资料"
            .AddItem "生产部交主管资料"
            .AddItem "生产部一般资料"
            
 End With

With Combo3(1)


           .AddItem "销售部交总经理资料"
            .AddItem "销售部交经理资料"
            .AddItem "销售部交主管资料"
            .AddItem "销售部一般资料"
           
 End With
With Combo4(2)


           .AddItem "采购部交总经理资料"
            .AddItem "采购部交经理资料"
            .AddItem "采购部交主管资料"
            .AddItem "采购部一般资料"
           
End With
With Combo5(3)


            .AddItem "生产部交总经理资料"
            .AddItem "生产部交经理资料"
            .AddItem "生产部交主管资料"
            .AddItem "生产部一般资料"
           
 End With

 combo = Left(Combo2(0).Text, 12)
 combo = Left(Combo3(1).Text, 12)
 combo = Left(Combo4(2).Text, 12)
 combo = Left(Combo5(3).Text, 12)
 
End Sub
错误字段:level2 = rs3("degree1")

depart2 = rs3("bumen1") 
--------------------编程问答-------------------- 赋值以前要判断记录集是否有数据返回 --------------------编程问答-------------------- 那要怎么写代码呢? --------------------编程问答-------------------- 错误提示在哪一句处?? --------------------编程问答-------------------- level2 = rs3("degree1")  --------------------编程问答-------------------- 如果确是因为没有记录集返回造成的错误:
if not rs3.eof then
   level2 = rs3("degree1") 
   depart2 = rs3("bumen1") 
...
end if --------------------编程问答-------------------- if (not rs3.eof) and (not rs3.bof) then 
   level2 = rs3("degree1")  
   depart2 = rs3("bumen1")  
   '.......
end if --------------------编程问答-------------------- 新记录集尚未迁移,5 楼代码足矣。 --------------------编程问答-------------------- 如果我这么写了还是错呢?会不会有可能没连上数据库? --------------------编程问答-------------------- 已经没有那个错误了,可按下按键后一点反应都没有,是我循环语句错了吗? --------------------编程问答-------------------- level1 = rs2("degree1")
语句没错,就说明连接是成功的!
....
如果我这么写了还是错呢?会不会有可能没连上数据库?

你不试怎么知道!!!!! --------------------编程问答-------------------- If rs3.BOF And rs3.EOF Then  '如果为空
level2 = 0
Else                       '如果不为空
level2 = rs3("degree1")
End If
我这样写现在不报错了,可是按按键怎么什么反应都没有?代码哪里错了 --------------------编程问答-------------------- lz要干嘛?
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,