#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
…Вот мои скриншоты
Ответ №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. Спасибо… Я получил его с вашим ответом.