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

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

02.11.2017, 23:08. Показов 7965. Ответов 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
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,651
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
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru