Private Sub poL01_AfterUpdate() ' после ввода кода пользователя
On Error GoTo Err_AfterUpdate
' контроль правильности кода пользователя
Dim vc As ADODB.Connection, rcD1 As New ADODB.Recordset, sT As String
Dim Tip1 As Integer
giWhUser = Me![pol01] ' присвоение номера пользователя
Tip1 = 0
Set vc = CurrentProject.Connection
vc.BeginTrans ' запуск транзакции
DoCmd.Hourglass True ' включить знак песочные часы
sT = "SELECT s.nUser, s.urDop, s.sFam, s.sNam, s.sOtch, s.sOtdel, s.uParol FROM sprUser AS s WHERE (((s.uParolID)<>0));"
rcD1.Open sT, vc, adOpenKeyset, adLockOptimistic
rcD1.MoveFirst ' переход в начало - первая запись в наборе данных
Do Until rcD1.EOF
If rcD1![nUser] = giWhUser Then
' если номер найден , присвоить значения переменным
giWhUrDop = rcD1![urDop]
gsWhNamUser = rcD1![sFam] & " " & rcD1![sNam] & " " & rcD1![sOtch]
gsWhNmOtdel = rcD1![sOtdel]
gsWhUserPar = rcD1![uParol]
Tip1 = 1
Exit Do
End If
rcD1.MoveNext
Loop
vc.CommitTrans ' всё закончить транзакцию
vc.Close ' закрыть подключение
Set vc = Nothing ' очистить значение переменной
DoCmd.Hourglass False ' выключить знак песочные часы
' если не нашли то выводим сообщение и закончили
If Tip1 = 0 Then
MsgBox "Код пользователя : " & giWhUser & " не верен !!! ", vbCritical, "КОД пользователя"
Me![pol01] = Tip1
Exit Sub
End If
' при правильном коде - открываем элементы на форме
Me![pol02] = gsWhNamUser
Me![nad02].Visible = True: Me![pol02].Visible = True
Me![nad03].Visible = True: Me![pol03].Visible = True
Me![pol03].SetFocus ' установка фокуса ввода на поле pol03
Exit_AfterUpdate:
Exit Sub
Err_AfterUpdate:
MsgBox Err.Description
Resume Exit_AfterUpdate
sT = "SELECT nUser, urDop, sFam, sNam, sOtch, sOtdel, uParol FROM sprUser AS s WHERE (nUser=" & giWhUser & ");"
" & имяПеременной & "
dormouse писал(а):При том, что выборка SQL работает всегда быстрее, чем последующий перебор в VB-коде
Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 96