Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/30: Рейтинг темы: голосов - 30, средняя оценка - 4.80
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180

Пример перевода DAO в ADO

02.11.2017, 23:08. Показов 8012. Ответов 118
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я сильно прошу прощения за подобный вопрос, но, не могли бы вы на конкретном примере показать, как написанное в DAO будет выглядеть в ADO?

вот, пример работы с базой в DAO, напишите пожалуйста, как это будет выглядеть, если тоже самое сделать при помощи ADO?
...чесслово, заколебался уже мануалы читать - много частностей, много общего, хочу понять, как это все слепить воедино:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   Dim rs As DAO.Recordset
   Set rs = CurrentDb.OpenRecordset("AUTH", dbOpenDynaset)
   rs.MoveFirst
   Do Until rs.EOF
     If rs!login = Me.field_login Then
       If rs!passwd = Me.passwd Then
       login_name = Me.field_login
       DoCmd.OpenForm "DISTRIB"
       rs.MoveLast
       rs.MoveNext
       DoCmd.Close acForm, "Auth_start", acSaveYes
       Else
       MsgBox "Password do not match!"
       Me.passwd = ""
       rs.MoveLast
       rs.MoveNext
       End If
     Else
     rs.MoveNext
    End If
   Loop
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2017, 23:08
Ответы с готовыми решениями:

ADO и DAO
Уважаемые форумчане! Не могли бы вы дать четкое объяснение разницы между ADO и DAO? Что предпочтительнее? Нужен более простой...

ADO или DAO
Очень интересно было бы ознакомиться с мнением грамотных людей по поводу различий между ADO и DAO, а также плюсов ли минусов в ту или...

Как разобраться с ADO и DAO
Подскажите где найти доступну для понимания ламеру информацию о ADO и DAO.....

118
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
06.11.2017, 15:05  [ТС]
Студворк — интернет-сервис помощи студентам
mobile, ругается "Object required" на строку "passwd.Open strSQL, conn"

Visual Basic
1
2
3
4
5
6
7
8
9
    Set conn = Nothing
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    conn = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\!!!_work\!_Prof-Service\ACCESS-DB\!_PofServ_access\ProfServ_base_1.0.accdb;Uid=Admin;Pwd=;"
    strSQL = "SELECT passwd FROM AUTH WHERE login = '" & Me.field_login & "'"
    passwd.Open strSQL, conn
    MsgBox passwd
    conn.Close
    Set conn = Nothing
0
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
06.11.2017, 15:59
Вы, кажется пропустили строку:

Visual Basic
1
conn.Open
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
06.11.2017, 16:09
Лучший ответ Сообщение было отмечено blade_snl как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
    Dim conn As ADODB.Connection, rs As ADODB.Recordset, strSql, strConn
'    Set conn = Nothing
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    strConn = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\!!!_work\!_Prof-Service\ACCESS-DB\!_PofServ_access\ProfServ_base_1.0.accdb;Uid=Admin;Pwd=;"
    conn.Open strConn
    strSQL = "SELECT passwd FROM AUTH WHERE login = '" & Me.field_login & "'"
    rs.Open strSQL, conn
    MsgBox rs(0)
    conn.Close
    Set conn = Nothing
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
08.11.2017, 17:41  [ТС]
mobile, большое спасибо! работает )

Добавлено через 1 час 39 минут
Какаято напасть, ругается - не могу понять, почему... полностью аналогичный код в предыдущих формах работает без проблем, а тут выдает Compile error: Method or data member not found

вот код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
    Dim strSQL, strConn As String
    Set conn = Nothing
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    strConn = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\!!!_work\!_Prof-Service\ACCESS-DB\!_PofServ_access\BASE\ProfServ_DB.accdb;Uid=Admin;Pwd=;"
    conn.Open strConn
    strSQL = "SELECT group FROM AUTH WHERE login = '" & Me.fld_login & "'"
    rs.Open strSQL, conn
    auth_group = rs(0)
    conn.Close
    Set conn = Nothing
    MsgBox auth_group
ругается вроде на строку conn.Open strConn

Добавлено через 3 минуты
Me.fld_login в этой же процедуре ранее присваивается значение глобальной переменной
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
08.11.2017, 17:56
Возможно, что-то с путем к БД. Проверьте правилен ли путь. Хотя бы в области отладки редактора ВБА (Immediate). Если нажать Enter на выражении, что даст? Если пусто, то путь неверный
Visual Basic
1
?dir("D:\!!!_work\!_Prof-Service\ACCESS-DB\!_PofServ_access\BASE\ProfServ_DB.accdb")
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
08.11.2017, 18:03  [ТС]
mobile,
?dir("D:\!!!_work\!_Prof-Service\ACCESS-DB\!_PofServ_access\BASE\ProfServ_DB.acc db")
ProfServ_DB.accdb

Добавлено через 1 минуту
я подозреваю, может чтото со значением & Me.fld_login &
но если комментирую блок АДО, оставляю только проверку значения поля - оно не пустое
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
08.11.2017, 18:12
Цитата Сообщение от blade_snl Посмотреть сообщение
я подозреваю, может чтото со значением & Me.fld_login &
Это имеет отношение к рекордсету. Но никакого к соединению - Connection. Если ошибка на определении рекордсета, тогда иное дело, но Вы же пишете:
Цитата Сообщение от blade_snl Посмотреть сообщение
ругается вроде на строку conn.Open strConn
А как ругается? Что сообщает? Номер ошибки, сообщение есть? Покажите здесь.
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
08.11.2017, 18:27  [ТС]
вот скрин
Миниатюры
Пример перевода DAO в ADO  
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
08.11.2017, 18:58
Похоже, что форма накрылась. Во всяком случае у меня иного объяснения нет. Ну разве что инопланетяне гадят.
Объявления проходят, значит типы понимает, библиотека включена. Если бы дело в параметре, то сообщение было бы иное. Все настолько противоречиво, что у меня единственное объяснение - форма приехала, если в других формах все ОК.

Добавлено через 9 минут
Для очистки совести попробуйте иначе определить рекордсет. Вместо rs.Open напишите
Visual Basic
1
Set rs = conn.Execute(strSQL)
Если и так не сработает, то значит точно баг и его надо мочить в сортире
1
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
08.11.2017, 19:46
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Не я про другое - и как раз наоборот, соединение открываем, и не закрываем до конца работы приложения
Оно там открыто и не закрывается до конца работы приложения. А после закрытия приложения оно само закрывает все, что было связано с этим приложением.

Цитата Сообщение от blade_snl Посмотреть сообщение
Dim strSQL, strConn As String
* * Set conn = Nothing
* * Set conn = New ADODB.Connection
* * Set rs = New ADODB.Recordset
вы что постоянно открываете соединение в каждой форме что ли?
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
09.11.2017, 17:01  [ТС]
Добавлено через 15 секунд
Цитата Сообщение от mobile Посмотреть сообщение
Set rs = conn.Execute(strSQL)
заменил - теперь ругается "type mismatch" на строку "Set rs = New ADODB.Recordset"

Добавлено через 2 минуты
Цитата Сообщение от UBUNTU Посмотреть сообщение
вы что постоянно открываете соединение в каждой форме что ли?
да )
не нужно этого делать? я думал, если работает много пользователей, то нужно каждый раз закрывать, потом открывать по-новой
0
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
09.11.2017, 17:10
Цитата Сообщение от blade_snl Посмотреть сообщение
заменил - теперь ругается "type mismatch" на строку "Set rs = New ADODB.Recordset"
А вы случайно не забыли вставить строку от mobile ?

Visual Basic
1
Dim conn As ADODB.Connection, rs As ADODB.Recordset, strSql, strConn
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
09.11.2017, 17:30  [ТС]
Цитата Сообщение от tkrainyk Посмотреть сообщение
Dim conn As ADODB.Connection, rs As ADODB.Recordset
они у меня описаны в глобальном модуле:

Visual Basic
1
2
3
4
5
Option Compare Database
Option Explicit
Public login_name, AllArgs, form_name, auth_group, user_edit As String
Public conn As New ADODB.Connection
Public rs As New ADODB.Recordset
0
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
09.11.2017, 17:39
Цитата Сообщение от blade_snl Посмотреть сообщение
они у меня описаны в глобальном модуле:
Ну тогда получается, что вы два раза объявляете одну и ту же переменную.
1
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
09.11.2017, 18:55
А после того, как я почитал ваш первый пост, у меня возникло подозрение, что у вас одновременно объявляется и DAO и ADO Recordset.

Я думаю, что вам надо внимательно все проверить, или выложить базу на форум. У нас такие специалисты (это не я), что быстро найдут ошибку.

Вот моделирование вчерашней ошибки.

1
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
09.11.2017, 19:51
blade_snl, посмотри пример формы на наборе данных ADO - Источник данных для формы ADO, думаю будет полезно

ЗЫ. Создание источника данных для формы в примере лучше бы сделать на событие Open. я просто забыл поменять событие. Хотя можно и так.

Добавлено через 5 минут
blade_snl, возьми книжку от Гетца & Со первый том (Access 2002. Разработка настольных приложений...), там про ADO расписано с примерами
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
10.11.2017, 00:01  [ТС]
Цитата Сообщение от tkrainyk Посмотреть сообщение
Ну тогда получается, что вы два раза объявляете одну и ту же переменную.
почемуже? нет. в операторе я их уже не объявляю, тут я объявляю только строковые переменные:
Visual Basic
1
2
3
4
    Dim strSQL, strConn As String
    Set conn = Nothing
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
Добавлено через 2 минуты
Цитата Сообщение от tkrainyk Посмотреть сообщение
Вот моделирование вчерашней ошибки.
но у меня же подобный код в двух других формах отрабатывает без какихлибо ошибок... вот, например:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub btn_enter_Click()
 Dim passwd, strSQL, strConn As String
 If IsNull(fld_login.Value) = True Then
  MsgBox "Enter LOGIN please!"
 ElseIf IsNull(fld_passwd.Value) = True Then
  MsgBox "Enter PASSWORD please!"
  Else
    Set conn = Nothing
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    strConn = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\!!!_work\!_Prof-Service\ACCESS-DB\!_PofServ_access\BASE\ProfServ_DB.accdb;Uid=Admin;Pwd=;"
    conn.Open strConn
    strSQL = "SELECT passwd FROM AUTH WHERE login = '" & Me.fld_login & "'"
    rs.Open strSQL, conn
    passwd = rs(0)
    conn.Close
    Set conn = Nothing
    If passwd = Me.fld_passwd Then
        login_name = Me.fld_login
        DoCmd.OpenForm "WORK"
        DoCmd.Close acForm, "AUTH_START", acSaveYes
    Else
        MsgBox "Password do not match!"
        Me.fld_passwd = ""
    End If
 End If
End Sub
тут все хорошо, ошибок нет, все работает

Добавлено через 1 минуту
Панург, спасибо, займусь изучением
0
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
10.11.2017, 00:04  [ТС]
а по поводу ошибки - таки нет решений? ) может выложить чего? могу базу выложить, не вопрос (прилагаю)
Вложения
Тип файла: zip !_PofServ_access.zip (317.3 Кб, 6 просмотров)
0
Эксперт MS Access
 Аватар для Eugene-LS
13272 / 5949 / 1529
Регистрация: 05.10.2016
Сообщений: 16,653
10.11.2017, 00:08
Цитата Сообщение от blade_snl Посмотреть сообщение
могу базу выложить, не вопрос (прилагаю)
А как входить, и куда смотреть?
Ну с SHIFT - вошел ...
Куда смотреть?

BTW - При попытке компиляции выдаёт ошибки.
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
10.11.2017, 00:10  [ТС]
ошибка вылетает, когда в форме WORK нажимаю кнопку admin. и вот на открытие этой самой формы ADMIN и происходит баг.

Добавлено через 1 минуту
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Ну с SHIFT - вошел ...
можно и без Шифт - как ругнется - все равно откроет vba
)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2017, 00:10

Библиотеки VBA dao/ado в одной базе
подскажите пожалуйста, в программе 2 макроса, --1 работает, когда библиотека Microsoft DAO 3.6 Object library выше Macrosoft ADO Ext....

Люди, скажите свое мнение о DAO и ADO,- что лучше?
Заранее спасибо за любое мнение!

DAO - > ADO
Есть база данных ACCEESS97 - таблица TEST с полями DATEOD,LS,NAMELS и модулем DAO_test (код ниже) Помогите перевести этот код на...

Возмоможно ли с помощью DAO или ADO подключиться к удаленному серверу в интернете
Обязательно ли на серевере должен быть установлен RDS? Если возможно приведите пример строки подключения для существуещего сервера в...

Пример открытия БД на ADO и открытия таблицы
Кто-нибудь помогите с примером открытия БД на ADO и открытие таблицы. Большое спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru