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

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

02.11.2017, 23:08. Показов 7955. Ответов 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
14.11.2017, 18:07  [ТС]
Студворк — интернет-сервис помощи студентам
tkrainyk, вот спасибо! ))
1
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
14.11.2017, 19:03
Цитата Сообщение от blade_snl Посмотреть сообщение
есть вопрос по другой теме.
не подскажете ли, как этот блок выглядит для ACCESS х64?
Visual Basic
1
2
3
4
5
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]
Visual Basic
1
2
Declare PtrSafe Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As LongPtr, ByVal hWndInsertAfter As LongPtr, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Declare PtrSafe Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As LongPtr, ByVal nCmdShow As Long) As Long

Win32API_PtrSafe.txt
2
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
14.11.2017, 19:15
Поздравляем mobile с наградой Ветеран форума !!!!

и ltv_1953 !!!

и shanemac51 !!!
3
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
15.11.2017, 15:44  [ТС]
tkrainyk, поддерживаю! )))
1
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
15.11.2017, 15:50
Цитата Сообщение от blade_snl Посмотреть сообщение
tkrainyk, поддерживаю! )))
Вообще то надо было создать отдельную тему, но я написал здесь, а теперь уже что делать.
0
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
15.11.2017, 15:56  [ТС]
установил сегодня SQL server, при помощи средств Аксесс экспортировал базу, попытался самостоятельно интегрировать в код новый путь к базе, но чтото я видимо, недопонял, вот что я изменил:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Function Connection() As ADODB.Connection
Dim strFileName As String
' strFileName = CurrentProject.Path & "\BASE\ProfServ_DB.accdb"
    strFileName = "ODBC;DRIVER=SQL Server;SERVER=BLADE_WORK_PC\SQL2008R2EXPR;APP=Microsoft Office 2010;DATABASE=ProfServ_base_1.1SQL"
    If Len(Dir$(strFileName)) = 0 Then strFileName = WhereDatabase
    If Len(strFileName) > 0 Then
        If m_cnn Is Nothing Then
            Set m_cnn = New ADODB.Connection
            m_cnn.Provider = CurrentProject.Connection.Provider
            m_cnn.ConnectionString = "Data Source=" & strFileName
            m_cnn.Open
        End If
    End If
    If m_cnn.State = 1 Then
        Set Connection = m_cnn
    Else
        MsgBox "Нас постигла неудача" & vbCrLf & "Контакт не установлен.", vbCritical, ":("
        Set m_cnn = Nothing
    End If
End Function
щас уже увидел, что нигде не указал логин-пароль доступа к серверу SQL... как это правильно прописать в моем случае?

Добавлено через 3 минуты
а, собственно, ошибка вылетает на строку
Visual Basic
1
If m_cnn.State = 1 Then
"Object variable or With block variable not set"
0
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
15.11.2017, 16:07
Visual Basic
1
"ODBC;DRIVER=SQL Server;SERVER=BLADE_WORK_PC\SQL2008R2EXPR;APP=Microsoft Office 2010;DATABASE=ProfServ_base_1.1SQL"
Уже одно вижу, уберите из строки ODBC;

Добавлено через 3 минуты
Вот у меня такая строка подключения

Visual Basic
1
strConn = "DRIVER=SQL Server;SERVER=DCS\DCS;Trusted_Connection=Yes;APP=Microsoft Office 2010;DATABASE=ddc"
Добавлено через 6 минут
Я вообще то не могу разобраться, но по моему вы что-то напутали. Вот мой полностью рабочий способ подключения

Visual Basic
1
2
3
Set conn = New ADODB.Connection
strConn = "DRIVER=SQL Server;SERVER=DCS\DCS;Trusted_Connection=Yes;APP=Microsoft Office 2010;DATABASE=ddc"
conn.Open strConn
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
15.11.2017, 16:16  [ТС]
Цитата Сообщение от tkrainyk Посмотреть сообщение
но по моему вы что-то напутали
это фрагмент из глобального модуля. который написал Панург, где описана функция коннекшена с проверкой состояния коннекта.

Добавлено через 1 минуту
я закомментил строку, которая была прописана путем до переноса на SQL server, при которой все работало... и видно, на что я ее заменил
0
775 / 256 / 43
Регистрация: 09.12.2016
Сообщений: 855
15.11.2017, 16:26
Цитата Сообщение от blade_snl Посмотреть сообщение
то фрагмент из глобального модуля. который написал Панург
Так во фрагменте Панург была ссылка на файл базы данных. А при соединении с SQL Server вы уже не ссылаетесь на файл, а на сервер.

Между прочим, мой вариант работает в реальном режиме.
1
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
15.11.2017, 17:23
Цитата Сообщение от blade_snl Посмотреть сообщение
это фрагмент из глобального модуля. который написал Панург, где описана функция коннекшена с проверкой состояния коннекта.
для каждого источника создаётся своя строка соединения, можешь ознакомится с примерами

Добавлено через 2 минуты
Создания коннекшена возможно с помощью загрузки параметров из файлов dsn или udl

Добавлено через 3 минуты
В твоём случае наверное проще загрузить из udl. Легко создать, легко загрузить.
Visual Basic
1
2
3
Set conn = New ADODB.Connection
strConn = "File Name=c:\myDataLinkFile.udl"
conn.Open strConn
Добавлено через 4 минуты
Вот пример с картинками и подробным описанием - Быстрое создание файла OLE DB Connection к SQL
3
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
20.11.2017, 13:23  [ТС]
Панург, благодарю, действительно удобная штука, тут все заработало.
но затык теперь в другом месте. На открытие формы делается проверка для выявляения значения поля group:
Visual Basic
1
2
3
4
5
6
7
8
9
    Dim group, strSQL As String
    Set rs = New ADODB.Recordset
    strSQL = "SELECT TOP 1 group FROM AUTH WHERE login = '" & Me.fld_login & "'"
    group = WinAccess.Connection.Execute(strSQL).Fields(0)
    If group = "Администратор" Then
        btn_Adminka.Visible = True
    Else
        btn_Adminka.Visible = False
    End If
и на строку "group = WinAccess.Connection.Execute(strSQL).Fie lds(0)" ругается: "неправильный синтаксис около ключевого слова "group"

Добавлено через 42 секунды
это не может быть случаем связано с тем, что у меня имя переменной совпадает с именем поля? )
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
20.11.2017, 13:43
Вместо этого:
Цитата Сообщение от blade_snl
Visual Basic
1
2
3
4
5
6
    group = WinAccess.Connection.Execute(strSQL).Fields(0)
    If group = "Администратор" Then
        btn_Adminka.Visible = True
    Else
        btn_Adminka.Visible = False
    End If
сделайте так:
Visual Basic
1
btn_Adminka.Visible = (WinAccess.Connection.Execute(strSQL).Fields(0) = "Администратор")
И не используйте служебные зарезервированные слова в качестве своих идентификаторов.
1
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
20.11.2017, 13:44
group зарезервированное слово в SQL и должно быть в прямых (квадратных) скобках
Visual Basic
1
strSQL = "SELECT TOP 1 [group] FROM AUTH WHERE login = '" & Me.fld_login & "'"
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
20.11.2017, 14:04  [ТС]
усек, спасибо! )

Добавлено через 2 минуты
еще вопрос:
Visual Basic
1
strSQL = "SELECT TOP 1 [group] FROM AUTH WHERE login = '" & Me.fld_login & "'"
тут я нахожу строку, где значение поля "login" совпадает с заданным и вытаскиваю значение другого поля этой же строки. тут все понятно.
а есть возможность в одном запросе получить значения нескольких полей этой же строки и раскидать их по переменным (или присвоить их сразу различным полям формы)?
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
20.11.2017, 14:12
Конечно есть такая возможность. Номер поля рекордсета начинается с 0 от самого левого поля. Или по именам полей
Visual Basic
1
2
3
4
5
6
7
dim grp, fld1, fld2
strSQL = "SELECT TOP 1 [group], [поле1], [поле2] FROM AUTH WHERE login = '" & Me.fld_login & "'"
with WinAccess.Connection.Execute(strSQL)
  grp=.Fields(0)
  fld1=.Fields(1)
  fld1=.Fields('поле2')
End with
1
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
20.11.2017, 14:14
Цитата Сообщение от blade_snl Посмотреть сообщение
есть возможность в одном запросе получить значения нескольких полей этой же строки и раскидать их по переменным (или присвоить их сразу различным полям формы)?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
...
    with WinAccess.Connection.Execute(strSQL)
            if not (.BOF And .EOF) then
                ПерваяПеременная=.Fields("group")
                ВтораяПеременная=.Fields(1)
                ТретьяПеременная=.Fields(2)
                ...
            End if
        .Close
    End with
...
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
21.11.2017, 20:02  [ТС]
спасибо

Добавлено через 21 час 48 минут
подскажите еще такой момент.
если мне нужно SELECT'ом сделать выборку из таблицы, где аргументом будет не полное соответствие значения ячейки, а только фрагмент?
FROM AUTH WHERE [login] = 'ххх'

...чтоб оно вывалило мне значения нужных ячеек всех строк, где поле login будет содержать кусок текста "ххх"?

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

Добавлено через 5 минут
...это для того, чтоб можно было из результатов выбрать нужный и присвоить значение полей в соотв-е места...
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
21.11.2017, 20:07
Запрос
SQL
1
2
SELECT * FROM AUTH
WHERE login LIKE "*xxx*"
Запрос сделать источником формы
2
Эксперт MS Access
 Аватар для Eugene-LS
13270 / 5947 / 1529
Регистрация: 05.10.2016
Сообщений: 16,644
21.11.2017, 20:18
Цитата Сообщение от blade_snl Посмотреть сообщение
и второй момент - можно ли эти значения вывести например на ленточную форму, чтоб отобразило только строки, содержащие данное условие...?
Можно.
Поменяв RecordSet формы как выше.
А можно и фильтром, но не желательно.
1
4 / 4 / 1
Регистрация: 02.02.2017
Сообщений: 180
21.11.2017, 20:29  [ТС]
...подразумевается, что нужно прописать запрос в "источнике записей" свойства формы?

а в vba я же могу это сделать какимто образом? например на Form_Load?

Добавлено через 46 секунд
и если могу, то как будет выглядеть синтаксис сего чуда? )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2017, 20:29

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


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

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