|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
из VBA в MS Access подключаюсь к таблице на сервере MySql Создаю рекордсет: Dim rst as New ADODB.Recordset Я был удивлён, что не могу получить количество строк даже после использования rst.movelast Я даже пробовал rst.getRows, но я не знаю, для чего это. Так как оно мне ничего не даёт. Вот, что у меня показывает (смотрите скрин) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 16:21 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Запрашивай количество записей отдельным запросом. Если оно нужно именно как самостоятельные данные. Иначе - итерируешь, проверяешь на конец, нет - следующий виток... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 16:45 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
курсор клиентский должен быть ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 17:19 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Akina, понял. Спс. А по поводу GetRows я разобрался: так можно передавать результат запроса в массив. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 17:28 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Konst_One, с клиентами я ещё не разбирался. Позже дойду до этого. Сижу тут, мучаюсь с переносом БД Access в MySql. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 17:32 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
у рекордсета при открытии надо задать атрибут adOpenClient ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 17:51 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Konst_One, я попробовал все режимы. В моём случае нет adOpenClient (возможно, это связано с версией MySql) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 15:20 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
В обозревателе объектов также нет такого свойства ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 15:21 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 17:01 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Konst_One, спасибо тебе большое. Это работает :) Мне нужно было прогресс во время цикла забацать. В DAO, например, есть ещё фича rs.PercentPosition. Ваще круть. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 15:22 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Настаев, А если упростить формат работы с MySQL , просто залинковать таблицы в Аксесс из MySQL? Примерно около 5 лет живу на связке MS Access+MySQL. Через переходник mySql ODBC driver. На стороне аксесса таблицы смотрятся в классическом виде прилинкованных таблиц. Такие прилинкованные таблицы нельзя открыть без ввода логина и пароля пользователем при открытии аксесса. Как не пытайся) Есть одна интересная фича, на которую натолкнулся совершенно случайно- Не обязательно в разделе настроек компьютера создавать именованный DNS экземпляр драйвера и прописывать для него там же путь к базе данных и логин и пароль. Можно залинковаться таким образом, что сами таблицы будут использовать среду драйвера, то есть без привязки к именованному источнику данных на компе. Если интересно ,могу выслать инструкцию как это сделать. Нигде не видел подобных примеров, скорее всего недокументированная фича ODBC. Не надо будет лишний раз мучить ADO. (Единственно - для тех случаев, когда вы хотите чтобы ваш запрос выполнился самим сервером MySQL, а не клиентом. И вернул результат на клиент-Аксесс.) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 16:39 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Сергей ЛаловЕсли интересно ,могу выслать инструкцию как это сделать. Непременно. Если это полноценная инструкция или статья с полным порядком воспроизведения, может, ей и в ФАКе место найдётся. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 08:18 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Сергей Лалов, мне очень интересно. Подойдёт инструкция в любом виде (даже текстовом). Хочу разобраться что к чему ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 13:44 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Давайте попробую накидать, без проблем. Пока схематично: Классический способ связи MySQL и MS Access, с привязкой к конкретному именованному источнику данных : 1) Скачивание MySQL ODBC Driver. 2) В разделе администрирование создание именованного источника данных с настройками подключения к базе MySQL. (Опционально, пароль можно сохранить, а можно не сохранять в конце.) 3) Линковка таблиц в MS Access из MySQL через именованный созданный экземпляр драйвера. Все данные по соединению прописываются в настройках линкованной таблицы 4) Работа с Аксессом в привычном виде, только к сожалению мы привязаны к именованному экземпляру источника данных, созданному в разделе администрирования ODBC виндоуз. Кратко по классике на скрине № 1 чуть ниже. Так в общем то делает большинство. Выкладываю скрин №1,чтобы показать классику. Наверное так делают практически все. Нестандартный способ без привязки к именованному экземпляру налеплю чуть ниже в отдельном письме. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 19:42 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
А сейчас нестандартный способ линковки, который позволяет не привязываться к именованному экземпляру драйвера MySQL. То есть никаких пользовательских источников в разделе администрирование создавать не надо, надо просто скачать драйвер с сайта (желательно скачивать и устанавливать на комп сразу и 32х и 64х битную версию. Официальный сайт: https://dev.mysql.com/downloads/connector/odbc ) и установить их на компьютер. Всё. Поехали: 1) линкуем таблицы в MS Access с сервера MYSQL программно , с использованием до боли знакомым дуцээмдэ в VBA:) , обратите внимание, что логин и пароль мы оставляем пустыми: Код: vbnet 1. 2. 3. 4.
При линковке мы не прописываем имя источника данных, мы сразу обращаемся к драйверу. После выполнения линковки выскочит стандартное окошко mysql драйвера с просьбой ввести логин и пароль на сервере, вводим и таблица линкуется. И так для каждой таблицы/вьюхи на сервере mysql (можно циклом обойти, без проблем) Отдельное наблюдение-если вы установили соединение с первой таблицей, все остальные не будут требовать ввода логина и пароля для связывания. Самое главное не закрывать сессию текущую у аксесса . После того как все таблицы нужные залинкованы, мы закрываем базу. А дальше как с обычным аксессом. Обратите внимание на строку в свойствах таблицы при программном связывании таблиц. Сссылки на именованный экземпляр драйвера нет, логин и пароль не сохраняется. То есть при каждом входе в аксесс ,при открытии какой либо первой таблицы попросят ввести логин и пароль . При успехе, устанавливается доверительное соединение и в пределах сессии больше вводить их не надо. При таком способе список именованных источников данных остается девственно чистым, и такую БД можно переслать куда угодно, самое главное чтобы на другом компе просто поставили драйвер MySQL) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 20:25 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Сергей Лалов, зачёт. Ща буду разбираться :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 20:26 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Настаев, Да, все достаточно просто во втором случае. При программной линковке таблиц через VBA и MySQL ODBC просто нафиг не упоминать имя источника данных. Достаточно связи с самим драйвером. Вся эта раскривушка автоматом ляжет в строку подключения линкованной таблицы и сохранится. И потом можно юзать с любого компа, самое главное чтобы на нем дрова MySQL ODBC были. Создавать источник данных необязательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 20:33 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Сергей Лалов, круто! Это то, что мне было нужно. Только имя драйвера я поменял на {MySQL ODBC 5.1 Driver} Фигурные скобочки Акцес сам поставил в описании таблицы, и я включил это в код. Теперь я могу сделать цикл по всем таблицам и привязать их к Access автоматически без всяких там диалогов. Замечательно. К стати о том, как я добираюсь до списка таблиц на сервер (может, кому понадобиться) Создаю на сервере таблицу: Код: sql 1. 2. 3. 4. 5. 6. 7.
Наполняю её... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 21:04 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Настаев, Отлично) Спасибо тоже! Положил в копилку вариант выборки таблиц из информационной схемы) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 21:59 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Немного не в тему, жалко что в аксесовском SQL нет команды TRUNCATE. Реально. Так можно было бы схлопнуть таблицу и создать новую гораздо быстрей. В аксе приходится два запроса пилить. Сначала DELETE . потом обнулять счетчик ALTER COLUMN.. ехе хе.. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 22:26 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Сергей Лалов, я после очистки таблиц просто запускаю комманду на сжатие. Счётчики обнуляются автоматически CompactDatabase(SrcName As String, DstName As String, [DstLocale], [Options], [SrcLocale]) Разумеется, что файл с данными отдельно от программы. Мне это нужно лишь тогда, когда я я хочу очистить все таблицы для работы с чистого листа, так сказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 22:12 |
|
Узнать количество строк в Recordset-е
|
|||
---|---|---|---|
#18+
Настаев, Да, сжатие выручает, но если нужно во время открытой сессии и программы обнулить данные определенной конкретной таблицы, то я не слышал что такое можно в аксессе. Можно с позиции простоты действия имею в виду. Так то решение есть, на основании таблицы делается запрос на создание новой таблицы (только структуры). Удаляется первая (с предварительным удалением связей), вторая свежесозданная таблица программно переименовывается так же как и первая . После этого делается новая связь между свежесозданной таблицей и остальными. (Если по замыслу создателя бд на уровне базы связи предусмотрены.) А сжатием самой базы да, это помогает , но приходится закрывать саму программу. Эта проблема только в чистом аксесовском jet sql. Если акс в связке с мускулом, то естественно там все в этом плане норм.) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 22:32 |
|
|
start [/forum/topic.php?fid=47&msg=39874908&tid=1828899]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 291ms |
total: | 431ms |
0 / 0 |