Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 55

Нужно довести до ума код ADODB

06.01.2019, 00:03. Показов 2261. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет,
я написал вот такой код на ADO чтобы выдернуть данные из другого файла(только чтение данных без изменения), которые потом через VBA сохранятся куда нужно....

вот вобщем-то назрел вопрос:

1) это работает исправно, НО м.б. туда стоит еще что-то добавить?
2) меня напрягает что файл(Access 09.mdb) считается открытым, как это убрать? Его редактирует другая программа, не хочу чтобы это ей помешало
3) какой тип курс курсора выбирать? какая разница куда он двигается?
4) какая разница где создан курсор?
5) на что влияет тип блокировки на записи в источнике? adLockReadOnly - это ни на что не повлияет?


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
[B]Option Compare Database[/B]
Option Explicit
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
 
 
[B]Private Sub Form_Load()[/B]
 
Set cn = CreateObject("ADODB.Connection")
cn.Provider = "Microsoft.ACE.OLEDB.12.0"
cn.Open "D:\access\Access 09.mdb"
 
Set rs = CreateObject("ADODB.Recordset")
 
rs.Open "SELECT * FROM Orders RIGHT JOIN Clients ON Orders.CustomerID = Clients.ClientID;", cn, adOpenStatic, adLockReadOnly
 
Set Form.Recordset = rs
 
Me.txt_ClientID.ControlSource = "ClientID"
Me.txt_ClientName.ControlSource = "ClientName"
Me.txt_OrderTotal.ControlSource = "OrderTotal"
 
Me.RecordSelectors = False
 
End Sub
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2019, 00:03
Ответы с готовыми решениями:

Довести до ума поиск!
В Forma 2 есть поиск, он выводит ID_Grupp в отдельной вкладке, нужно что бы выводил в поле в этой форме, и сделать поля специальность, курс...

довести до ума нужно
Подсчитать и вывести на экран количество пробелов во введенной строке. Уровень 2. Дополнительные условия: Ввести с клавиатуры число N. ...

Нужно довести программу до ума
помогите с кодом. uses crt { uses список использумых модулей,библиотека}{cathod ray tube модуль для работы с текстовой информацией на...

28
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,375
06.01.2019, 11:36
Я не вижу закрытие рекордсета и возможно соединения
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 55
06.01.2019, 11:55  [ТС]
Подскажите как это сделать?
0
 Аватар для Aleator
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
06.01.2019, 13:12
Visual Basic
1
2
rs.Close
Set rs = Nothing
0
1716 / 1403 / 165
Регистрация: 25.07.2015
Сообщений: 2,553
06.01.2019, 13:14
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
Подскажите как это сделать?
Перед End Sub добавьте
rs.Close
cn.Close

Цитата Сообщение от Гарри Галкин Посмотреть сообщение
на что влияет тип блокировки на записи в источнике? adLockReadOnly - это ни на что не повлияет?
Ключевое здесь ReadOnly - только чтение.
Записи в Recordset будут доступны только на чтение, вы не сможете их изменять
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 55
06.01.2019, 14:15  [ТС]
Цитата Сообщение от Kulma Посмотреть сообщение
Перед End Sub добавьте
rs.Close
cn.Close
ничего не изменилось

Цитата Сообщение от Aleator Посмотреть сообщение
rs.Close
Set rs = Nothing
тоже ничего не изменилось
0
 Аватар для Aleator
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
06.01.2019, 16:39
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
Сообщение от Aleator
rs.Close
Set rs = Nothing
тоже ничего не изменилось
Извините, а что должно было изменится?
Вы писали, что код у Вас работает и просили его улучшить. Так?
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
06.01.2019, 19:00
Aleator,

ТС писал "меня напрягает что файл(Access 09.mdb) считается открытым, как это убрать?"
Это про файл, с которым он устанавливает соединение.
0
 Аватар для Aleator
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
06.01.2019, 21:00
Тогда Kulma правильно писал.

В начале закрываете recordset, затем соединение.

Visual Basic
1
2
3
4
5
rs.Close
Set rs = Nothing
 
cn.Close
Set cn = Nothing
Если БД остаётся висеть, то возможно код для работы с БД работает некорректно.
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 55
14.01.2019, 17:54  [ТС]
еще такой вопрос тут же чтобы новую тему не создавать
есть база созданная в очень старой версии аксесса(похоже что еще до 2007 года), файл приложил
я к ней никак не могу подключиться(код приложен ниже)
ошибка вылетает на строчке rs.Open.....
причем, если я ее конвертирую через аксесс 2007 в формат .accdb, то подключается нормально
помогите решить проблему с подключением открытием рекордсета
без конвертации я ее не могу открыть и посмотреть


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
28
29
30
31
32
33
34
35
36
Option Compare Database
Option Explicit
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
 
 
Private Sub Form_Load()
On Error Resume Next
 
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
 
cn.Provider = "Microsoft.ACE.OLEDB.12.0"
 
cn.Open "Z:\пример.mdb"
 
rs.CursorLocation = adUseClient
 
rs.Open "SELECT * FROM Detail ORDER BY [Detail].DtDateModify", cn, adOpenStatic, adLockReadOnly
 
Set Form.Recordset = rs
 
Me.txt_DtID.ControlSource = "DtID"
Me.txt_MtID.ControlSource = "MtID"
Me.txt_DtThick.ControlSource = "DtThick"
Me.txt_DtMass.ControlSource = "DtMass"
Me.txt_DtPerimeter.ControlSource = "DtPerimeter"
Me.txt_DtContCount.ControlSource = "DtContCount"
 
Me.RecordSelectors = False
 
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
Вложения
Тип файла: rar пример.rar (5.85 Мб, 7 просмотров)
0
Мы один, давай на "ты"
3836 / 1382 / 343
Регистрация: 16.06.2016
Сообщений: 3,273
14.01.2019, 19:02
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
ошибка вылетает на строчке rs.Open.....
А что в ошибке (ном. ошибки, текст)? Должно работать.
У тебя база точно по этому пути - "Z:\пример.mdb"?
Ну и несколько странно выглядит
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
rs.Close
Ты точно после этого хочешь чтобы чего-нибудь осталось в форме?
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 55
14.01.2019, 19:09  [ТС]
rs.Close - убрал
фото ошибки приложил
Миниатюры
Нужно довести до ума код ADODB  
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 55
14.01.2019, 19:12  [ТС]
еще такая - если прописать
Visual Basic
1
cn.Provider = "MSDataShape"
Миниатюры
Нужно довести до ума код ADODB  
0
Мы один, давай на "ты"
3836 / 1382 / 343
Регистрация: 16.06.2016
Сообщений: 3,273
14.01.2019, 19:38
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
cn.Provider = "MSDataShape"
А ты знаешь что это?
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 55
14.01.2019, 19:49  [ТС]
Цитата Сообщение от Панург Посмотреть сообщение
А ты знаешь что это?
врятли

Добавлено через 4 минуты
забыл добавить, что открываю через аксесс 2016года, если это важно
0
Мы один, давай на "ты"
3836 / 1382 / 343
Регистрация: 16.06.2016
Сообщений: 3,273
14.01.2019, 19:55
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
забыл добавить, что открываю через аксесс 2016года, если это важно
Ну вообще да.
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
cn.Provider = "Microsoft.ACE.OLEDB.14.0"
поправь так. У тебя какая библиотека подключена ADODB.

Кстати, возможно этот провайдер и не поддерживает уже эту версию файла (я не проверял), конвертируй в более новую и работай

Добавлено через 1 минуту
Почему ADO? MS какбэ вернулась к DAO в новой ипостаси.
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 55
14.01.2019, 19:59  [ТС]
Цитата Сообщение от Панург Посмотреть сообщение
конвертируй в более новую и работай
не выйдет, в эту базу постоянно добавляются данные и их нужно оперативно выдергивать....конвертация это долго...

Цитата Сообщение от Панург Посмотреть сообщение
Ну вообще да.
т.е. проблема в аксессе именно 2016года?

Цитата Сообщение от Панург Посмотреть сообщение
поправь так. У тебя какая библиотека подключена ADODB.
по получается, выходит ошибка на cn.Open
0
Мы один, давай на "ты"
3836 / 1382 / 343
Регистрация: 16.06.2016
Сообщений: 3,273
14.01.2019, 20:07
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
врятли
это поставщик иерархических наборов данных. Отдалённо напоминает набор данных содержащий многозначные поля. Там запросы специфически пишутся...

Добавлено через 1 минуту
Цитата Сообщение от Панург Посмотреть сообщение
У тебя какая библиотека подключена ADODB.
не ответил.
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
конвертация это долго...
Долго? хм...
Не обязательно конвертировать в accdb, можно и в mdb 2002-2003

Добавлено через 3 минуты
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
по получается, выходит ошибка на cn.Open
попробовал, у меня работает (естсно я не стал пихать в форму). Access 2010. Уж извини, новее нет.

Добавлено через 46 секунд
библиотека ADO 2.8
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 55
14.01.2019, 20:09  [ТС]
Цитата Сообщение от Панург Посмотреть сообщение
не ответил.
ну я ее поправил на эту и вылетела ошибка на cn.Open
если MSDataShape, то ошибка на rs.Open

Цитата Сообщение от Панург Посмотреть сообщение
Там запросы специфически пишутся...
есть где почитать об этом?

Цитата Сообщение от Панург Посмотреть сообщение
Долго? хм
ну для меня весь смысл подключения через аксесс чтобы БЫСТРО от туда выдернуть инфу....
вообще я могу к этой базе подключиться через прогу которая туда данные заносит(и ее создала) и все посмотреть без конвертации
0
Мы один, давай на "ты"
3836 / 1382 / 343
Регистрация: 16.06.2016
Сообщений: 3,273
14.01.2019, 20:11
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
если MSDataShape, то ошибка на rs.Open
не используй этого провайдера

Добавлено через 1 минуту
Цитата Сообщение от Гарри Галкин Посмотреть сообщение
ну я ее поправил на эту и вылетела ошибка на cn.Open
на какую конкретно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2019, 20:11
Помогаю со студенческими работами здесь

Не плохо бы довести до ума код
Добрый день.Вообщем я начал учить c# 2 месяца назад и уже понимаю что,и как.Но вот в чём проблема, у меня есть вот такой код: using...

покажите как правильно довести до ума код
Помогите разобраться в коде, должен переводить в любую систему счисления, не знаю как правильно обьявить num,fromnum,tonum. Помогите...

Довести до ума
В общем, изначально надо было посчитать такую загогулину: S=\sum_{i:=1}^{n}\sum_{k:=1}^{m}{\left({b}_{ik}+{c}_{ki}...

довести до ума
добрых времени суток. Нужно опять доделать задачу. Вот само условие: Дано вещественное число Х(|X|<1) и целое число N(>0) Найти...

Довести до ума
Помогите довести до ума код.Программа раскладывает числа на сумму 3-х квадратов.Много раз пытался написать условия для случая,когда число...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru