Recordset в Access

Программирование на Visual Basic for Applications
Dashka
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 15.11.2004 (Пн) 14:38

Recordset в Access

Сообщение Dashka » 21.04.2006 (Пт) 11:22

Помогите пожалуйста, чтобы такая процедура хоть как-нибудь заработала:

Код: Выделить всё

Private Sub cmdLogin_Click()
Dim str As String
Dim rst As Object

Set rst = Me.Recordset
Me.username.SetFocus
str = "username='" & Me.username.Text & "'and password='"
Me.password.SetFocus
str = str & Me.password.Text & "'"

rst.Seek str        '???
If rst.EOF Then   '???
    MsgBox "Access denied."
Else
    DoCmd.OpenForm "Order_form"
End If
rst.close
End Sub

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 21.04.2006 (Пт) 11:34

Код: Выделить всё
Function SuperAutorization(sUserName as String, sUserPassword as String) as Boolean
  SuperAutorization = CurrentDB.OpenRecordset("select count(*) from users where USERNAME = '" & sUserName & "' and PASSWORD = '" & sUserPassword & "'").Fields(0) > 0
End Function
Последний раз редактировалось Nicky 03.10.2006 (Вт) 16:22, всего редактировалось 2 раз(а).

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 21.04.2006 (Пт) 11:37

1...
Последний раз редактировалось Al Khamid 18.11.2007 (Вс) 2:31, всего редактировалось 2 раз(а).

Dashka
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 15.11.2004 (Пн) 14:38

Сообщение Dashka » 21.04.2006 (Пт) 11:51

Nicky, спасибо огромное, оно заработало!

Dashka
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 15.11.2004 (Пн) 14:38

Сообщение Dashka » 21.04.2006 (Пт) 11:58

Al Khamid писал(а):1. Небольшая поправочка:
Вместо
Код: Выделить всё
Me.password.SetFocus
str = str & Me.password.Text & "'"

можно просто
Код: Выделить всё
str = str & Me.password & "'"

оно вполне корректно вернет именно текст из поля.


Не знаю, как у вас, а у меня Акцесс утверждет, что не может обращаться к объектам, на которые не установлен фокус.
А также, я обычно предпочитаю явно указывать свойства.

Al Khamid писал(а):2. Вместо Seek я бы использовал FindFirst:
Код: Выделить всё
rst.[b]FindFirst[/b] str
If rst.[b]NoMatch[/b] Then   'если такой записи не найдено
    MsgBox "Access denied."
Else
    DoCmd.OpenForm "Order_form"
End If



В обычном ВБ я бы так и сделала, а ВБА говорит, что такого метода не знает.


Al Khamid писал(а):3. Сударыня, не используйте имена встроенных функций в именах переменных. "str" в вашем примере стоит заменить например на "strCrt".

А Str() - функция, делающая строку из других типов данных :)


В оригинале переменная называлась strSQL.

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 21.04.2006 (Пт) 13:20

2Dashka
Только ты это... на ошибки еще проверяй :)
Про FindFirst, его не VBA не знает, его ADO не знает

Так я стал продвинутым пользователем

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 21.04.2006 (Пт) 13:39

Последний раз редактировалось Al Khamid 18.11.2007 (Вс) 2:30, всего редактировалось 1 раз.

Dashka
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 15.11.2004 (Пн) 14:38

Сообщение Dashka » 24.04.2006 (Пн) 15:17

Главное, чтобы оно хотя бы делало вид, что работает. Это просто прототип к курсовому проекту.

Про виды рекордсетов я уже поняла. Вот бы еще в Акцессе Хелп по-человечески работал.


Вернуться в VBA

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

Сейчас этот форум просматривают: Yandex-бот и гости: 3

    TopList