Связи между таблицами в базе данных MS SQL Orion Pro Болид

Недавно пришлось столкнуться со следующей проблемой: заказчику нужно было сделать отчет по проходам сотрудников, который сильно отличался от шаблонного отчета в генераторе отчетов Орион Про Болида. Изучение конструктора отчетов и иных болидовских глупостей при знании языка SQL мне показалось не нужным… Покопавшись в базе, я установил связи между нужными мне таблицами, после чего написать отчет не составило труда. Есть один момент – коды ключей в таблице pMark в столбце CodeP закодированы. Однако закодированы они не очень сильно и их легко можно узнать. Об этом я напишу в следующий раз. Вот, собственно диаграмма связей между таблицами в базе данных MS SQL Orion Pro Болид:

диаграмма связей между таблицами в базе данных MS SQL Orion Pro Болид

Оцените пожалуйста статью:

ПечальноТак себеНе плохоХорошоОтличная статья! 6 оценок.
Загрузка...

33 Replies to “Связи между таблицами в базе данных MS SQL Orion Pro Болид

  1. Здравствуйте!
    Спасибо за информацию!
    Жду с нетерпением продолжение публикации по данной теме.
    С Уважением, Дмитрий.

    1. Дмитрий! Спасибо. Пишите в комментариях какого рода информация Вас интересует.

      1. Здравствуйте!
        Помогите пожалуйста написать запрос в MS SQL в результате которого по “номеру”(или другому идентификатору работника из таблицы pLogData) получить отчет за определенный временной интервал в котором будет время прохода и точка прохода.
        Заранее спасибо!!!
        С Уважением, Дмитрий.

        1. Дмитрий! Укажите какие столбцы в выходной таблице вы хотите видеть. Прямо так: Фамилия, Имя, Отчество, время прохода, точка прохода и т.д. Так же укажите какие исходные данные вы хотите использовать для получения отчета. Айди сотрудника, временной интервал, точки прохода, вход – выход? Не обещаю что напишу тут-же, пока мало свободного времени.

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

          1. SELECT 
          2. -- лишние столбцы закомментировать
          3. 		TimeVal
          4.       ,HozOrgan
          5.       ,DoorIndex
          6. 	  ,Remark
          7. 	  ,Name + ' ' + FirstName + ' ' + MidName AS Name
          8. FROM pLogData JOIN pList ON pLogData.HozOrgan = pList.ID
          9. WHERE  
          10. pLogData.TimeVal BETWEEN 
          11. CONVERT (datetime,
          12. '2016-07-12 09:57:39.000'	 -- начало интервала (изменить)
          13. , 21) 
          14. AND CONVERT (datetime, 
          15. '2016-07-12 11:57:39.000'	 -- окончание интервала (изменить)
          16. ,21)
          17. AND pLogData.HozOrgan = 11	 -- ID персоны из таблицы pList (изменить)
  2. Александр, спасибо за информацию. По какой причине часть устройств не фиксируется в pLogData и m_alarm?

    1. Здравствуйте! Возможно это связано с тем, что устройства не прописаны в базе Орион Про. Посмотрите их наличие в таблице DevItems

  3. Здравствуйте,
    организации требуется откорректировать отчет по персоналу для Орион Про:
    Задача: При выгрузке данных из системы СКУД при эвакуации с завода, в отчет попадает персонал, находящийся в момент выгрузки на другом (удаленном) объекте.

    Если Вы готовы выполнить данную задачу, прошу связаться со мной по почте для обсуждения деталей выполнения работы. Спасибо.
    Елена.

  4. Добрый день, Александр.
    Подскажите в какой таблице хранятся данные по пропуску у сотрудника. А именно код карты.
    В таблице [pList] нет кодов карты. Я правильно понимаю коды хранятся Шестнадцатеричной системе. например код 76000B0050C9FE01 мне хотелось получить часть кода C9FE в десятичном формате. т.е. 51710. А по данному коду строить отчеты. Либо как то увязать с таблицей [pLogData] данный код.

    1. Андрей! Коды карточек PROXIMITY в базе хранятся в базе в таблице pMark с столбце CodeP.На сайте есть пост, посвященный этому вопросу : Как расшифровать коды ключей Proximity в базе Орион Про Болид. К сожалению, представленный способ работает не во всех версиях Орион Про. В новых версиях болид стал использовать другой алгоритм шифрования. Пока не было времени подумать над этим. Посмотрите как расшифровываются ключики и в ms sql напишите функцию, которая будет делать это на лету, прямо во время выполнения запроса.

      1. Александр, добрый день )
        А можно ли имитировать вход работника запросом в SQL ? 🙂
        Спасибо!

      2. Добрый день!
        Подскажите пожалуйста, можно ли sql запросами сымытировать приход сотрудника на работу? Спасибо ! )

  5. Добрый день!
    Подскажите пожалуйста, можно ли sql запросом сымитировать приход сотрудника на работу?
    Спасибо 🙂

  6. Добрый день, подскажите пожалуйста, мне нужно создать отчет “Все работники предприятия” – “Оставшиеся на объекте”. В итоге мне нужно создать отчет “Отсутствующих на работе”

    1. Айал, как в генераторе отчетов это делать – не знаю. Могу помочь только с запросом к базе в MS SQL.

      1. я вот на основе отчета “оставшиеся на объекте”, незнаю как изменить запрос, буду рад помощи.
        var
        PDivisionID, PCompanyID, PListID: array of Integer;
        FirstShow: Boolean;
        ReportDate: TDateTime;
        StaffCount: Integer;

        procedure frReport1OnStartReport(Sender: TfrxComponent);
        var i: integer;
        begin
        with DialogPage, Engine do
        begin
        ReportDate := Now();
        end;
        end;

        procedure btOkOnClick(Sender: TfrxComponent);
        const
        sqlsrall = ‘(Exists(Select * from #tmpPListId)) ‘;
        sqlsr = ‘( pList.ID = @ID OR @ID IS NULL) ‘;
        NumStr = 28;
        var i: integer;
        begin
        with DialogPage, Engine do
        begin
        QueryMain.ParamByName(‘ID’).Clear;
        QueryMain.ParamByName(‘ReportDate’).value := ReportDate;
        QueryMain.SQL[NumStr] := sqlsr;
        end;

        StaffCount := 0;
        if QueryMain.Active then QueryMain.Close;
        QueryMain.Open;

        StaffCount := QueryMain.RecordCount;
        QueryMain.First;

        end;

        begin
        end.

        1. Айал, если честно, мне хочется изучать болидовские костыли. Могу вам написать запрос к базе на языке sql, если предоставите дамп базы и скажете что конкретно вы хотите.

          1. Мне нужен отчет для формирования отсутствующих на месте сотрудников, к сожалению СБ не позволит мне предоставить вам дамп базы, но я уверен что для моих целей информация по сотрудникам не так важна.

          2. Отчет нужен в тот момент, когда вы его запускаете? Какие столбцы нужны в отчете? Как определить место расположения сотрудников? Это точка доступа или нахождение сотрудника в определенной зоне в которую можно попасть через разные точки?

          3. Да, отчет нужен в момент запуска.
            ФИО, подразделение, должность, время последнего входа и выхода.
            Есть зона “объект” в которую ведут два турникета и одна дверь вход/выход.

  7. Здравствуйте.
    Необходимо отредактировать отчет УРВ “Список нарушителей” довавить значения Первый вход Последний выход. Если есть такая возможность свяжитесь со мной по электронной почте.

    1. Здравствуйте, Илья.
      Я не редактирую отчеты, болидовские костыли мне не интересны. Я работаю напрямую с БД. Вы можете использовать запрос в екселе и получать отчет в таблице. Если интересует – пишите.

  8. Здравствуйте, уважаемы Александр!
    Нужен запрос к базе данных, что бы показывал и если возможно выгружал допустим в текстовый файл (как пример) количество находящихся на объекте.
    Если есть такая возможность свяжитесь со мной по электронной почте.

    1. Возможность есть. Единственное, на счет выгрузки не уверен, но такой запрос можно выполнять прямо из файла excel и сохранять.

  9. И в схеме ошибка Таблицы Acesspoint и Plogdata соединяются по ключу

    Acesspoint ON (Plogdata.DoorIndex = AcessPoint.GIndex)

  10. Приветствую. Меня интересует написание вами различных запросов напрямую к БД ОрионПро. Об оплате договоримся. Работа не разовая. Возможно (и желательно) долгое сотрудничесво (из мафии не уходят 🙂

    Прошу связаться со мной.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *