谢谢!

解决方案 »

  1.   

    我还有些小问题想请叫:
    我在使用datagrid和ado+sqlserver
    为什么我总是在选择更新了以后。
    如果不去增加或者显示的话。
    就会写进数据库里。
    相反就会写不进去?
    这是为什么呢
      

  2.   

    如何锁定除某个按钮(用来重新登陆用)之外所有的控件和窗体?并且能得到锁定时的时间和退出该系统的时间呢 
    我用了先锁住了其它所有的键的方法,
    但是重新弹出对话框时登陆时的判断都对。
    但是进不去主窗口。
    是不是因为我调用的次序不对呢?
    我调用的次序是登陆框里用show方法调出主窗口。
    这种问题该如何解决呢》?
    有时间帮我解决一些。
      

  3.   

    Private Sub cmdOK_Click()'以下是用来验证身份用的在frmlogin里'以下用来联接数据源
    Dim txtSQL As String
    Dim ConnectString As String
    Dim conn As ADODB.Connection
    Set conn = New ADODB.Connection
        Dim sstr As ADODB.Recordset
        Set sstr = New ADODB.Recordset
    ConnectString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=home"
    conn.Open ConnectString  '以下代码下来验证登陆
        UserName = ""
        If Trim(txtUserName.Text = "") Then
            MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
            txtUserName.SetFocus
        Else
            txtSQL = "select * from 工作人员信息表 where 姓名 = '" & txtUserName.Text & "'"
            sstr.Open txtSQL, conn, adOpenStatic, adLockOptimistic
            WorkerID = sstr.Fields(0)
            WorkerName = sstr.Fields(4)
            WorkerPower = sstr.Fields(6)
            SystemID = sstr.Fields(1)
         If sstr.EOF Then
                MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
                txtUserName.SetFocus
            Else
            If Trim(sstr.Fields("密码")) = Trim(txtPassword.Text) Then
            Select Case sstr.Fields("权限级别")
            Case 0
                Load frmSystemMain
                frmSystemMain.Show
                End Select
                    OK = True
                    sstr.Close
                    Me.Hide
                    UserName = Trim(txtUserName.Text)
                Else
                    MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
                    txtPassword.SetFocus
                    txtPassword.Text = ""
                End If
            End If
        End If
        
        miCount = miCount + 1
        If miCount = 3 Then
            Me.Hide
        End If
        Exit Sub
        conn.Close
        rs.Close
        Set conn = Nothing
        Set rs = Nothing
    End Sub——————————————————————————————————————————
    以下代码是主窗口frmsystemmain的toolbar事件,第四个按钮为锁住按钮。Private Sub tblSystem_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case UCase(Button.Index)
    Case 1
    frmSystem.Show
    Case 2
    frmData.Show
    Case 3
    frmWorker.Show
    Case 4
    Dim conn1 As ADODB.Connection
    Dim rs1 As ADODB.Recordset
    Set conn1 = New ADODB.Connection
    Dim ConnString As String
    ConnString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=hospital"
    txtSQL = "insert into 日志表 (工作人员ID,姓名,账号,访问内容,锁定系统时间) values('" & CStr(WorkerID) & "','" & CStr(WorkerName) & "','" & CStr(SystemID) & "',"您访问的是系统管理页面!","&now()&")"
    conn.execute(txtSQL)
    tblSystem.Buttons(1).Enabled = False
    tblSystem.Buttons(2).Enabled = False
    tblSystem.Buttons(3).Enabled = False
    tblSystem.Buttons(5).Enabled = False
    tblSystem.Buttons(6).Enabled = False
    tblSystem.Buttons(7).Enabled = False
    frmLogin.Show
    Case 5
    frmPrint.Show
    Case 6
    frmHelp.Show
    Case 7
    End
    End Select
    End Sub
    ——————————————————
    其中运行时提示INSERT语句中的values处有错,
    什么第一行‘8’
    不知是什么意思!
    ——————————————————————————————————————————
    以上是不能重新调出主窗口的问题,这是我的第一个工程,,请多多帮忙
    ——————————————————————————————————————————————————————Private Sub cmdAdd_Click()
    dgWorker.AllowAddNew = True
    dgWorker.AllowUpdate = True
    Dim txtSQL As String
    txtSQL = "select * from 工作人员信息表"
    adoWorker.RecordSource = txtSQL
    adoWorker.RefreshEnd SubPrivate Sub cmdDelete_Click() '删除用户指定行。
    Dim txtSQL As String
    dgWorker.AllowDelete = True
    dgWorker.SelBooks.Remove (dgWorker.Row)
    adoWorker.RecordSource = txtSQL
    End SubPrivate Sub cmdExit_Click() '退出系统
    Unload Me
    End SubPrivate Sub cmdSeek_Click() '用来查询工作人员的相关资料,查询条件是工作人员ID号和姓名。
    Dim txtSQL As String
    dgWorker.AllowAddNew = False
    dgWorker.AllowDelete = False
    dgWorker.AllowUpdate = False
    If (Trim(txtWorkerID(0).Text) = "" And Trim(txtWorkerName.Text) = "") Then
    MsgBox "必须要输入查询条件!", vbOKOnly + vbExclamation, "警告"
    Else
    If Trim(txtWorkerID(0).Text) = "" Then
    txtSQL = "select * from 工作人员信息表 where 姓名 like '" & Trim(txtWorkerName.Text) & "'"
    adoWorker.RecordSource = txtSQL
    adoWorker.Refresh
    If adoWorker.Recordset.BOF Then
    MsgBox "没有此人的记录,请确认!", vbOKOnly + vbExclamation, "警告"
    End If
    Else
    If Trim(txtWorkerName.Text) = "" Then
    txtSQL = "select * from 工作人员信息表 where 工作人员ID like '" & Trim(txtWorkerID(0).Text) & "'"
    adoWorker.RecordSource = txtSQL
    adoWorker.Refresh
    If adoWorker.Recordset.BOF Then
    MsgBox "没有此人的记录,请确认!", vbOKOnly + vbExclamation, "警告"
    End If
    Else
    txtSQL = "select * from 工作人员信息表 where 工作人员ID like '" & Trim(txtWorkerID(0).Text) & "' and 姓名 like '" & Trim(txtWorkerName.Text) & "'"
    adoWorker.RecordSource = txtSQL
    adoWorker.Refresh
    If adoWorker.Recordset.BOF Then
    MsgBox "没有此人的记录,请确认!", vbOKOnly + vbExclamation, "警告"
    End If
    End If
    End If
    End If
    End SubPrivate Sub cmdShow_Click() '显示所有记录
    Dim txtSQL As String
    dgWorker.AllowAddNew = False
    dgWorker.AllowDelete = False
    dgWorker.AllowUpdate = False
    txtSQL = "select * from 工作人员信息表"
    adoWorker.RecordSource = txtSQL
    adoWorker.Refresh
    End SubPrivate Sub cmdUpdate_Click()
    dgWorker.AllowUpdate = True
    End SubPrivate Sub dgWorker_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 2 Then
    PopupMenu pop
        End If
    End SubPrivate Sub Form_Load()
    cblSex.AddItem ("男")
    cblSex.AddItem ("女")
    dgWorker.AllowAddNew = False
    dgWorker.AllowDelete = False
    dgWorker.AllowUpdate = False
    tvPerson.Nodes.Add , , "ROOT", "所有工作人员", ImageList1.ListImages(1).Index
     
        arry1 = Array("系统管理员", "专家", "工作人员", "部门经理", "财务人员")
        For Index = 0 To 4
       tvPerson.Nodes.Add "ROOT", tvwChild, , arry1(Index), ImageList1.ListImages(Index + 1).Index
    Next    
    End SubPrivate Sub mnuaddnew_Click()
    dgWorker.AllowAddNew = True
    dgWorker.AllowDelete = False
    dgWorker.AllowUpdate = TrueEnd SubPrivate Sub tvPerson_Click()
    Dim newnode As Node
    Dim IndexSet newnode = tvPerson.SelectedItemSelect Case newnode.Text
        Case "所有工作人员"
        txtSQL = "select * from 工作人员信息表 "
        adoWorker.RecordSource = txtSQL
        adoWorker.Refresh
        
        Case "专家"
        txtSQL = "select * from 工作人员信息表 where 权限级别=1"
        adoWorker.RecordSource = txtSQL
        adoWorker.Refresh
        
        Case "工作人员"
        txtSQL = "select * from 工作人员信息表 where 权限级别=2"
        adoWorker.RecordSource = txtSQL
        adoWorker.Refresh
        
        Case "部门经理"
        txtSQL = "select * from 工作人员信息表 where 权限级别=3"
        adoWorker.RecordSource = txtSQL
        adoWorker.Refresh
        
        Case "财务经理"
        txtSQL = "select * from 工作人员信息表 where 权限级别=4"
        adoWorker.RecordSource = txtSQL
        adoWorker.Refresh
        
        Case "系统管理员"
        
        txtSQL = "select * from 工作人员信息表 where 权限级别=0"
        adoWorker.RecordSource = txtSQL
        adoWorker.Refresh
        
        
    End SelectEnd Sub
    ————————————————————————————————————
    以上是这个窗口的主代码,就是刷新问题。
      

  4.   

    为什么我总是在选择更新了以后。
    如果不去增加或者显示的话。
    就会写进数据库里。
    相反就会写不进去?Private Sub cmdShow_Click() '显示所有记录
        Dim txtSQL As String
        dgWorker.AllowAddNew = False
        dgWorker.AllowDelete = False
        dgWorker.AllowUpdate = False   '把自动更新置为FALSE了,所以写不进去
        txtSQL = "select * from 工作人员信息表"
        adoWorker.RecordSource = txtSQL
        adoWorker.Refresh
    End Sub我有点不明白,是进不去主窗口还是进不去这几个按钮
    tblSystem.Buttons(1).Enabled = False
    tblSystem.Buttons(2).Enabled = False
    tblSystem.Buttons(3).Enabled = False
    tblSystem.Buttons(5).Enabled = False
    tblSystem.Buttons(6).Enabled = False
    tblSystem.Buttons(7).Enabled = False这几个按钮解锁的代码在那里?
    txtSQL = "insert into 日志表 (工作人员ID,姓名,账号,访问内容,锁定系统时间) values('" & CStr(WorkerID) & "','" & CStr(WorkerName) & "','" & CStr(SystemID) & "',"您访问的是系统管理页面!","&now()&")""您访问的是系统管理页面!" 要用单引号 '您访问的是系统管理页面!'"&now()&"------" & Now() & "
    另外工作人员ID和账号都是字符型的吗?如果是数字型的那么要去掉单引号和cstr的
      

  5.   

    是进不去主窗口,
    frmlogin是登陆窗口,这几个按钮是完成别的功能,并不需要解锁。我指的是若按锁住按钮后就再次出现登陆窗口。
    可是出现的问题是出现登陆窗口后就再也进不去主窗口了,就是密码和用户名都正确也进不去。
    只是判断功能还在。
    我用的frmsystemmain.show方法,        If Trim(sstr.Fields("密码")) = Trim(txtPassword.Text) Then
            Select Case sstr.Fields("权限级别")
            Case 0
                Load frmSystemMain
                frmSystemMain.Show
    但是这个锁屏按钮是在frmsystemmian(主窗口上的)
    ——————————————————————————————
    问题二:
    Dim conn1 As ADODB.Connection
    Dim rs1 As ADODB.Recordset
    Set conn1 = New ADODB.Connection
    Dim ConnString As String
    ConnString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=hospital"
    txtSQL = "insert into 日志表 (工作人员ID,姓名,账号,访问内容,锁定系统时间) values('" & CStr(WorkerID) & "','" & CStr(WorkerName) & "','" & CStr(SystemID) & "','您访问的是系统管理页面!'," & Now() & ")"
    conn1.Execute (txtSQL)
    这个insert into 语句也没有任何问题,
    但是总是提示对象关闭时不允许被操作,即使我像以上重新定义了一个conn 和 rs对象也不行。
    不知为什么。
    ————————————————
    谢谢!
    有空请帮我回答。
      

  6.   

    Case 0
        Load frmSystemMain
        frmSystemMain.Show
    能执行到这一步吗?
    问题二:
    conn1.open
    conn1.Execute (txtSQL)
      

  7.   

    用f8的话执行不到这一步。
    好像到form_resize
    就不执行了。
      

  8.   

    form_resize里有代码吗?有的话先屏蔽看看
      

  9.   

    如果先屏蔽的话
    它就会执行到主窗口不动了。
    以下它不执行了。
    Private Sub tblSystem_ButtonClick(ByVal Button As MSComctlLib.Button)

    End Sub
      

  10.   

    'Private Sub Form_Resize() '窗体载入时修改装入尺寸
    'fraSystem.Top = frmSystemMain.Top + 1080
    'fraSystem.Left = 0
    'fraSystem.Width = 16000
    'fraSystem.Height = 10000
    'End Sub
      

  11.   

    问题可能就在这里:fraSystem.Top = frmSystemMain.Top + 1080
    因为你并没有退出frmSystemMain,所以每次show都要加1080,超出屏幕了
      

  12.   

    不好意思!
    我刚才上不了网。
    可是frmlogin.show可以出来。
    但是在frmlogin里调不出frmsystemmain.
    form resize里我都注释掉了。
    可是frmsystemmain还是出不来。
      

  13.   

    我也实在闹不明白了,你把代码先全部屏蔽掉,看frmsystemmain能否出来,如果能出来,你再一个一个模块调试吧
      

  14.   

    以后有问题
    请多多指教!!
    QQ:33268647
    请注明:CSDN
      

  15.   

    还是不行啊,
    搞了两个小时,一无所获,初学的困惑。
    我把除那个锁定之外的键全部都注释掉了。
    但不是不行。
    即时新建一个frmlogin 登陆窗口,但是主窗口还是出不来。
    努力中,请继续关注!!