| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp,VBA. Autocad 2013. Как "втянуть" данные в аттрибут блока(field)-из БД(mdb например)?С дальнейшей синхронизацией.

Lisp,VBA. Autocad 2013. Как "втянуть" данные в аттрибут блока(field)-из БД(mdb например)?С дальнейшей синхронизацией.

Ответ
Поиск в этой теме
Непрочитано 15.10.2014, 10:16
Lisp,VBA. Autocad 2013. Как "втянуть" данные в аттрибут блока(field)-из БД(mdb например)?С дальнейшей синхронизацией.
Дианка
 
Регистрация: 14.10.2014
Сообщений: 29

Добрый день,в общем-то я не программирую на лиспе,я чайник чайниковый,немножко VBA (MS-ft), но при возможности накопаю,накопирую,как говорится.Просто хочется понять возможно ли это,если нет,буду искать другие пути решения,а задача -вот такая:


В dwg файл,по кнопочкам вставляется блок - после pick folder-a на сервере, нужного проекта.В тоже время в той папке(нужногопроекта) лежит mdb с данными и файлик-блок с атрибутами типа field вытащенные из того же мдб., после вставки того проектного блока, последовательно предложить вставку списка фамилий(дин.блочки с lookup уже готовы) .И (перед сном опять же) вспомнилось,что при необходимости надо добавить возможность изменить данные, ну к примеру типовое решение,и просто нажать кнопочку"изменить исходные данные", выходит диалоговое окно с выбором другой папки на сервере и соответственно других данных,ну или просто если человек ошибся с "тыком" папки, данные в mdb меняются часто,и посему думается про поля...что бы была синхронизация какая-то.

Я не знаю, понятно ли объяснила, буду очень рада прочитать Ваше вИдение решения данной задачи,может я вообще не в ту степь "копаю".
сейчас у нас типо тхт файлика данных по проекту,из которого тянутся данные для ворда, и для двг один файлик который тянем Xref-om остальное делается вручную..
считывать данные с тхт(который для ворда) -думаю дико геморрно,хочу всё привести к одному источнику данных,скорее всего к mdb

п.с. просьба как можно более упроситить "язык ответа" , я же - чайник.
Просмотров: 14569
 
Непрочитано 16.10.2014, 23:24
#21
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от Дианка Посмотреть сообщение
по мне,это быстрый ход,НО как шаг назад
Это-то понятно. Я предложил это, как вариант, уже, можно сказать, готовый к употреблению. Без претензий на исключительность.
Цитата:
Сообщение от Дианка Посмотреть сообщение
это на чём реализовано(язык)?
На лиспе.
Цитата:
Сообщение от Дианка Посмотреть сообщение
узнала что на ВБА...и мне сказали забыть про него ) проблемы там какие то в последних версиях
После, если не ошибаюсь, 2008-го или 2009-го Автокада VBA выведено из базового функционала и поставляется в виде Enabler'a. Это, по мнению многих, предрекает его (VBA) скорую гибель. При переходе с 2008-го на 2011-й Автокад в нашей конторе пришли к тому, что отказались от всех приложений на VBA, благо не много их было. При установке VBA-Enabler'a наблюдались тормоза на 2011-м, правда, тогда еще не было SP, не знаю, решил ли он эту проблему.
skkkk вне форума  
 
Непрочитано 16.10.2014, 23:32
#22
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848


1. Не решил: http://adn-cis.org/autocad,-vba-i-proizvoditelnost.html
2. VBA в ACAD2015 претерпел существенные изменения, многие коды, скорее всего, придется перерабатывать.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.10.2014, 00:22
#23
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 379


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
2. VBA в ACAD2015 претерпел существенные изменения, многие коды, скорее всего, придется перерабатывать.
Offtop: А где-нибудь можно об этом почитать? (Желательно на русском языке). Т.к. я пытался найти информацию, но безрезультатно
art_rrc вне форума  
 
Непрочитано 17.10.2014, 00:28
#24
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848


Я наврал: не в 2015, а в 2014: http://adn-cis.org/vbamacro-compatib...ad2014x64.html
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 20.10.2014, 09:17
#25
Дианка


 
Регистрация: 14.10.2014
Сообщений: 29


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
.. на второй ответил там же, в #15, двумя строчками выше. А skkkk совершенно справедливо добавил
Цитата:
Если есть некий MDB-файл, то доступ к нему можно получить через ADO, в том числе из Lisp. Только надо иметь соответствующую библиотеку функций. Отправив через ADO SQL-запрос к файлу (с каким-то условием отбора записей), получаете результат (набор данных) в виде LISP-списка. Теперь можете делать с ним что угодно - хоть атрибуты обновлять, хоть поля.
это типо подключить надо,опять же функциями? то ,что когда то видела в С,С++ #include? подключение msado15.dll ? (мало где пишется об этом вроде, или я плохо искала)

а если я его включу в стартаповский лисп(ну просто чтоб потом не забыть) acaddoc.lsp это не принесет каких то проблем?
Дианка вне форума  
 
Непрочитано 20.10.2014, 12:51
#26
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
это типо подключить надо,опять же функциями? то ,что когда то видела в С,С++ #include? подключение msado15.dll
Лисп язык функциональный, а не "инклюдальный", потому всё-всё в нем является функциями. Даже "программы".

Вам нужно:
1. Раздобыть LSP-библиотеку, с функциями работы с ADO. Lisp не может работать с DLL, но может обращаться к некоторым методам.
2. Обеспечить загрузку этой библиотеки. Вот здесь может и acaddoc.lsp помочь.
3. Написать кучу своих функций и тоже включить их в библиотеку.
4. Дальше делать "функции-программы" - любые по своему хотенью. Внутри их уже может быть вызов библиотечных функций.
ShaggyDoc вне форума  
 
Непрочитано 21.10.2014, 00:25
#27
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Вот Вам три "волшебных" функции - они в большинстве случаев закрывают все вопросы по ADO<->Autolisp.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 21.10.2014, 00:53
#28
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848


Ну или знаменитейшая библиотеки Флемингов http://acad.fleming-group.com/Downlo...p/ADOLisp.html )))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.10.2014, 09:20
#29
Дианка


 
Регистрация: 14.10.2014
Сообщений: 29


Цитата:
Вам нужно:
1. Раздобыть LSP-библиотеку, с функциями работы с ADO. Lisp не может работать с DLL, но может обращаться к некоторым методам.
2. Обеспечить загрузку этой библиотеки. Вот здесь может и acaddoc.lsp помочь.
3. Написать кучу своих функций и тоже включить их в библиотеку.
4. Дальше делать "функции-программы" - любые по своему хотенью. Внутри их уже может быть вызов библиотечных функций.
спасибо, насчет длл более менее понятно,ищу дальше

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Дима_ Посмотреть сообщение
Вот Вам три "волшебных" функции - они в большинстве случаев закрывают все вопросы по ADO<->Autolisp.
спасибо,мельком глянула,насколько поняла надо там еще будет закрывать соединения и т.п. %) нас когда то помню оч сильно пугали не закрытыми соединенниями,потоками и т.п.,в общем лирика,спс.

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ну или знаменитейшая библиотеки Флемингов http://acad.fleming-group.com/Downlo...p/ADOLisp.html )))
спасибо.Да,я сначала не сразу заметила, что многие коротенькие программы, обращаются в эту библиотеку функций.....%)
а тож я решила чего это всё так просто.
Дианка вне форума  
 
Непрочитано 21.10.2014, 10:30
#30
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Вот Вам три "волшебных" функции - они в большинстве случаев закрывают все вопросы по ADO<->Autolisp.
Да, это основные функции. Но они, скорее открывают другие вопросы. Например (connection driver password) - вот тут надо четко знать, что это за аргументы и как их формировать.

Ну и прочее. Я бы все-таки рекомендовал библиотеку от "семейки Адамс", т.е. Флемингов. Она не такая изячная, её можно много совершенствовать, но там "по полочкам" и с примерами.

И позволю себе гнусные, заведомо ложные измышления. ADO - это технология Microsoft. Очень удобная. Но в последние годы они, как специально, начали её компрометировать. Разрабатывают новые версии, теперь уже включают в новые версии Windows и MS Office (а раньше надо было самостоятельно устанавливать, или тольк с Офисом). естественно, появляются новые версии движка Jet, который и работает с MDB. Вот в нем вдруг обнаруживаются ошибки, причем чрезвычайно трудно обнаруживаемые. Сказали бы мне - не поверил бы. Но убедился - одна и та же программа, использующая ADO, работает по-разному на разных машинах.

Кроме того, Microsoft придумала "свой SQL", отличающийся от общепринятых диалектов. Это приходится учитывать.

В результате мне пришлось для программ, использующих локальные БД отказаться от MDB и перейти на совершенной иной, независимый от MS движок. Как минимум, известно где искать ошибки, да и возможность прямой работы с SQL (чего нет в Access) многократно ускоряет работу.
ShaggyDoc вне форума  
 
Непрочитано 21.10.2014, 10:43
#31
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


И разрядность! Не забываем про разрядность!
trir вне форума  
 
Автор темы   Непрочитано 21.10.2014, 10:46
#32
Дианка


 
Регистрация: 14.10.2014
Сообщений: 29


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Цитата:Вот Вам три "волшебных" функции - они в большинстве случаев закрывают все вопросы по ADO<->Autolisp.
Да, это основные функции. Но они, скорее открывают другие вопросы. Например (connection driver password) - вот тут надо четко знать, что это за аргументы и как их формировать.
пароль меня смутил,а еще больше смутило ODBC у меня его нет по умолчанию,насколько я поняла,а создавать,насколько я поняла потом надо будет на всех ~80машинах? %) либо я чего то не понимаю...

я впрочем уже внесла загрузку этих флеммингов в acddoc.lsp

а их exampl почему то не работает у меня %) пишет

Код:
[Выделить все]
Connecting to the database using
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Incoming\WORK\data.mdb;Persist Security Info=False"
Connection failed!
Visual LISP message           Automation Error. Provider cannot be found. It may not be properly installed.
хотя через JEt 4.0 я в office реализовывала запросы %)

----- добавлено через 55 сек. -----
Цитата:
Сообщение от trir Посмотреть сообщение
И разрядность! Не забываем про разрядность!
дан?)
Миниатюры
Нажмите на изображение для увеличения
Название: od.jpg
Просмотров: 46
Размер:	107.2 Кб
ID:	137172  
Вложения
Тип файла: lsp ADOLISP_Example.lsp (4.1 Кб, 24 просмотров)
Дианка вне форума  
 
Непрочитано 21.10.2014, 10:59
#33
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Офис стоит?

ADO+Lisp - и ты в прошлом веке ;=)

Надо, что бы разрядность Access'а и Acad'а совпадали
Если Access не стоит - тогда проще, можно просто драйвер поставить, а вот если стоит...

x32: C:\WINDOWS\SYSWOW64\odbcad32.exe

А может в топку mdb? ShaggyDoc правильно намекает, вон у вас и SQLite стоит...

Последний раз редактировалось trir, 21.10.2014 в 11:10.
trir вне форума  
 
Автор темы   Непрочитано 21.10.2014, 11:11
#34
Дианка


 
Регистрация: 14.10.2014
Сообщений: 29


Цитата:
Сообщение от trir Посмотреть сообщение
Если Access не стоит - тогда проще, можно просто драйвер поставить, а вот если стоит
...

x32: C:\WINDOWS\SYSWOW64\odbcad32.exe
стоит.тогда?) как узнать разрядность? что аксесса,что акада....

C:\Windows\System32\odbcad32.exe
C:\Windows\SysWOW64\odbcad32.exe
-обе есть.

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

если mdb в топку, выход тогда -какой?
Цитата:
перейти на совершенной иной, независимый от MS движок
для меня это какой то космос %)

Последний раз редактировалось Дианка, 21.10.2014 в 11:20.
Дианка вне форума  
 
Непрочитано 21.10.2014, 11:27
#35
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Цитата:
как узнать разрядность? что аксесса,что акада....
Тупой способ:
C:\Program Files
C:\Program Files (x86)
Смотришь где стоит большая часть - та разрядность

C:\Windows\System32\odbcad32.exe - это x64 драйвер (кто бы мог подумать)
Смотришь где отсвечивает движок

Цитата:
стоит.тогда?)
Сносить и ставить нужной разрядности

Цитата:
если у людей не стоит аксесс...то?
тогда просто ставишь драйвер нужной разрядности
http://www.microsoft.com/en-us/downl....aspx?id=23734

картинка, что ты запостила, показывает, что у тебя либо не стоит Access, либо он x32 - ибо скорей всего ты смотришь C:\Windows\System32\odbcad32.exe
trir вне форума  
 
Автор темы   Непрочитано 21.10.2014, 12:37
#36
Дианка


 
Регистрация: 14.10.2014
Сообщений: 29


Цитата:
Сообщение от trir Посмотреть сообщение
Тупой способ:
C:\Program Files
C:\Program Files (x86)
Смотришь где стоит большая часть - та разрядность
в 86 -больше . Сносить не могу, т.к. что это мне даст? опять же сносить и ставить у всех людей на машинах ради программульки?

сказали, что autocad 64-x как и система.

Цитата:
Сообщение от trir Посмотреть сообщение
картинка, что ты запостила, показывает, что у тебя либо не стоит Access, либо он x32 - ибо скорей всего ты смотришь C:\Windows\System32\odbcad32.exe
odbcad32.exe-у меня есть в обоих папках C:\Windows\System32 и в C:\Windows\SysWOW64 -запускает одно и то же. а зачем ссылка на 2007 Office? у нас 2013-ый

access определенно точно стоит ))) я же в нём работаю...


Offtop: блин я уже склоняюсь к методу считки с xls, а потом в отпуске пытаться написать что то на с++ или т.п. попытаться %)
Миниатюры
Нажмите на изображение для увеличения
Название: md.jpg
Просмотров: 30
Размер:	42.2 Кб
ID:	137188  
Дианка вне форума  
 
Непрочитано 21.10.2014, 13:10
#37
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


C# + MS SQL Server
trir вне форума  
 
Автор темы   Непрочитано 21.10.2014, 16:38
#38
Дианка


 
Регистрация: 14.10.2014
Сообщений: 29


Цитата:
Сообщение от trir Посмотреть сообщение
C# + MS SQL Server
два дня три головы мучаем с этими версиями ), сменами типов провайдеров ....
office -32, (поэтому без проблем c jet 4.0)

----- добавлено через ~17 ч. -----
вести с полей.........всё таки решено было использовать серверную базу SQL


законнектилась...
теперь встрял вопрос юникода

т.е. с БД не считывает НЕкириллицу... т.е. не считывает,как надо...
Миниатюры
Нажмите на изображение для увеличения
Название: uod.jpg
Просмотров: 33
Размер:	106.5 Кб
ID:	137303  

Последний раз редактировалось Дианка, 22.10.2014 в 13:20.
Дианка вне форума  
 
Автор темы   Непрочитано 22.10.2014, 17:00
#39
Дианка


 
Регистрация: 14.10.2014
Сообщений: 29


Цитата:
Сообщение от trir Посмотреть сообщение
буду копать...
Дианка вне форума  
 
Непрочитано 22.10.2014, 19:44
#40
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


я бы посмотрел кодировку на входе в БД - скорей всего UTF-8
ну настройки ODBC или через что конектитесь...
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp,VBA. Autocad 2013. Как "втянуть" данные в аттрибут блока(field)-из БД(mdb например)?С дальнейшей синхронизацией.

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59