Как синхронизировать процесс обновления данных таблицы SQL-serv и чертежа?

Автор Тема: Как синхронизировать процесс обновления данных таблицы SQL-serv и чертежа?  (Прочитано 14386 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн ДианкаАвтор темы

  • ADN Club
  • Сообщений: 41
  • Карма: 0
Добрый день!Может по дурацки задала вопрос,но суть такая, в чертеж вставили блок,с атрибутами-данные которого считались с БД(таблица в SQL- serv).
в свойствах файла записала "ключик",  если осуществлять обновление данных то при коннекте с определенной таблицей,будет считывание строки с данным "ключиком".

теперь вопрос встал об обновлении,Как это осуществлять?
каждый раз при открытии файлов автокада сканировать на наличие этого блока?ок нашли,дальше что?
каждый раз коннектиться к базе читать и обновлять в фоне-мне кажется тоже не дело.


я вижу картину такую как с Xref  ссылками-когда в притянутых файлах жмут сэйв,появляется извещение.. типо того.

п.с. я немножко чайник чайниковый,прошу не серчать.
п.п.с. данные в БД я пока вносила вручную,для написания программы "считывания", далее планируется писать формочку для внесения  данных в таблицы.-может отсюда вылезет какой то маячок?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Приветствую на форуме!
в свойствах файла записала "ключик"
Какой ключик?
я вижу картину такую как с Xref  ссылками-когда в притянутых файлах жмут сэйв,появляется извещение.. типо того.
"Типо того" ничего не понял. ;) Xref знает путь к dwg-файлу из которого вставлен и в чертеже при вставке Xref создается запись таблицы блоков, которая имеет свойство IsFromExternalReference == true
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ДианкаАвтор темы

  • ADN Club
  • Сообщений: 41
  • Карма: 0
Какой ключик?
Ну я путь к проекту сохраняю в Properties ->Summary->HyperlinkBase ->D:\Projects\2014\Zavod...
 типо такого.
просто ранее в таблице данных (SQL)в качестве ключа поиска у меня заявлен -путь. (т.е. при первом коннекте ищет по "Select ..... from mytable where blabla=path"

"Типо того" ничего не понял.  Xref знает путь к dwg-файлу из которого вставлен и в чертеже при вставке Xref создается запись таблицы блоков, которая имеет свойство IsFromExternalReference == true
так я к тому что решение хотелось бы примерно такое (с точки зрения пользователя).Как сделать маячок на изменения?
что в данной таблице изменилось что-то..не подвергая машины  пользователей а-када постоянным коннектам к базе.


Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
что в данной таблице изменилось что-то..не подвергая машины  пользователей а-када постоянным коннектам к базе.
А как ты себе такое представляешь? Нужно по таймеру обращаться к базе. Других вариантов я не вижу. Более того. Я так понимаю что на автомате обновлять из базы нельзя. Нужно спрашивать у пользователя.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ДианкаАвтор темы

  • ADN Club
  • Сообщений: 41
  • Карма: 0
А как ты себе такое представляешь? Нужно по таймеру обращаться к базе. Других вариантов я не вижу. Более того. Я так понимаю что на автомате обновлять из базы нельзя. Нужно спрашивать у пользователя.
я пока ничего не представляю,за неимением опыта работы с SQL )))  ,месяц где-то, ковыряюсь в C#, просто хотела узнать есть ли инструментарий,или какой то механизм отслеживания конкретных таблиц, может какой то промежуточный файл тхт писать?типо лога..или как .
У пользователя врядли спрашивать надо,его просто оповестить,что произошли изменения  ->а далее  пока мысли,что бы нажали кнопку обновленя-> запускать снова форму с новыми данными->применить.
Конечно можно просто оставить кнопку обновления,жмут->коннект(правда тут вопрос количества коннектов для меня темный лес, одновременно могут человек 20 к БД лезть)->считалось акктуальное->применить.НО пользователи,ониж такие,всатвили,и забы(и)ли,пока не пнёшь...

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
просто хотела узнать есть ли инструментарий,или какой то механизм отслеживания конкретных таблиц
Отслеживания где? В чертеже открытом в AutoCAD? Есть. В базе данных? Наверное есть, но тут я ничем не помогу. Более того я пока совсем не понимаю постановку задачи.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
А как ты себе такое представляешь? Нужно по таймеру обращаться к базе. Других вариантов я не вижу.
Как минимум Oracle и MSSQL имеют штатный функционал "событий" на обновление "другими" полученного результата (то есть по сути изменения данных). MySql такого не умеет (хотя может в последних уже и умеет - я не следил) - но "умельцы" делали варианты (по сути опросом через интервал). Правда сами-же "производители" (я про фирменные, а не про умельцев) не рекомендуют особо сильно загружать СУБД такими "событиями".

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Синхронизировать базу с подшивкой, а блоки с подшивкой АкАд сам синхронизирует!

Оффлайн ДианкаАвтор темы

  • ADN Club
  • Сообщений: 41
  • Карма: 0
Отслеживания где? В чертеже открытом в AutoCAD? Есть. В базе данных? Наверное есть, но тут я ничем не помогу. Более того я пока совсем не понимаю постановку задачи.

Я ведь вообще речи не вела о таблицах данных в автокаде %)..конечно же речь о строках таблиц БД(SQL)..

Оффлайн ДианкаАвтор темы

  • ADN Club
  • Сообщений: 41
  • Карма: 0
Правда сами-же "производители" (я про фирменные, а не про умельцев) не рекомендуют особо сильно загружать СУБД такими "событиями".
Спасибо.
А кого(что) в таком случае грузить?))..вот в чём вопрос,будем искать решение..

Оффлайн ДианкаАвтор темы

  • ADN Club
  • Сообщений: 41
  • Карма: 0
Синхронизировать базу с подшивкой, а блоки с подшивкой АкАд сам синхронизирует!
Спасибо.
не будет подшивок :) я что ж зря писала всё,чтоб к подшивкам уйти(опять же коллеги когда то рыли эту тему,сказали не подходит нам она,я и не стала изучать),да и опять же как происходит синхронизация?опять же коннект к бд....постоянный? по таймеру? кол-во коннектов=кол-во пользователей которые в данное время используют т.н. подшивки?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Я ведь вообще речи не вела о таблицах данных в автокаде %)..конечно же речь о строках таблиц БД(SQL)..
Тогда напрашивается следующий вопрос. Почему вопросы по работе с БД задаются на форуме по AutoCAD .NET API? Может их следует задавать на специализированном форуме? Где-нибудь на SQL.RU. Предлагаю отделить мух от котлет.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
теперь вопрос встал об обновлении,Как это осуществлять?
каждый раз при открытии файлов автокада сканировать на наличие этого блока?ок нашли,дальше что?
каждый раз коннектиться к базе читать и обновлять в фоне-мне кажется тоже не дело.
Подписаться на события сохранения чертежа, его печати, публикации и экспорта данных. Можешь всплывающим окошком спрашивать у юзера, а можешь автоматом обновлять атрибуты вхождения блока (или даже формулы в составе полей определения).

Если нужно оповещение сразу после обновления БД, то можешь написать WCF службу, которая будет это делать (как вариант).

Цитата: Дианка
Ну я путь к проекту сохраняю в Properties ->Summary->HyperlinkBase ->D:\Projects\2014\Zavod...
Почитай о системной переменной ProjectName.

Цитата: Дианка
я пока ничего не представляю,за неимением опыта работы с SQL )))
Почитай книгу, указанную здесь в п.7. Это своего рода "Библия" на тему того, как в .NET работать с СУБД.

Цитата: Дианка
правда тут вопрос количества коннектов для меня темный лес, одновременно могут человек 20 к БД лезть
Такое количество для серьёзных СУБД не существенно. Это если бы использовался MS Access, тогда да - там желательно не более 10-то одновременных подключений.

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

Цитата: Александр Ривилис
Почему вопросы по работе с БД задаются на форуме по AutoCAD .NET API? Может их следует задавать на специализированном форуме? Где-нибудь на SQL.RU. Предлагаю отделить мух от котлет.
Поддерживаю.

Оффлайн ДианкаАвтор темы

  • ADN Club
  • Сообщений: 41
  • Карма: 0
рос. Почему вопросы по работе с БД задаются на форуме по AutoCAD .NET API? Может их следует задавать на специализированном форуме? Где-нибудь на SQL.RU. Предлагаю отделить мух от котлет.
Вопрос же не совсем по БД...
а связь БД с Автокадом.
Может можно как то не шибко затратно(для ресурсов ПК) какие то обращения при загрузке чертежа осуществлять.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Может можно как то не шибко затратно(для ресурсов ПК) какие то обращения при загрузке чертежа осуществлять.
Можно. Можно подписаться на событие открытия документа (DocumentCollection.DocumentCreated). Но всё остальное (т.е. обращение к БД) к AutoCAD не имеет никакого отношения.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение