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

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

02.11.2017, 23:08. Показов 7981. Ответов 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
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,652
10.11.2017, 00:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от blade_snl Посмотреть сообщение
когда в форме WORK нажимаю кнопку admin
Форма "WORK" - не открывается ...

Думаю нужно применить относительный путь.
Миниатюры
Пример перевода DAO в ADO  
1
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
10.11.2017, 00:33
Если изменить путь для соединения (считая, и у ТС база с таблицами находится в той же папке что и БД с формами, но в подпапке BASE), то открывается форма WORK без ошибок
Visual Basic
1
2
3
    strConn = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};" _
    & "Dbq=" & CurrentProject.Path & "\Base\ProfServ_DB.accdb;" _
    & "Uid=Admin;Pwd=;"
2
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,652
10.11.2017, 00:40
Цитата Сообщение от mobile Посмотреть сообщение
Если изменить путь для соединения (считая, и у ТС база с таблицами находится в той же папке что и БД с формами, но в подпапке BASE), то открывается форма WORK без ошибок
Скорей всего так и есть.

Подправьте пожалуйста, а я устал уже сегодня.
Вываливаюсь....
Всем всего наилучшего!
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
10.11.2017, 01:14  [ТС]
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Форма "WORK" - не открывается ...
не, ну понятно, что путь нужно прописать свой... мой конечно не сработает... )))

Добавлено через 10 минут
Цитата Сообщение от mobile Посмотреть сообщение
считая, и у ТС база с таблицами находится в той же папке что и БД с формами, но в подпапке BASE
предполагается разворачивание базы на терминальном сервере. БД перекочует по итогу в SQL-server, файл с vba и формами будет клонирован по локальным пользователям терминального сервера... по идее, путь у всех будет одинаковым в этом случае и это уберет проблему?

Цитата Сообщение от Eugene-LS Посмотреть сообщение
Скорей всего так и есть.
я подправил, но вылетает все равно ошибка "type mismatch" на строку "Set rs = New ADODB.Recordset"
вот как выглядит код после исправления:
Visual Basic
1
2
3
    Set rs = New ADODB.Recordset
    strConn = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};" & "Dbq=" & CurrentProject.Path & "\Base\ProfServ_DB.accdb;" & "Uid=Admin;Pwd=;"
    conn.Open strConn
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
10.11.2017, 01:42
Я отменил hidde_on, тяжело с ней отлаживать, также исправьте всплывающее и модальное окно формы. Заменил строку соединения как показывал выше и все работает. Выкладываю
Вложения
Тип файла: rar ProfServ_base_1.0.rar (74.1 Кб, 4 просмотров)
1
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
10.11.2017, 06:01
blade_snl, Не надо закрывать соединение и открывать постоянно. На будущие 1 сессия с работы с базой 1 пользователь на все время пока не закроет программу.
1
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
10.11.2017, 12:09
blade_snl, поправил тебе твой пример, добавил в авторизацию и в форме WORK получение данных с помощью ADO. Теперь они независимы от прилинкованых таблиц. Нещадно там у тебя заремил в остальных формах (Option Explicit ставить нужно!), т.к. не компилировалось. Исправляй. Убрал твоё скрытие, нужно будет вернёшь.
Убрал комбобокс с формы авторизации (заменил на текстбокс), неохота было возится с наполнением.
Вложения
Тип файла: zip ProfServ_base_1.1.zip (115.2 Кб, 7 просмотров)
1
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
10.11.2017, 12:09
del
0
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
10.11.2017, 12:14  [ТС]
Цитата Сообщение от UBUNTU Посмотреть сообщение
Не надо закрывать соединение и открывать постоянно
это не залочит базу для остальных пользователей?

Добавлено через 1 минуту
Панург, сегодня буду разбираться )
0
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,652
10.11.2017, 12:30
Цитата Сообщение от blade_snl Посмотреть сообщение
это не залочит базу для остальных пользователей?
Нет.
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
10.11.2017, 16:48  [ТС]
Добавлено через 15 секунд
Панург, большое спасибо, все приятно преобразилось! )
вопрос. переменную "rs" я объявил глобально в Модуле: "Public rs As New ADODB.Recordset"
в форме WORK в твоем коде она снова объявляется "Dim rs As ADODB.Recordset"

это нужно?
0
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
10.11.2017, 17:05
Цитата Сообщение от blade_snl Посмотреть сообщение
в форме WORK в твоем коде она снова объявляется "Dim rs As ADODB.Recordset"
Это я и имел в виду, когда писал вчера, что вы два раза объявляете одну и ту же переменную. Но потом подумал, что если еще раз объявить переменную в модуле формы, то ошибки не будет, так как область видимости этой переменной будет ограничиваться формой.

Лично я думаю, что второй раз объявлять переменную не надо.

Но Панург ответит лучше меня.
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
10.11.2017, 17:13  [ТС]
Панург, еще вопрос:
в запросе "strSQL = "SELECT TOP 1 group FROM AUTH WHERE login = '" & Me.fld_login & "'""
TOP 1 - указывается для того, чтоб был возврат только одного значения group в случае, если login совпадет в нескольких строках?
если я понял верно - то нужно ли это делать в случае, когда поле login является индексным и исключает дубли?
0
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
10.11.2017, 18:11
Цитата Сообщение от blade_snl Посмотреть сообщение
это нужно?
Я её не заметил, так как быстро писал, так бы удалил. Я не вижу нужды в переменной уровня модуля. Не используй без надобности глобальных переменных.
Цитата Сообщение от tkrainyk Посмотреть сообщение
Но Панург ответит лучше меня.
ИМХО, глобальные переменные перебиваются локальными. Ещё раз, без нужды не использовать.
Цитата Сообщение от blade_snl Посмотреть сообщение
в запросе "strSQL ...TOP 1
Ещё раз повторюсь, я сильно не разбирался в структуре, но мне нужно было одно значение (хотя вообще если будет несколько одинаковых записей, то и вернутся они все) и я его получаю - зачем тянуть всё остальное. Кстати, в данном месте был получен самый быстрый набор данных ADO.

Задача примера была показать как работать с библиотекой ADODB, вот на это и был обращён пример. Всё остальное вторично. Но по возможности дам пояснения на вопросы.

Добавлено через 8 минут
Цитата Сообщение от blade_snl Посмотреть сообщение
объявил... "Public rs As New ADODB.Recordset"
Старайся не объявлять так объекты, тем более глобально. Лично я предпочитаю контролируемое объявление объектов и их инициализацию. Но это дело вкуса. Так же нафига её делать публичной?
2
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
12.11.2017, 16:47
Цитата Сообщение от Панург Посмотреть сообщение
Так же нафига её делать публичной?
Видите ли уважаемый, я предполагаю, что писалось это в Visual Basic 6.0, а публичной она делалась для того, чтобы ее можно было использовать из любой формы проекта.

Обратимся к MSDN и найдем следующие:

Public (Visual Basic):

Указывает, что один или несколько объявленных элементов программирования не имеют ограничений доступа.
Далее просмотрим:

Оператор Dim

Компилятор Visual Basic использует операторDim для определения типа данных переменной и другой информации, например, какой код может получить доступ к переменной.
1
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
12.11.2017, 17:23
UBUNTU, зачем этот пост ниочём? Что сказать то хотел?
1
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
12.11.2017, 18:19
Я хотел бы поддержать Панург в этом вопросе.

Лично у меня объявление Recordset как глобальной переменной
Visual Basic
1
Public rs As ADODB.Recordset
вызывало ошибку, когда в базе было открыто одновременно несколько форм.

С моей точки зрения, лучше каждый Recordset объявлять отдельно на уровне модуля формы или процедуры.
Visual Basic
1
Dim rs As ADODB.Recordset
3
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,652
12.11.2017, 19:27
Цитата Сообщение от tkrainyk Посмотреть сообщение
С моей точки зрения, лучше каждый Recordset объявлять отдельно на уровне модуля формы или процедуры.
Полностью поддерживаю эту здравую мысль.
2
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
13.11.2017, 10:17
Цитата Сообщение от Панург Посмотреть сообщение
Так же нафига её делать публичной?
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Полностью поддерживаю эту здравую мысль.
Конечно ваше дело, но постоянно объявлять ее в отдельных блоках... Когда надоест прибегните к глобальной переменной.
1
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,652
13.11.2017, 10:22
Цитата Сообщение от UBUNTU Посмотреть сообщение
Конечно ваше дело, но постоянно объявлять ее в отдельных блоках... Когда надоест прибегните к глобальной переменной.
Я вас понял.
Но если в БД (случайно) будет больше одной таблицы.
Это конечно нестандартная ситуёвина, но часто бывает что БД несколько источников данных.
Уж простите.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2017, 10:22

Библиотеки 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 и открытие таблицы. Большое спасибо.


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
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. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru