Перейти к публикации
Программа учета компьютеров и ИТ оборудования IT Invent
Сергей Ивачев

Вопрос по таблице БД "items"

Рекомендованные сообщения

Здравствуйте.

Таблица БД "items" является основным (значения и ссылки) источником данных для учетных единиц? К примеру, если в разделе "Выполнение" учетной единицы "Расходники" запустить стороннюю программу, которая удалит строку по этому расходнику из таблицы "items" БД это будет корректное удаление этого расходника из общего списка расходников (аналогично красному крестику в списке расходников)? Целостность БД не нарушится (соответственно и функционирование приложения)? И как передать в эту стороннюю программу ID учетной единицы по которой она вызывается?

Изменено пользователем Сергей Ивачев

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте.

Помимо таблицы items есть ещё таблицы с дополнительными свойствами объектов.

Лучше всего развернуть тестовую копию базы и на ней изучить запросы через SQL Server Profiler - система которая в реальном времени показывает все sql запросы которые вызываются на сервере во время работы программы.

How To Launch a SQL Server Profiler Session

 

How To Launch a SQL Server Profiler Session

 

можно и просто удалить запись из таблицы items - целостность БД не нарушится.

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Доброе утро.

1) "Помимо таблицы items есть ещё таблицы с дополнительными свойствами объектов... ",  "..можно и просто удалить запись из таблицы items целостность БД не нарушится..."- понятно. Поэтому и отсутствие документированной структуры БД приведёт к потере времени на её изучение сторонними средствами. Ну что ж, у нас почти везде так. Совет по созданию тестового клона рабочей БД для изучения хороший, спасибо.

2) Более менее нормальную возможность передать в стороннюю программу параметром ID текущего расходника вижу в создании свойства расходника значение которого формируемого SQL запросом получения ID и использовании этого свойства в части выполнения используя параметр @P. Есть конечно и другие, но они требуют доп действий от пользователя.

3) Вообще для технологии дублирования учетной единицы расходника при действии "Выдача расходника" не вижу веского обоснования кроме коммерческого для вендора (К примеру запись расходника - блок из 20 батареек как одной учетной единицы, при выдаче, приведёт к порождению 20 учетных единиц, что при активном использовании быстро приведет к исчерпанию лимита лицензии и побудит к её усилению). Гораздо логичнее (для пользователя) было бы использовать изменение значений свойств расходника. Исправление этого вижу в действии напрямую в БД либо средством выполнения сторннего скрипта (скажем на питоне) с передачей ему параметром ID расходника, либо посредством использования триггера INSTEAD OF над view с перехватом и подменой операций над таблицей. Второй способ более надёжный (Foreign keys же отсутствуют),  хотя немного сложнее. В любом случае пробовать надо на тестовой БД.

Изменено пользователем Сергей Ивачев

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати, пытаюсь сделать свойство Id_Copy, тип выставляю и Текст, и Число, но оно не появляется в списке Свойств на главной вкладке расходника. Скрин прилагаю.
image.png.d3dfe5f597a535d7b811012cbc04cf46.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А почему указывая в команде выполнить @P свойство у которого прописанSQL запрос, команда (ppp) не появляется в контекстном меню для выполнения?

image.thumb.png.d81c2bb03f174f2beacca81a6261f41b.png

image.thumb.png.5fc84b01760711b1f572204a7f69c21e.png

image.png.00f0fa3edb2d0991401eee4bd64aeab3.png

 

Изменено пользователем Сергей Ивачев

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это проблема именно раздела Расходники в комбинации со свойством с SQL запросом - у расходников есть особенности связанные с тем что они могут иметь множественное количество + программа не была рассчитана на запуск приложений с параметром в виде доп свойства на основе SQL.

В данном случае как временное решение должно помочь привязка этого доп свойства к типам - тогда будет отображаться

image.thumb.png.60311138dc29c7e64d0217638d81b65e.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Доброе утро.

Да действительно, выполнение появилось на свойстве определенным SQL запросом, спасибо. Но значение его в программу не передаётся. К примеру свойство "Цвет" выбирается из списка, его значение  в программу передаётся, а свойство "Копия IDtek" нет. Может ещё чего-то я не доделал?

 

image.thumb.png.619ae7df7bb69898f1dcd1a47d69cb73.png

image.png.564d17d5813a3d996800ad4094f59d4b.png

image.thumb.png.bfa8425fa882be6614db4509ae1188c7.png

image.png.bc160b711e62e9fce47a3e43c8dbd1de.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Удалось оперативно внести изменение и теперь в расходниках в разделе ВЫПОЛНЕНИЕ есть возможность выбрать базовое свойство ID для использования. 

Вы можете скачать архив с обновлением и заменить файлы в папке с программой на файлы из архива:

https://it-invent.ru/Download/ITInventUpdateSimple.zip

Версия программы будет 1.70.3

Создавать какое-либо собственное дополнительное свойство с SQL запросом не нужно.

image.thumb.png.5048fbc8b0560107f43339beb3427bf0.png

 

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×