Вопрос об управлении таймером в VB6

#vb6

#vb6

Вопрос:

У меня есть некоторый запрос о моем коде, я использую VB6.0, и у меня есть вопрос об использовании TimerControl… Пользователь сначала войдет в систему [frmLogin], а затем идентификатор пользователя и пароль должны определить, является ли он администратором или гостем. Как только он был признан как администратор, пользователь будет перенаправлен к frmAdmin, а если нет, то он будет перенаправлен к frmEmployee после того, как таймер [tmLogin] / Progressbar [pgLogin] достигнет 100%. Я просто озадачен, потому что я использую базу данных с двумя таблицами[tblEmployee amp; tblPosition]. Каждая таблица имеет индекс: idxid для tblEmployee и idxpost для tblPosition… Я не знаю, куда вставить условный оператор… Пожалуйста, помогите мне, как только это будет решено, это будет моим правилом для дальнейшей проблемы, с которой я могу столкнуться… Заранее спасибо. Вот мой код

 Private Sub cmdContinue_Click()
Dim boolLogedIn As Boolean
    If Me.txtUserID.Text = "" And Me.txtPassword.Text = "" Then
        Me.lblWarning.Caption = "*User ID and Password must not be a null."
        Me.tmLoginformSize.Enabled = True
        Me.txtUserID.SetFocus
        Beep
    ElseIf Me.txtUserID.Text = "" Then
        Me.lblWarning.Caption = "*User ID must not be a null."
        Me.tmLoginformSize.Enabled = True
        Me.txtUserID.SetFocus
        Beep
    ElseIf Me.txtPassword.Text = "" Then
        Me.lblWarning.Caption = "*Password must not be a null."
        Me.tmLoginformSize.Enabled = True
        Me.txtPassword.SetFocus
        Beep
    Else
        Do Until datLogin.Recordset.EOF
            With datLogin.Recordset
                If Me.txtUserID.Text = !empid And Me.txtPassword.Text = !Password Then
                    boolLogedIn = True
                    Exit Do
                Else
                    datLogin.Recordset.MoveNext
                End If
            End With
        Loop
        If boolLogedIn = True Then
            Me.tmLogin.Enabled = True
            Me.lblConnecting.Visible = True
            Me.lblLoginPercent.Visible = True
            Me.pbLogin.Visible = True
        Else
            Me.lblWarning.Caption = "*User ID and Password did not match."
            Me.datLogin.Recordset.MoveFirst
            Me.tmLoginformSize.Enabled = True
            Beep
        End If
    End If
End Sub

Private Sub tmLogin_Timer()
    With Me.pbLogin
        Me.pbLogin.Value = Me.pbLogin.Value   1
        Me.lblLoginPercent.Caption = Str(Me.pbLogin.Value)   "%"
        If Me.pbLogin.Value >= 1 And Me.pbLogin.Value < 50 Then
            Me.lblConnecting.Caption = "Connecting..."
        ElseIf Me.pbLogin.Value >= 50 And Me.pbLogin.Value < 100 Then
            Me.lblConnecting.Caption = "Logging in..."
        Else
            Me.lblConnecting.Caption = "Done..."
            frmLogin.Hide
            frmEmployee.Show
            Me.tmLogin.Enabled = False
        End If
    End With
End Sub
  

…Вот мои скриншоты
мои таблицы

мой frmLogin

Ответ №1:

Ваш вопрос недостаточно ясен. Если вы хотите загрузить форму в соответствии с администратором или другим, вы можете использовать вот так

 dim r as new adodb.recordset
r.open "select postid from tblemployee",db,adopendynamic,adlockoptimistic,adcmdtext

'db is your adodb.connection

if r.eof then
    msgbox "name/pass not matched"
    exit sub
else
    'do whatever you like with your postid in r.fields(0)
end if
  

Комментарии:

1. … Не могли бы вы спросить, какова цель этих ,db,adopendynamic,adlockoptimistic,adcmdtext … Заранее спасибо.

2. Вам следует взглянуть на эту ссылку . В нем дается краткое описание каждого параметра.

Ответ №2:

Вот как я бы выполнил то, что вы ищете, с минимальными изменениями в вашем коде :

 'Add this declaration 
Dim m_intLoggedInUserType As Integer

Private Sub cmdContinue_Click()
    'Unchanged code

        Do Until datLogin.Recordset.EOF
            With datLogin.Recordset
                If Me.txtUserID.Text = !empid And Me.txtPassword.Text = !Password Then
                    boolLogedIn = True
                    m_intLoggedInUserType = !postId
                    Exit Do
                Else
                    datLogin.Recordset.MoveNext
                End If
            End With
        Loop

        'More unchanged code
End Sub

Private Sub tmLogin_Timer()
    With Me.pbLogin
        'Unchanged code

            Me.lblConnecting.Caption = "Done..."
            frmLogin.Hide

            if m_intLoggendInUserType = 1 Then 
               frmAdmin.Show
            Else
               frmEmployee.Show
            End If

            Me.tmLogin.Enabled = False
        End If
    End With
End Sub
  

Вам также следует принять к сведению ответ Rasel, поскольку работа напрямую с объектами connection и recordset предпочтительнее datacontrol.

Комментарии:

1. Спасибо… Я получил его с вашим ответом.