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

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

02.11.2017, 23:08. Показов 7979. Ответов 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
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
13.11.2017, 10:46
Студворк — интернет-сервис помощи студентам
Если рекордсет статический по редко обновляемому справочнику и где предусмотрен ритуал обновления справочника, то такой рекордсет объявлять глобальным удобно и безопасно. Если же рекордсет многотабличный по таблицам фактов, то велика вероятность случайных конфликтов, особенно в многопользовательском режиме. И делать его публичным себе дороже.
2
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
13.11.2017, 12:29
Цитата Сообщение от UBUNTU Посмотреть сообщение
Конечно ваше дело, но постоянно объявлять ее в отдельных блоках... Когда надоест прибегните к глобальной переменной.
Во первых, одни и те же переменные не нужны во многих процедурах. Во вторых, использование одних и тех же переменных (глобальных) при разрастании кода грозит вылится в труднодиагностируемые ошибки. В третьих, при любых необработаных ошибках глобальные переменные сбрасываются. В четвёртых, иногда объекты проще не уничтожать целенаправленно, а бросать и сборщик мусора удалит их как только они выйдут из области видимости (глобальные когда выйдут?). И прочее, прочее, прочее...

Мне букв не жалко, могу объявлять в каждой процедуре/функции - не переломлюсь. Чтобы объявлять переменные выше уровня процедуры/функции нужно иметь веские аргументы, а не просто лень
2
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
13.11.2017, 13:33
Цитата Сообщение от Панург Посмотреть сообщение
а не просто лень
Сразу видно больших проектов не писалось.
1
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,973
Записей в блоге: 4
13.11.2017, 14:10
Цитата Сообщение от UBUNTU Посмотреть сообщение
Сразу видно больших проектов не писалось.
видела я один ОЧЕНЬ большой код ....десятки тысяч строк, сотни объявленных переменных
ради интереса решила разобраться в нем
...
вывод --если немного подумать, то и код уменьшится в сотни раз и переменных понадобится
всего лишь десяток-другой
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
13.11.2017, 14:27  [ТС]
спасибо за обсуждение, полезно почитать )
выводы для себя сделал:
переменную Recordset глобально объявлять всеже не стоит
но у меня есть переменные, где нужно будет передавать данные между формами - я пришел к выводу на предыдущем проекте, что передавая данные между формами через глобальную переменную, глюков меньше, чем если передавать аргументами на открытие формы...
с Рекордсетом понятно, а коннекшн тоже лучше глобально не объявлять?
Visual Basic
1
Public m_cnn As ADODB.Connection
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
13.11.2017, 14:44
Цитата Сообщение от shanemac51 Посмотреть сообщение
видела я один ОЧЕНЬ большой код ....десятки тысяч строк, сотни объявленных переменных
ради интереса решила разобраться в нем
...
вывод --если немного подумать, то и код уменьшится в сотни раз и переменных понадобится
всего лишь десяток-другой
Не считаю, что у меня ОЧЕНЬ большой код....
Сейчас слегка прикинула (по одной из БД) - десятка два-три тысяч (20-30 тысяч) строк будет, и переменных достаточно.)))
Не в одном модуле, конечно, а в совокупности.
Но вряд ли Вам удастся сделать так, что "код уменьшится в сотни раз и переменных понадобится всего лишь десяток-другой".
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
13.11.2017, 14:59
Цитата Сообщение от blade_snl Посмотреть сообщение
коннекшн тоже лучше глобально не объявлять?
Как раз коннекшен стоит сделать публичным. Если хотите, коннекшен это как телефонный кабель. Сам он разговоров не ведет, но предоставляет такую возможность. Ну не прокладывать же кабель перед каждым разговором

Добавлено через 9 минут
Цитата Сообщение от shanemac51 Посмотреть сообщение
видела я один ОЧЕНЬ большой код ....десятки тысяч строк, сотни объявленных переменных
Я когда был завлабом в сейсмологии, по настоянию дирекции к нам впихнули сотрудника, математика. Дали ему задачу запрограммировать и решить квадратную матрицу порядка примерно 100х100. Месяц не появлялся, потом принес программу из почти 12 тысяч строк! Он вместо циклов расписывал каждый элементов в отдельности...
2
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
13.11.2017, 16:09
Цитата Сообщение от mobile Посмотреть сообщение
Как раз коннекшен стоит сделать публичным

Я об этом же. Но пусть сам пишет, стукнется лбом поймет.

Цитата Сообщение от blade_snl Посмотреть сообщение
а коннекшн тоже лучше глобально не объявлять?
Как не понять, что в каждой форме придется делать новое соединение.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
13.11.2017, 16:24
Цитата Сообщение от mobile Посмотреть сообщение
Дали ему задачу запрограммировать и решить квадратную матрицу порядка примерно 100х100. Месяц не появлялся, потом принес программу из почти 12 тысяч строк! Он вместо циклов расписывал каждый элементов в отдельности...
матрица 100х100 - это 10 тысяч строк только на объявление элементов....
а ведь еще расчеты с каждым элементом...
так что, это он еще экономно уложился....)))

shanemac51, не примите всерьез, пожалуйста.)))
0
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
13.11.2017, 16:33
Цитата Сообщение от UBUNTU Посмотреть сообщение
Сразу видно больших проектов не писалось.
О эта любовь чем-нибудь мерятся. Хы.

Цитата Сообщение от blade_snl Посмотреть сообщение
а коннекшн тоже лучше глобально не объявлять?
Если ты обратишь внимание в моём примере, Connection как раз объявлена переменной уровня модуля, но доступ к ней получается через публичную функцию, которая контролирует и гарантирует что Connection всегда открыт и доступен во всех частях приложения.
1
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
13.11.2017, 21:04
Панург, К которой добавлена функция которая контролирует что она доступна ахахахха все понятно. Пишем господа полотенце кода ))

Добавлено через 2 часа 6 минут
Панург, Отзыв неадекватный оставь себе. Зачем писать лишнюю функцию которая контролирует и гарантирует что Connection всегда открыт и доступен во всех частях приложения, если достаточно сделать так:

Visual Basic
1
2
3
4
5
    Set rs = Nothing
    Set rs = New ADODB.Recordset
    SQL = "SELECT * From Клиенты"
    rs.Open SQL, conn, 3, 3
    Set DataGrid1.DataSource = rs
Добавить:

Visual Basic
1
2
3
4
5
6
7
8
9
On Error GoTo er:
 
    Set rs = Nothing
    Set rs = New ADODB.Recordset
    SQL = "SELECT * From Клиенты"
    rs.Open SQL, conn, 3, 3
    Set DataGrid1.DataSource = rs
 
er: MsgBox Err.Description: Exit Sub
И что же тут получается, ааааа получается, что при попытке выполнения SQL запроса, если произойдет ошибка на rs.Open SQL, conn, 3, 3 тогда выполнение кода приостановится...

это же целую функцию писать надо

вот это да!!!
1
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
13.11.2017, 21:14
UBUNTU,

А Вы видели эту функцию?
Или просто так в остроумии упражняетесь?
1
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
13.11.2017, 22:48
Capi, А зачем там «Функция» если всего надо отловить ошибку и при ее наличие что-то сделать, в данном варианте просто показать ее пользователю и приостановить выполнения кода в этом блоке, программе.
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
14.11.2017, 00:22
UBUNTU,

Это Вы считаете, что в случае ошибки достаточно отказаться от выполнения ветки.
А по-хорошему, нужно не просто вслепую выдать номер ошибки пользователю,
а программно определить, что за ошибка,
в зависимости от этого выполнить те или иные мероприятия по восстановлению соединения,
чтобы избежать невыполнения ветки.
Кроме того, мы говорим о действиях, которые потребуются в нескольких точках кода (а иначе
зачем Вы сами настаиваете на объявлении глобальной переменной?), поэтому естественно,
что все необходимые действия оформляются в виде функции. И ничего страшного в этом нет.
Это служит как раз минимизации кода, а не наоборот.
Почему Вы так реагируете на "функцию", непонятно.

Я функцию Панург тоже пока не видела.
Но, как мне кажется, сказанное лежит на поверхности.
3
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
14.11.2017, 04:34
Capi, о чём говорить с человеком который на пару строчек кода делает несколько ошибок и не понимает слов? Не стоит он того. Пусть пишет "большие" проекты.
Цитата Сообщение от Capi Посмотреть сообщение
Я функцию Панург тоже пока не видела.
Но, как мне кажется, сказанное лежит на поверхности.
Функция простая, лежит тут в примере. Пояснения её действия тут. По хорошему нужно её немного поправить для исключения лишних действий при поднятом коннекшене, но не критично.
2
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
14.11.2017, 06:26
Цитата Сообщение от Панург Посмотреть сообщение
о чём говорить с человеком который на пару строчек кода делает несколько ошибок и не понимает слов?
Умничаем уважаемый? Приведите пример моей ошибки на пару строчек кода? Пруф будет? Или по всему форуму буду дизы ставить на твои комментарии.
0
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
14.11.2017, 07:21
Цитата Сообщение от UBUNTU Посмотреть сообщение
Умничаем уважаемый?
Не больше чем ты.
Цитата Сообщение от UBUNTU Посмотреть сообщение
Или по всему форуму буду дизы ставить на твои комментарии.
фиолетово
Цитата Сообщение от UBUNTU Посмотреть сообщение
Приведите пример моей ошибки на пару строчек кода?
Прежде чем уничтожать ссылку на набор данных не плохо закрывать его, есть прецеденты. Кто такой DataSource в рамках Access? (это не .NET)

В общем всё, плодить дальнейшего оффтопа не буду. Разговаривай сам с собой, мне не интересно.
3
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
14.11.2017, 17:50  [ТС]
есть вопрос по другой теме.
не подскажете ли, как этот блок выглядит для ACCESS х64?

Visual Basic
1
2
3
4
5
6
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hwndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
 
Private Declare Function apiShowWindow Lib "user32" _
    Alias "ShowWindow" (ByVal hWnd As Long, _
          ByVal nCmdShow As Long) As Long[B][/B]
Добавлено через 15 секунд
есть вопрос по другой теме.
не подскажете ли, как этот блок выглядит для ACCESS х64?

Visual Basic
1
2
3
4
5
6
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hwndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
 
Private Declare Function apiShowWindow Lib "user32" _
    Alias "ShowWindow" (ByVal hWnd As Long, _
          ByVal nCmdShow As Long) As Long[B][/B]
Добавлено через 54 секунды
блин, пришлось сменить пакет офиса, ибо не работал перевод базы на SQL-server... а тут теперь выдает совершенно логичные ошибки на несостыковки в разрядности...
0
 Аватар для UBUNTU
352 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
14.11.2017, 17:51
Панург, Посмотрел твой код, посмотрел "Функцию", и у меня только одна эмоция!
Миниатюры
Пример перевода DAO в ADO  
0
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
14.11.2017, 18:00
Цитата Сообщение от blade_snl Посмотреть сообщение
не подскажете ли, как этот блок выглядит для ACCESS х64?
Visual Basic
1
Declare PtrSafe Function
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2017, 18:00

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


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
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