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

Вернуться   Форум 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

п.с. просьба как можно более упроситить "язык ответа" , я же - чайник.
Просмотров: 15043
 
Непрочитано 22.10.2014, 21:35
#41
ShaggyDoc

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


Цитата:
вести с полей.........всё таки решено было использовать серверную базу SQL
законнектилась...
теперь встрял вопрос юникода
т.е. с БД не считывает НЕкириллицу... т.е. не считывает,как надо...
Вы бы еще Oracle поставили....
"НЕкириллица" это ещё только начало. Мелкий вопрос.

Конечная-то задача какая? Вроде было написано непонятное:

Цитата:
В dwg файл,по кнопочкам вставляется блок - после pick folder-a на сервере, нужного проекта.В тоже время в той папке(нужногопроекта) лежит mdb с данными и файлик-блок с атрибутами типа field вытащенные из того же мдб., после вставки того проектного блока, последовательно предложить вставку списка фамилий(дин.блочки с lookup уже готовы)
...
сейчас у нас типо тхт файлика данных по проекту,из которого тянутся данные для ворда, и для двг один файлик который тянем Xref-om остальное делается вручную..
считывать данные с тхт(который для ворда) -думаю дико геморрно,хочу всё привести к одному источнику данных,скорее всего к mdb
Что Вам надоть-то? Выбирать фамилии из каких-то списков? Вставлять их в трибуты блоков? Или еще что? Сколько этих фамилий или еще чего? 10 шт? 100? 1 млн? Где они будут храниться в БД (любой)? В "плоской" таблице? Сколько человек будут пользоваться? Что это за "тхт(который для ворда)"?

Может вопрос "гроша выеденного" не стоит? "Источники данных" могут быть разные, в том числе текстовые разных видов (причем отображаемые как таблица БД, т.е. DataSet). В том числе такие, которые и Лисп и другие приложения могут напрямую читать, безо всяких "движков".

Надо ли для этого MSSQL тащить, да на все рабочие места? У Вас "дядя в Майкрософт работает, у него там этих SQL-ов..."?
ShaggyDoc вне форума  
 
Непрочитано 23.10.2014, 00:10
#42
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Дианка Посмотреть сообщение
Цитата: Сообщение от Do$ Может тогда обратить внимание на какую-то готовую систему электронного документооборота? В них вроде все это есть. Карточка проекта, из которой берется атрибутика в документы...

куплена,но до этой части дойдет нескоро ) еще наверное миниммум год-1,5.
Т.е. вы сейчас хотите нагородить что-то с дополнительной БД, а потом пытаться это скрещивать с уже купленной СЭД?

----- добавлено через ~7 мин. -----
p.s. Динамические блоки фамилий с lookup-это хорошо, но лишний мусор в чертеже. Сначала сделал так же, сейчас планирую сменить: фамилии в подшивках с полями в атрибутах основной надписи, блоки с подписями подтягивается простейшим макросом по содержимому соответствующих атрибутов.
Сергей812 вне форума  
 
Автор темы   Непрочитано 23.10.2014, 09:40
#43
Дианка


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


Цитата:
Сообщение от trir Посмотреть сообщение
я бы посмотрел кодировку на входе в БД - скорей всего UTF-8
ну настройки ODBC или через что конектитесь...
а как на входе в БД посмотреть? я там для теста вбила несколько строк с различной текстовкой
тип поля в таблице nvarchar

коннект такой
Код:
[Выделить все]
 "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=***;Data Source=SAPR;User Id=****;Password=***;"
..................
(setq
        SQLStatement "SELECT Familia FROM test_data  WHERE ID >= 2"
      )
      (prompt
        (strcat
          "\n\nVot takoy itog:\n\""
          SQLStatement
          "\""
        )
      )
c txt тоже пыталась считать, и пихнуть в свойства чертежа (из которых можно собственно в текст полем пихнуть,та же история.

----- добавлено через ~19 мин. -----
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Что Вам надоть-то? Выбирать фамилии из каких-то списков? Вставлять их в трибуты блоков? Или еще что? Сколько этих фамилий или еще чего? 10 шт? 100? 1 млн? Где они будут храниться в БД (любой)? В "плоской" таблице? Сколько человек будут пользоваться? Что это за "тхт(который для ворда)"?
не фамилии,фамилии - это уже в принципе решено,созданы парочка блоков с лукапами, нужно, что-то типо http://forum.dwg.ru/showthread.php?p=801972#post801972
такого в общих чертах,т.е. суть-хранение данных в одном файле на серваке, админ вносит с новым проектом, но я думала такое лиспом можно реализовать,но столкнулась с проблемой юникода.К mdb я прицепилась, т.к. часть данных (для ворда)я уже перевела в базу ,какая то часть хранится в инишках,короче этот балаган,в конце концов хотела свести к одному источнику,а т.к. в ворде всё выглядит не плохо с аксессом..

На данный момент в MS Worde у нас данные считываются с ini(каждого нового проекта) которые сохраняюся в формате unicode( не ANSI),функция VBA считывает в формате юникода-
vbFromUnicode -Converts the string from Unicode to the default code page of the system.

Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Может вопрос "гроша выеденного" не стоит? "Источники данных" могут быть разные, в том числе текстовые разных видов (причем отображаемые как таблица БД, т.е. DataSet). В том числе такие, которые и Лисп и другие приложения могут напрямую читать, безо всяких "движков".
текстовые (они же ini)пыталась, кодировка опять жеж...да и не знаю,хранить это в текстах и опять же таскать это по проектам..

Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Надо ли для этого MSSQL тащить, да на все рабочие места? У Вас "дядя в Майкрософт работает, у него там этих SQL-ов..."?
в том то и дело я задала вопрос ,чтобы знать заранее "последствия", посему я кажется неск.постами выше пару раз объясняла,что мне нужны пути такие что бы "ничего не тащить по всем машинам,не устанавливать,не предустанавливать,чтобы люди вообще перемен не заметили,просто "новую красивую удобную кнопку"

----- добавлено через ~8 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Т.е. вы сейчас хотите нагородить что-то с дополнительной БД, а потом пытаться это скрещивать с уже купленной СЭД?
ну я по крайней мере (если наладится процесс) получу опыт работы Autocad<--->SQL serv .И пойму к чему готовиться. (использовать сторонние возможности,опять же пробовать начинать писать что то на других языках,или типо того).
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
p.s. Динамические блоки фамилий с lookup-это хорошо, но лишний мусор в чертеже. Сначала сделал так же, сейчас планирую сменить: фамилии в подшивках с полями в атрибутах основной надписи, блоки с подписями подтягивается простейшим макросом по содержимому соответствующих атрибутов.
-а чем лукап засоряет? у меня теоретически был план такой что считывается юзер(машина)-вычисляется отдел,и притягивается именно блок их отдела(фамилий) ,а там табличка ну максиммум по 15-20 фам,правда на 3 языках. это сильно утяжелит?Некоторые уже пользуются таким блочком, хотим создать для всех такое же..
про подшивки сегодня почитаю,что то смутно представляю что и как.

Последний раз редактировалось Дианка, 23.10.2014 в 10:00.
Дианка вне форума  
 
Непрочитано 23.10.2014, 10:11
#44
ShaggyDoc

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


Для разных БД кодировка устанвливается по-разному.
Например, в MySQL кодировка указывается в свойствах базы данных. Она больше нужна для сравнения строк, но программы которые читают БД могут пытаться этим свойством воспользоваться и отобразить данные в соответствующей кодировке. Причем вполне возможно, что определят кодировку неправильно.

Кроме того, сами строки перед помещением в БД должны быть в правильной кодировке. Они ведь откуда-то берутся. Например из всяких DbEdit в программе редактирования БД. Там уже есть какая-то кодировка. Раньше были и DOS-866, и Win1251, а теперь может быть и UTF-8 и вообще какая-нибудь экзотика. Т.е. возможна необходимость перекодировки текста в БД.

Пример две картинки с простейшей таблицей DBF. Таблица древняя, в ней еще DOS-кодировка. Но программа просмотра позволяет отобразить правильный текст, без перекодировки данных. Но их, если надо, можно и перекодировать. Тогда более современные программы, в которых 866 и установить нельзя, смогут с ней работать. Также и происходит сейчас с Win и UTF. UTF более универсальна, но для текстов требуется почти вдвое больше места. Ну и не все программы могут отобразить UTF. Например, сможет ли ваш Автокад правильно отображать строки, извлеченные из БД, знаете ли?

Цитата:
текстовые (они же ini)пыталась, кодировка опять жеж...да и не знаю,хранить это в текстах и опять же таскать это по проектам..
Текстовые - это не "они же ini". Текст может быть хоть какой для источника данных. И csv, и c табуляцией, и xml. И уж в текстовом файле с кодировками проблем как раз нет. С текстами, как источниками данных могут быть проблемы при очень больших объемах - ну порядка сотен тысяч записей, потому что там индексирования не сделать. Но и агромадные БД для "больших" машин хранились в текстовом виде.
Миниатюры
Нажмите на изображение для увеличения
Название: dbf_dos.jpg
Просмотров: 52
Размер:	126.5 Кб
ID:	137342  Нажмите на изображение для увеличения
Название: dbf_win.jpg
Просмотров: 41
Размер:	136.2 Кб
ID:	137343  

Последний раз редактировалось ShaggyDoc, 23.10.2014 в 10:17.
ShaggyDoc вне форума  
 
Непрочитано 23.10.2014, 10:17
#45
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Дианка Посмотреть сообщение
-а чем лукап засоряет?
1. Потому что это динамический блок - т.е. сначала создается анонимный блок с выбранной "конфигурацией" динблока, а потом лишь вставка этого анонимного блока.
2. Смотря как сделано - если подписи в виде блоков - то еще будет висеть неиспользуемых (15..20)*3 блоков в чертеже.
Сергей812 вне форума  
 
Автор темы   Непрочитано 23.10.2014, 10:49
#46
Дианка


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Кроме того, сами строки перед помещением в БД должны быть в правильной кодировке. Они ведь откуда-то берутся
в БД я просто впечатала несколько строк вручную
в скрине свойства вроде всё ,что можно посмотреть .


п.с. не знаю показатель ли,я сделала запрос в Managment Studio Express на строки эти НЕкириллицы, и сохранила результат в тхт(там есть функция save result as..), он сохранил сразу в формате юникода.

п.п.с. всё же хочется уйти от текстового формата,либо модернизировать то,что имеется (каждый проектовый файл ini) и считывать данные уже в Autocad -но я не поняла,как в этом случае решить проблему кодировки

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
2. Смотря как сделано - если подписи в виде блоков - то еще будет висеть неиспользуемых (15..20)*3 блоков в чертеже.
дин блок один,с Lookup таблицами.

не знаю,учитывая их куча разного хлама,не думаю что утяжелит чертеж один блочок ) пойду тестировать подшивки.
Миниатюры
Нажмите на изображение для увеличения
Название: prop.jpg
Просмотров: 44
Размер:	97.2 Кб
ID:	137350  

Последний раз редактировалось Дианка, 23.10.2014 в 10:54.
Дианка вне форума  
 
Непрочитано 23.10.2014, 11:33
#47
ShaggyDoc

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


Цитата:
в БД я просто впечатала несколько строк вручную
Не в БД. А в какой-то "контрол" какой-то программы. И уже эта программа отправила данные в БД. Причем наверняка не напрямую, а с помошью SQL-запроса, в который подставила данные из "она ввода" в какой-то кодировке. А потом эта же (или другая) программа может прочитать эти данные. Как правило тоже в результате запроса. И отобразит данные так, как умеет. А "умеет не так" может оказаться, например, из-за неправильного свойства кодировки в свойствах самого "контрола". Там же тоже параметры шрифта устанавливаются. Хорошим тоном считается установка везде "DefaultCharset", т.е. установленного на машине языка. Но может оказаться и не так.

Как это влияет на отображение легко исследовать в Notepad++ на любом текстовм файле с русским текстом. Там можно и отобразить текст в любой из пары десятков кодировок, и преобразовать его в любую из них. Но не каждая программа умеет оторажать данные в разных кодировках.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 23.10.2014, 14:44
#48
Дианка


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Не в БД. А в какой-то "контрол" какой-то программы. И уже эта программа отправила данные в БД. Причем наверняка не напрямую, а с помошью SQL-запроса, в который подставила данные из "она ввода" в какой-то кодировке. А потом эта же (или другая) программа может прочитать эти данные. Как правило тоже в результате запроса. И отобразит данные так, как умеет. А "умеет не так" может оказаться, например, из-за неправильного свойства кодировки в свойствах самого "контрола". Там же тоже параметры шрифта устанавливаются. Хорошим тоном считается установка везде "DefaultCharset", т.е. установленного на машине языка. Но может оказаться и не так.
я вот этим эдитором пользовалась...
на машине у меня стоит русский..как и у большинства ,думаю.
ну так вообще решение есть какое то? с кодировкой..я уже перестаю,что либо понимать..
Миниатюры
Нажмите на изображение для увеличения
Название: edit.jpg
Просмотров: 56
Размер:	115.8 Кб
ID:	137384  
Дианка вне форума  
 
Непрочитано 23.10.2014, 20:09
#49
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Дианка Посмотреть сообщение
дин блок один,с Lookup таблицами.
Если собираетесь вручную менять фамилии-то параметры видимости достаточно удобны.. если программно - можно, конечно и lookup в динблоках программно выставлять, но как то теряется смысл этих видимостей.. а чертеж не резиновый..
Сергей812 вне форума  
 
Автор темы   Непрочитано 24.10.2014, 09:57
#50
Дианка


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


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

Реклама i


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