|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
07.11.2006, 15:04 | #1 | |
Как получить доступ к таблице Access
проектирование систем безопасности
г. Иваново
Регистрация: 08.08.2006
Сообщений: 30
|
||
Просмотров: 15184
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Ххе. Вопрос - из какого места до таблицы пробуешь достучаться? Из Access?
Код:
--- Добавлено: вообще-то странно - ты ж а mysql и php вроде как работаешь, вопрос явно не твоего уровня.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Стоп-стоп! Ни в коем случае! Это ж если тебе надо будет выполнять 100 запросов в минуту, у тебя в памяти будет болтаться 100 Access'ов! Пока они освободятся, машина уйдет в перезагрузку. Лови лисп. Автор не я, стырено было с сайта флемингов (давно там не был, может, и заработало). Собственно код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
> Саша_Лебедев все хорошо, если бы не было все не так хорошо.
1. Поддержка VBA в ACAD'e может быть отключена. 2. Передать значения из VBA в лисп и обратно достаточно геморройно. 3. При запуске внешнего СОМ-сервера могут возникнуть проблемы с коннектом к БД (особенно если отслеживается имя и пароль пользователя). 4. При запуске внутреннего соединения требуется, чтоб на машине клиента были установлены и зарегистрированы библиотеки ADO, чего бывает далеко не всегда. добавлено: Я лично вчера с таким столкнулся на виртуальной машине с чистым ACAD 2005. dbconnect еще не запускался И, наконец, последнее. Строчек будет явно не 3 (говорю на основе "чистого" VB). Надо использовать раннее связывание с ADO; потом создавать коннект (уже 2 строки как минимум - одна создать объект коннекта; вторая - установить соединение; я молчу про указание типа курсора и блокировки: подобные вещи, как правило, задаются руками и не отдаются на откуп "автомату"). После создания коннекта надо объявлять рекордсет (еще 2 строки как минимум) и проходить по его результатам. В общем (ИМХО!!!) не все так радужно --- Добавлено: прежде чем закидывать меня гнилыми пидоморами, прошу прочесть мою подпись - я не бог и могу ошибаться. --- Добавлено 2: Кроме того, к БД можно получить доступ как минимум 3 способами: ADO, RDO, DAO. А еще есть ADO.NET и прочая Код, который здесь, корректно работает с многопользовательскими БД, и не вызывает лично у меня никаких вопросов.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
http://acad.fleming-group.com/ |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Yes! Зер гуд!
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
На VBA можно опустить некоторые вещи, но придется объявлять все переменные... Итого, равноценный код будет одинаковым по объему |
||||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
По поводу "меряния строками".
1. kpblc привел исходники целой библиотеки. Когда они спрятаны, то конечная программа превращается в несколько строк. В VBA все "строки" с библиотечными процедурами и функциями также есть. То, что они не видны, не значит, что они не выполняются. 2. Эти "несколько строк" можно превратить в одну. Убрать комментарии и переводы строк и только. :wink: 3. Пример показывает, как на языке, в котором изначально нет абсолютно никаких средств для работы с БД, можно это сделать. Фактически приведен код для расширения самого языка. 4. Пусть кто-нибудь попробует на VBA написать код, заменяющий вот это: Код:
В приведенной библиотеке этот кусок используется Код:
Эта маленькая строчка транспонирует таблицу, то есть меняет местами ряды и колонки. Можно поэкспериментировать, сколько страниц займет код для получения аналогичного результата на любом "нефункциональном" языке, с использованием его базовых, штатных средств без подключения каких-нибудь библиотек. |
|||
|
||||
Lisp/VBA/VB.NET Hobbyist Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367
|
Цитата:
по-деревенски но работает Измени название таблицы (отмечено) Код:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Поперше всего, прошу прощения - в нижеприведенном коде используются мои библиотечные функции, я их не привожу, поскольку не в них вопрос. Если понадобится - сигнализируй, попробую отфасовать
Есть несколько вариантов работы, зависит от количества выполняемых запросов. Если запросов не 1, и выполняются они один за другим, то можно сделать так: - сначала создаем объект связи с БД: Код:
Код:
Код:
Если же запрос всего один, то можно сделать по-другому: Код:
Как видишь, все равно создается объект связи с БД, потом работаем внутри этого объекта, и закрываем связь с БД. По крайней мере, пока я делаю так.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Нефтехимия Регистрация: 10.11.2015
Пермь
Сообщений: 3
|
Бьюсь уже неделю над проблемой подключения к Access 2010 (локальная БД, без пароля). Совсем извёлся, руки опускаются..
Подскажите, может есть нюансы какие-то именно касаемо 2010? Не открывается объект ADO Connection. Всё перелопатил. Пишет - Ошибка Automation. Не удается запустить приложение. Системная база данных отсутствует или открыта с монопольным доступом другим пользователем. Делаю всё стандартно: ---------- (setq Объект_Connection (vlax-create-object "ADODB.Connection")) (vlax-invoke-method Объект_Connection "Open" "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=D:\\Работа\\САПР_ХНС\\ХимНефтеСтрой.accdb" T T T) ;;;;; ----------- Может дело в трёх Т ? Но в примерах именно так.. Подозреваю, что дело в Access-овских наворотах.. Что делать?? И кто виноват |
|||
|
||||
Регистрация: 18.12.2010
Сообщений: 5,057
|
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
И вообще в подобных случаях надо просто пытаться соединяться с БД не из Лиспа, а в диалоге. Тогда будут понятны и загадочные T T T |
|||