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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как прикрепить базу даных с объкту в автокаде?

Как прикрепить базу даных с объкту в автокаде?

Ответ
Поиск в этой теме
Непрочитано 06.11.2007, 06:56 #1
Как прикрепить базу даных с объкту в автокаде?
nikol
 
ГИС, картография
 
Регистрация: 31.03.2007
Сообщений: 51

Задача: необходимо сделать на геологической карте описание шурфов. Возможно ли сделать так, чтоб щелкнув по объекту в автокаде вылазило описание. либо может как-то можно приекрепить .doc или .xls фаил. подскажите в каком направлении нужно двигаться.
__________________
кроме любви возбуждать могут только деньги!
Просмотров: 10565
 
Непрочитано 06.11.2007, 08:39
#2
SergGL

инженер
 
Регистрация: 13.08.2006
г. Пенза
Сообщений: 115


Можно использовать Hyperlink, DBConnect Manager .
__________________
MEMENTO QUOD ES HOMO
SergGL вне форума  
 
Автор темы   Непрочитано 06.11.2007, 09:30
#3
nikol

ГИС, картография
 
Регистрация: 31.03.2007
Сообщений: 51
<phrase 1= Отправить сообщение для nikol с помощью Skype™


так он просто открывает фаил в соответствующем редакторе. а мне необходимо чтоб при подведении двойном щелчке по объекту выводил мне формы с информацией о литологическом описании. так же тоб можно было редактировать эту информации и просматривать. таким образом мне нужно создать базу данных. сначало вбить, а потом чтоб другие могли просматривать
__________________
кроме любви возбуждать могут только деньги!
nikol вне форума  
 
Непрочитано 06.11.2007, 11:35
#4
ShaggyDoc

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


nikol, сначала определись, что ты хочешь. И что понимаешь под "базой данных". В голом AutoCAD, без программирования, можно сделать то, что написал SergGL. Можно и в атрибутах блоков информацию держать, но это очень примитивно.

Hyperlink будет работать наилучшим образом в DWF - открывать по ссылке документ, хоть в Интернет.

А чтобы комфортно редактировать, просматривать, да еще коллективно - это уже элементы ГИС-технологий. Для этого существует множество специально заточенных программных продуктов.

Можно это сделать и в AutoCAD, но с серьезным программированием. Специализированный редактор для работы с СУБД, связь примитивов с базой данных и прочее.
ShaggyDoc вне форума  
 
Непрочитано 06.11.2007, 11:40
#5
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Давно уже хотел поднять эту тему, да как-то было несруки, да и тема сама обьемная, я думаю многим было бы интересно использовать возможности серверов, для решения своих насущных задач, но связка "Сервера" с "Кадом", имеет ряд подводных камней, на некоторые из которых я уже наткнулся, возможно кому-нибудь будет интересно начало моего пути в этом направлении, и так моя
*Первая ошибка:
Ну для того, чтобы рассмотреть связку "SQL Сервера" с "Кадом", надо иметь
представление о SQL серверах, набрав в одной из поисковых систем три буквы "SQL"
получил кучу ссылок, первая которая мне понравилась была ссылка для "Зеленых Админов ", в которой доступно было описано как создавать пользователей, базы,
таблицы, запросы и т. д. все было замечательно и довольно просто, это была статья
о MySQL- сервере, в конечном итоге, все мои познания о MySQL, оказаались бесполезными, т.к. я ненашел никакого материала, который бы мне помог осуществлять запросы и т. д. из LISP --> MySQL.

Теперь, я пошел по другому пути, сделав предварительный обзор, я убедился в том, что "Кад" поддерживает сервера "Майкрософтовского" пр-ва, ну например
MS SQL, которуй для разработчиков "ПО" в виде ознакомительного варианта,
можно бесплатно скачать с сайта "Майкрософт"

http://www.microsoft.com/downloads/b...9-2B8530AB1EA8

Скачав долгожданный продукт:
Microsoft SQL Server 2005 Express Edition
я его установил по умолчанию, и пришел в глубокое уныние после первого знакомства, после дружелюбного MySQL, Microsoft SQL Server 2005 Express Edition
оказался продуктом увесистым и сложным, в добавок к тому я несмог создать в нем
ни одной таблицы ни одного пользователя и т.д., после прочтения неслольких статей
по Microsoft SQL Server, я скачал еще одну программу с той же ссылки, которая
называлась:
Microsoft SQL Server Management Studio Express (SSMSE) от одних букв голова уже кружится, так же установил ее по умолчанию, и здесь появился некоторый прогресс,
с помощью нее я смог создать свою "db" "таблицу", и даже через "dbconnect" в "Каде" смог увидеть свою базу правда пока без таблицы, ну для одного топика
достаточно.

Последний раз редактировалось Holon, 06.11.2007 в 14:17.
Holon вне форума  
 
Автор темы   Непрочитано 06.11.2007, 11:47
#6
nikol

ГИС, картография
 
Регистрация: 31.03.2007
Сообщений: 51
<phrase 1= Отправить сообщение для nikol с помощью Skype™


ShaggyDoc спасибо за информацию про автокад. конечно примитивные атрибуты меня не устраивают, хотя если есть возможность их расширить. добавить формы например и увеличить их размер...
а какие специально заточеные продукты вы посоветуете, уважаемый? у меян и есть цель создания ГИС. это пока пилотные проект электронного геофонда. начали с геологии
__________________
кроме любви возбуждать могут только деньги!
nikol вне форума  
 
Непрочитано 06.11.2007, 13:03
#7
Кулик Алексей aka kpblc
Moderator

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


Связь lisp <-> ADO (SQL, Access etc) : http://fleming-group.com/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.11.2007, 14:08
#8
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Вот кстати по поводу ADO абревиатура расшифровывается как ActiveX Data Objects
почитать можно здесь
http://www.microsoft.com/Rus/Msdn/Ac...O/Default.mspx
Holon вне форума  
 
Непрочитано 06.11.2007, 15:04
#9
ShaggyDoc

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


Цитата:
Сообщение от nikol Посмотреть сообщение
ShaggyDoc спасибо за информацию про автокад. конечно примитивные атрибуты меня не устраивают, хотя если есть возможность их расширить. добавить формы например и увеличить их размер...
а какие специально заточеные продукты вы посоветуете, уважаемый? у меян и есть цель создания ГИС. это пока пилотные проект электронного геофонда. начали с геологии
Для начала - Mapinfo. Очень легкая ГИС, но "настольная", для одного рабочего места. Продукт коммерческий, около $1500.

Можно начать с ObjectLand. Российский продукт, очень хороший. Сетевая БД, великолепная работа с таблицами. Очень демократичная цена - от 3000 руб на место до 90000 на "сайт-лицензию". У фирмы можно скачать пробную версию - она полностью рабочая, нет никаких ограничений, только в карту фирменный логотип вставляет. Очень удобно - можно капитально изучить.

Работать надо именно в настоящей ГИС. В любой. У всех них предусмотрен обмен данными. Если карта нарисована в AutoCAD, то и ее можно в ГИС экспортировать, а уж там работать с информацией.

AutoCAD для ГИС не очень подходит - слишком дорого. В ГИС могут быть 90% пользователей, которым нужен просмотр. Купить всем AutoCAD невозможно. А кроме базового AutoCAD понадобятся и "примочки", которые обойдутся еще дороже.

>Holon
Вы идете типично "буржуйским" путем. MS SQL и т.п. Да не предназначен он вообще для пространственных данных. Хотя хранить конечно можно, но с умом. Вам еще и Oracle SpatialWare порекомендуют... Если же пространственные данные внутри DWG, а семантика в БД, то это не ГИС. Это имитация.

Из LISP можно работать с БД только через ADO. Есть для какой-то СУБД OleDbProvider - сможете соединиться и выполнять SQL-запрос. В результате запроса получите данные, которые еще надо в LISP-список преобразовать. А вот всяческие визуальные штуки для редактирования в LISP не сделать.

Так что надо изучать и SQL вообще, и средства для работы с БД в разных средах программирования. Вообще-то гораздо дешевле готовый продукт купить. ГИС и бесплатные бывают...
ShaggyDoc вне форума  
 
Непрочитано 06.11.2007, 17:08
#10
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


я подключаюсь к серверу
[IMG]--------[/IMG]
потом, я могу просмотрет, созданную мной таблицу в базе
"TEST_SHAPIRA" под названием "Orders"
[IMG]--------[/IMG]
а в самом "АвтоКАДе" в "dbconnect", я вижу базу, а самой таблицы невижу в чем может быть причина?
[IMG]--------[/IMG]
Holon вне форума  
 
Непрочитано 06.11.2007, 17:11
#11
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Все я увидел таблицу, поигрался немного, с установками подключения к серверу,
если бы была возможность вставлять картинки в форуме, мог бы выставить все параметры подключения в картинках.

Последний раз редактировалось Holon, 06.11.2007 в 17:49.
Holon вне форума  
 
Непрочитано 06.11.2007, 17:39
#12
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>Holon Картинки можно вставить в расширенном режиме через управления вложениями, либо воспользуйся web сервисом, например admin'оским http://avral.ru или http://keep4u.ru
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 07.11.2007, 10:26
#13
nikol

ГИС, картография
 
Регистрация: 31.03.2007
Сообщений: 51
<phrase 1= Отправить сообщение для nikol с помощью Skype™


ShaggyDoc у нас и так все в МапИнфо. но там как говорят сотрудники стоят ограничения по кол-ву символов. возможно ли там редактировать этот параметр? Нам это не подходит. Мапинфо это конечно лучший варивант для нас. мы сейчас так и делаем. векторизуем в автокаде и загоняем в мапинфо. помимо информации еще и красивая картинка получается начали еще Мапдрайв смотреть. не знаю что это за штука и с чем ее едят...
__________________
кроме любви возбуждать могут только деньги!
nikol вне форума  
 
Автор темы   Непрочитано 07.11.2007, 11:03 мапинфо
#14
nikol

ГИС, картография
 
Регистрация: 31.03.2007
Сообщений: 51
<phrase 1= Отправить сообщение для nikol с помощью Skype™


длина строки 254 символа всего, а кол-во строк всего одно! мне для литологии это очень мало
__________________
кроме любви возбуждать могут только деньги!
nikol вне форума  
 
Непрочитано 07.11.2007, 11:15
#15
ShaggyDoc

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


Цитата:
Сообщение от nikol Посмотреть сообщение
ShaggyDoc у нас и так все в МапИнфо. но там как говорят сотрудники стоят ограничения по кол-ву символов. возможно ли там редактировать этот параметр? Нам это не подходит.
Где ограничения длины? В размере поля таблицы? Это потому, что привязано к устаревшим версиям DBF. Да, это недостаток.

Однако для больших данных имеется инструмент Геолинк. В таблице, в одном из полей, записывается ссылка на любой файл относительно таблицы. А в файле может быть хоть что.

Сама структура таблиц - слабое место в Mapinfo. Там и связи нельзя организовать, а это обязательно для любой информационной системы. Поэтому я и рекомендовал ObjectLand. А Mapinfo - для начала. И для великолепных тематических карт.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 07.11.2007, 12:40
#16
nikol

ГИС, картография
 
Регистрация: 31.03.2007
Сообщений: 51
<phrase 1= Отправить сообщение для nikol с помощью Skype™


ShaggyDoc а можно привязать в мапинфо аксесовскую базу или экселевский фаил?

инструмент Геолинк это где такое? что-то я не смог найти
__________________
кроме любви возбуждать могут только деньги!
nikol вне форума  
 
Непрочитано 07.11.2007, 14:30
#17
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Судя по всему, я сделал огромную ошибку неоткрыв отдельную тему, по "AutoCAD" и "SQL" в ней можно было-бы обсуждать различные темы, связанные с SQL, запросы,
драйвера, "ПО" и т.д примеры кодов, а я получается влез в чужей "огород", возможно модератор форума сможет разделить темы с уже существующими сообщениями?
Holon вне форума  
 
Непрочитано 08.11.2007, 14:32
#18
ShaggyDoc

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


Цитата:
Сообщение от nikol Посмотреть сообщение
ShaggyDoc а можно привязать в мапинфо аксесовскую базу или экселевский фаил?
Excel нельзя. Можно DBF и Access.
При сохранении таблицы выбрать тип файла БД Microsoft Access (tab)
Файл таблицы TAB это текстовый файл, в нем описание структуры. Но формат MDB поддерживается ограниченно.

1. Таблица Access должна содержать колонку типа счетчик. В противном случае MapInfo добавит такую колонку.
2. Таблица Access, переносимая в MapInfo, должна иметь простую структуру, т.е. не должна содержать поля, указывающие на данные другой таблицы Access.
3. Поля типа Memo, OLE, и Replication ID из таблицы Access не переносятся в MapInfo.
4. Текстовые поля не могут быть длиннее 2047 символов. Если длина поля превышает предел в 2047 символов, поле открывается в режиме только для чтения.
Самого вкусного и нет.


Цитата:
инструмент Геолинк это где такое? что-то я не смог найти
Окно Карта, контекстное меню, Управление слоями, кнопка Геолинк
ShaggyDoc вне форума  
 
Непрочитано 08.11.2007, 14:39
#19
ShaggyDoc

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


Цитата:
Сообщение от Holon Посмотреть сообщение
Судя по всему, я сделал огромную ошибку неоткрыв отдельную тему, по "AutoCAD" и "SQL" в ней можно было-бы обсуждать различные темы, связанные с SQL, запросы,
драйвера, "ПО" и т.д примеры кодов, а я получается влез в чужей "огород", возможно модератор форума сможет разделить темы с уже существующими сообщениями?
Все на SQL.RU. Для "AutoCAD и SQL" нет никаких перспектив.
См. C:\%Acad%\Sample\Database Connectivity - это программирование - высшее достижение за много лет.
Но всё убого - показать, что "куда крестьяне, туда и обезьяне".

С SQL надо работать вне AutoCAD, а ему передавать только результаты, например для рисования.

А для связи с графикой - тем более. Нужен "географический SQL", наподобие используемого в Mapinfo.
ShaggyDoc вне форума  
 
Непрочитано 08.11.2007, 16:17
#20
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


->ShaggyDoc

"С SQL надо работать вне AutoCAD, а ему передавать только результаты, например для рисования."


То, с чем я пытаюсь разобратся, На большем стекольном заводе есть две отдельно работающие систены, одна для "Маркетинга" и "Бухучета", а вторая "Автокад" для производства, вся информация
между первыми двумя отделами хранится на сервер а на производство т.е задание для проэктировщиков поступает в бумажном виде, и в добавок с "Производства"
должна идти обратная информация о состоянии заказов, сроки кол-во и т.д., так, что я несобираюсь делать сложных запросов и визуализации с помощью LISP-a,
я лиш хочу считывать информацию с баз данных и вставлять ее в формы ввиде блоков
с атрибутами, да и возможно менять некоторые данные с помощью простых запросов
не в коем случае несвязанных с анализом сортировкой и т. д.
Holon вне форума  
 
Непрочитано 08.11.2007, 21:33
#21
ShaggyDoc

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


Holon, наличие существующих систем всё усложняет. Это не работа с каким-нибудь отдельным DBF-файлом или БД "настольного" вида наподобие Access.

Системы наверняка работают с SQL-сервером, а это значит, что на сервере реализуется своя бизнес-логика, имеются множество таблиц, отношения между ними, могут быть хранимые процедуры, триггеры, Views и прочее. Вмешиваться во всё это надо очень осторожно. Надо досконально знать структуру баз данных, логику работы.

LISP для этого менее всего подходит (уж лучше VB). Зайдите на сайт, указанный в #7, возьмите библиотеку ADOLisp. Это очень хорошая библиотека (лучше нет), но она как раз продемонстрирует ограниченные возможности. Различия между ней и настоящими системами такие же, как между презентационным макетом автомобиля и промышленным образцом.

Сделать в AutoCAD связку с собственной БД не очень сложно. "Для дома, для семьи".

Вмешиваться в существующую промышленную систему надо на профессиональной основе. Вы же только "открываете" для себя аббревиатуру ADO, только пытаетесь разобраться с SQL, да и в LISP тоже на начальном уровне. Рановато за такую работу браться. Надо много изучать. Одно только "Введение в базы данных", где излагаются основы SQL, имет объём более 1000 страниц.

Удачи!
ShaggyDoc вне форума  
 
Непрочитано 11.11.2007, 15:01
#22
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Не притендую на авторские права, это пример кода для подключения к MS SQL серверу и вставку данных в таблицу, с использованием Библиотеки ADOLISP, самое ценное здесь это строка подключения. Библиотеку можно скачать у авторов, URL в 7- ом топике.
Код:
[Выделить все]
(if (not ADOLISP_ConnectToDB)
  (load "ADOLISP_Library.lsp")
)

(defun C:MYADO (/ ConnectionObject Result ConnectString SQLStatement
                  TablesList ColumnsList)
                 )
  (setq ConnectString
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=RAFI-75D23D089C\\SQL;Initial  Catalog=Glass")
  (prompt (strcat "\n\nConnecting to the database using \n\""  ConnectString "\"" ))
  (if (not (setq ConnectionObject (ADOLISP_ConnectToDB ConnectString "Ivan" "12345")))
  (progn (prompt "\nConnection failed!")(ADOLISP_ErrorPrinter))
  (prompt "\nResult: succeeded!"))
  ;; If we got a connection ...
  (if ConnectionObject
  (progn (setq SQLStatement
" use Glass
SELECT * FROM MyTable
INSERT INTO MyTable
 (
  [Customer],
  [Number_Mun],
  [Number_Cust],
  [Card_Cust],
  [Adress])
VALUES 
 ('Ivan',
  55555,
  55555,
  55555,
  'Komarovo'
 )")
  (prompt (strcat "\n\nInserting a row:\n\""  SQLStatement  "\""))
  (if (setq Result (ADOLISP_DoSQL ConnectionObject SQLStatement))
  (prompt "\nResult:\nSucceeded!")(progn(prompt "\nFailed!")(ADOLISP_ErrorPrinter)))
  (prompt "\n\nDisconnecting from the database\n")
      (ADOLISP_DisconnectFromDB ConnectionObject)
      (setq ConnectionObject nil)
    )
  )
  (prin1)
)
(prin1)
Holon вне форума  
 
Непрочитано 11.11.2007, 15:57
#23
Кулик Алексей aka kpblc
Moderator

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


В отместку: один из вариантов, которым я пользуюсь (правда, у меня база на Access, но суть ИМХО это мало поменяет - достаточно слегка отредактировать одну (!) функцию. Какую - не скажу, и так понятно ).
Вроде ничего не забыл...
Вложения
Тип файла: rar sql.rar (10.2 Кб, 121 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.11.2007, 19:21
#24
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Вопрос как сделать выборку с MSSQL вот пример запроса к серверу, проверяем
его работу вначале на самом сервере, а потом из *.lsp кода програмно,
Код:
[Выделить все]
(defun C:qqq (/ ConnectionObject Result ConnectString SQLStatement
                  TablesList ColumnsList)                 
  (setq ConnectString
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=RAFI-75D23D089C\\SQL;Initial  Catalog=Glass")
  (prompt (strcat "\n\nConnecting to the database using \n\""  ConnectString "\"" ))
  (if (not (setq ConnectionObject (ADOLISP_ConnectToDB ConnectString "Ivan" "12345")))
  (progn (prompt "\nConnection failed!")(ADOLISP_ErrorPrinter))
  (prompt "\nResult: succeeded!"))
  ;; If we got a connection ...
  (if ConnectionObject
  (progn (setq SQLStatement
"USE Glass
SELECT Number_Cust 
FROM MyTable
WHERE Number_Cust > 22223
ORDER BY Card_Cust ASC"
)
  (prompt (strcat "\n\nInserting a row:\n\""  SQLStatement  "\""))
  (if (setq Result (ADOLISP_DoSQL ConnectionObject SQLStatement))
  (prompt "\nResult:\nSucceeded!")(progn(prompt "\nFailed!")(ADOLISP_ErrorPrinter)))
  (prompt "\n\nDisconnecting from the database\n")
      (ADOLISP_DisconnectFromDB ConnectionObject)
      (setq ConnectionObject nil)
    (print Result)
    )
  )
  (prin1)
)
(prin1)
переменная
"Result" возвращает мне "Т"
Код:
[Выделить все]
Command:qqq
Connecting to the database using
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data 
Source=RAFI-75D23D089C\SQL;Initial  Catalog=Glass"
Result: succeeded!

Inserting a row:
"USE Glass
SELECT Number_Cust
FROM MyTable
WHERE Number_Cust > 22223
ORDER BY Card_Cust ASC"
Result:
Succeeded!

Disconnecting from the database

T

Command:
, а как получить запрос ввиде списка, или это те ограничения про которые говорил ShaggyDoc
Миниатюры
Нажмите на изображение для увеличения
Название: Select.GIF
Просмотров: 131
Размер:	23.6 Кб
ID:	700  
Holon вне форума  
 
Непрочитано 11.11.2007, 19:52
#25
Кулик Алексей aka kpblc
Moderator

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


Если установлено соединение с БД, и оно сохранено в переменной conn, и используется вариант из #23, то можно сделать так (естественно, проверить не могу):
Код:
[Выделить все]
(setq result (_kpblc-db-sql-open-connection conn "select Number_Cust from MyTable where ((([Number_Cust])>22223));"))
В переменной result будет нечто типа
Код:
[Выделить все]
'(("Number_Cust")
  (67895)
  (55555)
  (55555)
  (55555)
 )
Первый подсписок - имена полей, дальше списки данных. Но выбирать только по Number_Cust ИМХО недостаточно. Можно попробовать сделать так:
Код:
[Выделить все]
(setq result (_kpblc-db-sql-open-connection conn "select * from MyTable where ((([Number_Cust])>22223));"))
и в переменной result будет полный список полей MyTable. Проходя по записям, можно будет и дальше данные "выцеплять". Ну или сразу построить нормальный SQL-запрос, который и выполнит 90% работы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.11.2007, 06:42
#26
ShaggyDoc

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


Holon, SQL в СУБД - это примерно как AutoLISP в AutoCAD. SQL-запрос - строка, передаваемая серверу. В ответ может быть получен результат. А может и не быть получен, могут и всякие ошибки быть. Результат обычно надо как-то визуализировать. Да и запрос тоже надо формировать с помощью какого-то построителя, а не путем набора текста.

Представьте, что работаете с Автокадом только через текстовое окно, набирая в нем на клавиатуре LISP-выражения, а графики вообще не видите. Результат будет плачевный.

Приведенный пример - это уровень "Hello, Word". "SELECT * FROM...." может вернуть и миллионы записей. Которые должны прилететь по сети и как-то обработаться. В СУБД так не делается. И не факт, что пользователю, от чьего имени делается запрос это вообще позволено. Там могут и роли быть.

Запрос "INSERT ...." еще опасней. Это изменение БД. Значит должны быть соответствующие права, но ещё должны проводиться какие-то действия и с другими таблицами, индексами и прочим. Иначе будет нарушена целостность БД.

Вот потому и делаются специальные программы. Есть универсальные, которые позволяют работать с любой БД сервера определенного типа. Они предназначены для самих разработчиков СУБД. В таких программах есть всегда и окно SQL. Только с SQL работают опытные разработчики. При работе из LISP вы даже этого окна не увидите, а будете действовать полностью вслепую.

Для конечных пользователей делаются специальные приложения ("Маркетинг", "Бухучет"). Юзер там не видит никакого SQL. Он выбирает из списков, заполняет формы, видит результаты. SQL работает, но скрыт в программе. На LISP подобные, чуть сложнее HelloWord, приложения не написать.

Но специализированная программа ничего не может сделать в AutoCAD. И если результатом её работы должна быть, например, вставка блока, имя которого хранится в БД, то надо и делать так, чтобы саму вставку делал LISP. А имя этого блока можно получить разными способами, например, через файл. Не исключен вариант, что в БД может быть создана специальная временная таблица для обмена данными с LISP.

Кстати, это форум - пример такой программы. Есть сервер MySQL, есть БД, в ней 95 (!) таблиц. И когда мы смотрим эту ветку, то выполняем запрос наподобие SELECT * FROM VB3_POST WHERE POSTID=14765

Но видим-то мы не сами результаты, а результаты, преобразованные в формат HTML. При этом не только из таблицы, где хранятся тексты постов, а и из множества других таблиц. Такую возможность предоставляет скрипт форума - огромное количество программ, написанных на PHP. Это специальный язык, заточенный на формирование WEB-страниц и на работу с БД.

А теперь представтьте, что всё это надо нарисовать с помощью LISP в AutoCAD...
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 12.11.2007, 07:07 не получается у меня(((
#27
nikol

ГИС, картография
 
Регистрация: 31.03.2007
Сообщений: 51
<phrase 1= Отправить сообщение для nikol с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Excel нельзя. Можно DBF и Access.
При сохранении таблицы выбрать тип файла БД Microsoft Access (tab)
Файл таблицы TAB это текстовый файл, в нем описание структуры. Но формат MDB поддерживается ограниченно.

1. Таблица Access должна содержать колонку типа счетчик. В противном случае MapInfo добавит такую колонку.
2. Таблица Access, переносимая в MapInfo, должна иметь простую структуру, т.е. не должна содержать поля, указывающие на данные другой таблицы Access.
3. Поля типа Memo, OLE, и Replication ID из таблицы Access не переносятся в MapInfo.
4. Текстовые поля не могут быть длиннее 2047 символов. Если длина поля превышает предел в 2047 символов, поле открывается в режиме только для чтения.
Самого вкусного и нет.



Окно Карта, контекстное меню, Управление слоями, кнопка Геолинк
сохранил фаил ТАВ в формате файла БД Microsoft Access (tab)
открываю его в аксесе. добавляю столбец/строку, но при открытии в мапинфо он выдает ошибку и открывать измененую таблицу не желает.
__________________
кроме любви возбуждать могут только деньги!
nikol вне форума  
 
Непрочитано 12.11.2007, 07:39
#28
ShaggyDoc

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


Цитата:
Сообщение от nikol Посмотреть сообщение
сохранил фаил ТАВ в формате файла БД Microsoft Access (tab)
открываю его в аксесе. добавляю столбец/строку, но при открытии в мапинфо он выдает ошибку и открывать измененую таблицу не желает.
TAB - это только ссылка на файл базы данных Access. "его в аксесе" открыть нельзя.

"он выдает ошибку". Кто он? Мапинфо - "она", Access - "она". А файлы ничего не выдают, они лежат себе и никого не трогают. Ошибка обычно сопровождается пояснением.

Mapinfo - настольная однопользовательская программа. Открыть файл одновременно в Mapinfo и Access не получится. И не надо - Mapinfo работает с MDB прямым доступом, с учетом ограничений, и запросто испортит объекты Access, если они там есть.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 12.11.2007, 10:05
#29
nikol

ГИС, картография
 
Регистрация: 31.03.2007
Сообщений: 51
<phrase 1= Отправить сообщение для nikol с помощью Skype™


Я не правильно выразился, сори. Как все таки мне присоединить таблицу с 5 ячейками и 5 колонками в MapInfo? Подскажите пожалуйста простым понятным любому пользователю языком. Заранее очень благодарен
__________________
кроме любви возбуждать могут только деньги!
nikol вне форума  
 
Непрочитано 12.11.2007, 10:42
#30
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Ув. ShaggyDoc вы меня наверное неправильно поняли, я несобираюсь писать
программы на LISP для "Менеджеров", "Бух. учета" и т.д. я лишь хочу передовать в отдельную таблицу сведения о кол-ве и типе "Расходного материала" потраченных на
определенного "Клиента", а потом уже специалисты и админы свяжут мои данные с
их хитрозапутанными таблицами и данными в их "Апликациях".

-> Кулик Алексей aka kpblc мой код заработал, я только поменял строку запроса и сделал ее как у тебя, хотя очень странно ведь свой предыдущий запрос я проверял на самом сервере и он работал, я даже картинку выставил в 24-ом топике с этим запросом, получается запрос сделанный на сервере и в LISP имеет различный синтаксис вот мой пример с твоим запросом
Код:
[Выделить все]
(defun C:qqq (/ ConnectionObject Result ConnectString SQLStatement
                  TablesList ColumnsList)                 
  (setq ConnectString
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=RAFI-75D23D089C\\SQL;Initial  Catalog=Glass")
  (prompt (strcat "\n\nConnecting to the database using \n\""  ConnectString "\"" ))
  (if (not (setq ConnectionObject (ADOLISP_ConnectToDB ConnectString "Ivan" "12345")))
  (progn (prompt "\nConnection failed!")(ADOLISP_ErrorPrinter))
  (prompt "\nResult: succeeded!"))
  ;; If we got a connection ...
  (if ConnectionObject
  (progn (setq SQLStatement
;;;"USE Glass
;;;SELECT Number_Cust 
;;;FROM MyTable
;;;WHERE Number_Cust > 22223
;;;ORDER BY Card_Cust ASC"
"select Number_Cust from MyTable where ((([Number_Cust])>22223));"		
)
  (prompt (strcat "\n\nInserting a row:\n\""  SQLStatement  "\""))
  (if (setq Result (ADOLISP_DoSQL ConnectionObject SQLStatement))
  (prompt "\nResult:\nSucceeded!")(progn(prompt "\nFailed!")(ADOLISP_ErrorPrinter)))
  (prompt "\n\nDisconnecting from the database\n")
      (ADOLISP_DisconnectFromDB ConnectionObject)
      (setq ConnectionObject nil)
    (print Result)

    )
  )
  (prin1)
)
(prin1)
А вот результат:

Код:
[Выделить все]
Command: qqq


Connecting to the database using
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data 
Source=RAFI-75D23D089C\SQL;Initial  Catalog=Glass"
Result: succeeded!

Inserting a row:
"select Number_Cust from MyTable where ((([Number_Cust])>22223));"
Result:
Succeeded!

Disconnecting from the database

(("Number_Cust") ("67895     ") ("55555     ") ("55555     ") ("66666     "))

Command:
Holon вне форума  
 
Непрочитано 12.11.2007, 11:18
#31
Кулик Алексей aka kpblc
Moderator

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


У тебя в поле Number_Cust какой тип данных? REAL или CHAR? Потому что я-то строил SQL-запрос для REAL-значений.
P.S. Я бы твою команду переделал как функцию все же, с передачей строки соединения, логина и пароля пользователя (возможно, шифрованного, с последующей "дешфрацией"). Ну или Data Source, логин и пароль.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.11.2007, 11:29
#32
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Тип данных в поле Number_Cust (nchar(10),nil) 10-знаков и возможен "НИЛ"
Holon вне форума  
 
Непрочитано 12.11.2007, 11:33
#33
ShaggyDoc

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


Цитата:
Сообщение от nikol Посмотреть сообщение
Я не правильно выразился, сори. Как все таки мне присоединить таблицу с 5 ячейками и 5 колонками в MapInfo? Подскажите пожалуйста простым понятным любому пользователю языком. Заранее очень благодарен
В таблице нет "ячеек". Имеются записи (строки) и поля (колонки). Записей может быть сколько угодно, а полей столько, сколько задано в структуре таблицы.

"Присоединить" к чему? Таблица создается в Mapinfo Файл-Новая таблица. Далее в диалоге вводите требуемый набор полей. Что неясно - жмете кнопку Справка.

Если к таблице понадобится присоединять географическую информацию, надо включить флажок Можно присоединять географические объекты, а также щелкнуть кнопку Проекция и задать проекцию карты, в которой будут отображаться географические объекты.

Вообще лучше сначал прочитать документацию - там все разжевано очень подробно. Также работает клавиша F1.

Цитата:
Ув. ShaggyDoc вы меня наверное неправильно поняли, я несобираюсь писать программы на LISP для "Менеджеров", "Бух. учета" и т.д. я лишь хочу передовать в отдельную таблицу сведения о кол-ве и типе "Расходного материала" потраченных на
определенного "Клиента",
Я очень хорошо понял. Я предупредил, что в БД, с которой работают другие программы, могут быть сложности с передачей данных даже в отдельную таблицу.

К тому же ранее было написано:

Цитата:
лиш хочу считывать информацию с баз данных и вставлять ее в формы ввиде блоков с атрибутами, да и возможно менять некоторые данные с помощью простых запросов
"Лишь считывать", "лишь передавать", "возможно менять" - очень разные вещи. "Вставлять её в формы в виде блоков с атрибутами" - тоже надо определяться. Есть в БД блоки с атрибутами? Что такое "формы"? Бумажные отчеты? Окно программы? SHAPE в AutoCAD? Это ведь всё "формы".

Надо начинать с четкой постановки задачи, и уж потом выбирать инструмент.
ShaggyDoc вне форума  
 
Непрочитано 12.11.2007, 22:44
#34
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Вопрос может показаться смешным, но после создания подключения в "dbconnect" невозмозно удалить, ранее созданные ненужные "соединения", на картинке список соединений, как например удалить "Connect1",
или это "БАГ" ACada?
Миниатюры
Нажмите на изображение для увеличения
Название: dbconnect.GIF
Просмотров: 96
Размер:	6.6 Кб
ID:	721  
Holon вне форума  
 
Автор темы   Непрочитано 13.11.2007, 06:42
#35
nikol

ГИС, картография
 
Регистрация: 31.03.2007
Сообщений: 51
<phrase 1= Отправить сообщение для nikol с помощью Skype™


Уважаемый ShaggyDoc. вот таблица которую необходимо привязать к объекту в MapInfo. каким образом можно это сделать?
Вложения
Тип файла: doc Таблица показателей физико.doc (58.5 Кб, 1581 просмотров)
__________________
кроме любви возбуждать могут только деньги!
nikol вне форума  
 
Непрочитано 13.11.2007, 08:45
#36
ShaggyDoc

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


Цитата:
Сообщение от nikol Посмотреть сообщение
Уважаемый ShaggyDoc. вот таблица которую необходимо привязать к объекту в MapInfo. каким образом можно это сделать?
Как привязать?

1. Такую таблицу (сразу несколько строк) к каждому объекту, например, к скважине?

2. Или каждая строка такой таблицы из 26 колонок - самостоятельный объект?

В первом варианте создаете таблицу, в которой, кроме прочих полей, есть какое-то строковое поле с именем, например, "Документация". Затем с помощью Геолинк заносите в это поле ссылку на файл документации. Возможно, один и тот же файл будет и для разных объектов.

Во втором варианте создаете таблицу Mapinfo с 26 полями. Учтите, что имена полей должны быть короткими и однословными. "[FONT='Arial CYR']Относительная просадочность при ρ = кг/см3" - недопустимое имя. Придется давать маловразумительные имена, например "Просад_01".[/FONT]

[FONT='Arial CYR']Теперь, создавая объект, надо заносить в его атрибуты, т.е. в соответствующие поля, требуемые данные. Каждая точка, линия, полигон будут связаны с записью таблицы.[/FONT]
ShaggyDoc вне форума  
 
Непрочитано 21.11.2007, 09:29
#37
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


То что мне нужно было, как всегда придумали за меня, вчера только узнал о существовании продукта Autodesk Vault он поставляется с "Инвентором" и "Механикл", это пример использования возможностей сервера SQL для создания
архивов, причем сами чертежи хранятся в отдельной директории, а управление по именам и версиям чертежей, производится "БД" на "Сервере SQL".
Holon вне форума  
 
Непрочитано 21.11.2007, 09:45
#38
Кулик Алексей aka kpblc
Moderator

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


Ага, только Vault (также как и ProjectStream) максимально заточен под машиностроение и не всегда он "самое то" для смежных отраслей; Vault требует отдельного выделенного сервера с развернутым на нем MS SQL Server 2000 (2005 и 2005 Express работает не всегда корректно); теоретически Vault интегрирован в Inventor и Civil, опять же теоретически позволяется его интегрировать и с AutoCAD 2007, но как это выглядит на практике - лично я не знаю.
И, наконец, самое главное: Vault в твоей задаче (как она звучала в самом начале) вряд ли поможет. Хотел бы я ошибаться...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.11.2007, 11:27
#39
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Я действительно незнаком с этим продуктом, я хочу изучить его, прежде чем создавать что-то, возмозно взять на вооружение какие-либо идеи.
Holon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как прикрепить базу даных с объкту в автокаде?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как отключить в автокаде привязки к штриховкам? RA AutoCAD 18 21.03.2017 13:31
как отрегулировать фокус перспективы в автокаде 2004??? kalcha AutoCAD 5 09.08.2007 02:08
Как создать резьбу в 3Д в Автокаде? Нико AutoCAD 2 27.09.2004 19:17
Как в Автокаде в VBA делать паузу на некоторое время Саша AutoCAD 2 08.09.2004 19:06
Как в Автокаде в VBA указать окно просмотра (Window) Саша AutoCAD 1 06.09.2004 21:40