Access процедура обработки событий

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Elvis
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 09.07.2009 (Чт) 7:34

Access процедура обработки событий

Сообщение Elvis » 09.07.2009 (Чт) 7:48

Редактор скриптов в Access - нужно в кнопке прописать процедуру, которая при запуске запроса в случае неверно введенного значения на выборку, выдавала бы сообщение об ошибке :?: Если более подробно то нужно реализовать систему персональных шифров доступа к базе при осуществлении через запрос))

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Access процедура обработки событий

Сообщение Денис » 09.07.2009 (Чт) 9:24

Так. Еще раз. И поподробнее. Что за шифры? Они идут параметром запроса?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

Re: Access процедура обработки событий

Сообщение Roman Koff » 09.07.2009 (Чт) 9:38

Совет. Ищи более правильные, стандартные и простые решения ...
Не изобретай велосипед ...
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

Elvis
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 09.07.2009 (Чт) 7:34

Re: Access процедура обработки событий

Сообщение Elvis » 10.07.2009 (Пт) 6:29

Private Sub Baton_Enter_Click()
On Error GoTo Err_Baton_Enter_Click

Dim stDocName As String
Dim stLinkCriteria As String

DoCmd.Close
stDocName = "f_welcome"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Baton_Enter_Click:
Exit Sub

Err_Baton_Enter_Click:
MsgBox Err.Description
Resume Exit_Baton_Enter_Click

End Sub
Как расписать процедуру чтобы при выборке равной 1 происходил переход к одной форме, а при пустой выборке к другой форме......Если осуществить через IF Else Then то надо как-то обозначить запрос в виде переменной...как это сделать о_0 не разу с VBA и VBScript не сталкивался.....

dormouse
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 140
Зарегистрирован: 10.01.2007 (Ср) 21:58
Откуда: Волжский

Re: Access процедура обработки событий

Сообщение dormouse » 10.07.2009 (Пт) 14:30

Это чтоже получается?
открываем запрос с параметром. пользователь вводит значение параметра напрямую через стандартный даилог. запрос выполняется. и только теперь мы выясняем, что ввёл пользователь? и реагируем на "ошибку" показом заданного даилога?

если я это понял правильно, то надо делать так:

делаем форму со свободным полем, куда пользователь пишет значение. проверяем его на "ошибки". потом открываем запрос с критерием из того поля. Т.е. в точности всё наоборот
VBA, MSA97

Elvis
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 09.07.2009 (Чт) 7:34

Re: Access процедура обработки событий

Сообщение Elvis » 13.07.2009 (Пн) 6:28

Хммммм....конструктивно о_0
Нашел еще способ, но что-то косяк какой-то всплывает
Код: Выделить всё
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

при проверке правильности ввода постоянно выдает сообщение о не правильно введенном шифре
Безымянный.jpg
Ошибка
Безымянный.jpg (32.69 Кб) Просмотров: 1020

Где-то в выборке косяк, а вот где именно не пойму. :cry: ....все базы с кодами есть

dormouse
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 140
Зарегистрирован: 10.01.2007 (Ср) 21:58
Откуда: Волжский

Re: Access процедура обработки событий

Сообщение dormouse » 13.07.2009 (Пн) 10:46

зачем так сложно? нельзя сразу в запросе написать условие? При том, что выборка SQL работает всегда быстрее, чем последующий перебор в VB-коде
Код: Выделить всё
sT = "SELECT nUser, urDop, sFam, sNam, sOtch, sOtdel, uParol FROM sprUser AS s WHERE (nUser=" & giWhUser & ");"

и в случае затруднений с результатами запроса проверяй запрос в конструкторе. напиши в конструкторе любое правильное условие и посмотри, как оно записалось в SQL-виде. потом только подставленное условие заменишь на
Код: Выделить всё
" & имяПеременной & "
и вставишь в VB-код
VBA, MSA97

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Access процедура обработки событий

Сообщение alibek » 13.07.2009 (Пн) 10:48

dormouse писал(а):При том, что выборка SQL работает всегда быстрее, чем последующий перебор в VB-коде

Затраты на выполнение запроса ты учел?
Lasciate ogni speranza, voi ch'entrate.

Elvis
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 09.07.2009 (Чт) 7:34

Re: Access процедура обработки событий

Сообщение Elvis » 16.07.2009 (Чт) 8:35

:o :o :D :) :D Всем спасибо, господа - все уже сделал............о_0 Roman Koff велосипед не стал изобретать.....


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 81

    TopList