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

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

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

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

27 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. Здравствуйте, Илья.
      Я не редактирую отчеты, болидовские костыли мне не интересны. Я работаю напрямую с БД. Вы можете использовать запрос в екселе и получать отчет в таблице. Если интересует – пишите.

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

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