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

Параметры каждого транспортного средства, проехавшего по весам (неважно в динамике или с остановкой), выгружаются в стандартную (ODBC совместимую) базу данных формата Firebird, где она становится доступной для внешних автоматизированных систем по сети или через интернет.

Выгрузка происходит в автоматическом режиме без участия оператора.

Передаются все известные на момент проезда данные, конкретно см. файл "Поля БД"

/******************************************************************************/
/***                     Generated by IBExpert 04.02.2015 20:15:51                                        ***/
/******************************************************************************/

/******************************************************************************/
/***                     Following SET SQL DIALECT is just for the Database Comparer   ***/
/******************************************************************************/

SET SQL DIALECT 3;

/******************************************************************************/
/***                                                           Tables                                                                      ***/
/******************************************************************************/

CREATE GENERATOR GEN_TB_EXP_ID;

 

CREATE TABLE TB_EXP (

    ID_TB_EXP BIGINT NOT NULL,

    ID_TB_CAR_NEOF BIGINT,

    DATE_TIME TIMESTAMP,

    KOL_OSEY INTEGER,

    NZ INTEGER,

    P_CAR DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P_CAR_PG DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    SPEED_CAR DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PIC1 BLOB SUB_TYPE 0 SEGMENT SIZE 5000,

    NPLATF INTEGER,

    GOSNOMER_A VARCHAR(12),

    P1 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P2 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P3 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P4 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P5 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P6 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P7 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P8 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P9 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    L1 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L2 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L3 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L4 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L5 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L6 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L7 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L8 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG1 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG2 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG3 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG4 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG5 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG6 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG7 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG8 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG9 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG10 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG11 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG12 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG13 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG14 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG15 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    PG16 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    P10 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P11 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P12 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P13 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P14 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P15 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    P16 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */,

    L9 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L10 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L11 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L12 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L13 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L14 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */,

    L15 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */ );

/******************************************************************************/
/***                                                                Primary Keys                                                   ***/
/******************************************************************************/

ALTER TABLE TB_EXP ADD CONSTRAINT PK_TB_EXP PRIMARY KEY (ID_TB_EXP);

/******************************************************************************/
/***                                                                  Indices                                                              ***/
/******************************************************************************/

CREATE INDEX TB_EXP_IDX1 ON TB_EXP (DATE_TIME);

CREATE DESCENDING INDEX TB_EXP_IDX2 ON TB_EXP (DATE_TIME);

/******************************************************************************/
/***                                                                 Triggers                                                             ***/
/******************************************************************************/

SET TERM ^ ;

/******************************************************************************/
/***                                                         Triggers for tables                                                  ***/
/******************************************************************************/

/* Trigger: TB_EXP_AIU0 */

CREATE OR ALTER TRIGGER TB_EXP_AIU0 FOR TB_EXP

ACTIVE AFTER INSERT OR UPDATE POSITION 0

AS

 begin

--if (new.p_car>3.5) then

  post_event 'NEW_EXP';

end

^

/* Trigger: TB_EXP_BI */

CREATE OR ALTER TRIGGER TB_EXP_BI FOR TB_EXP

ACTIVE BEFORE INSERT POSITION 0

as

declare variable LOCAL_ID integer;

declare variable K integer;

begin

  if (new.id_tb_exp is null) then --если не назначили сами из программы (а такое частенько бывает)

    begin --111

     LOCAL_ID = gen_id(gen_tb_exp_id, 1);

    select TB_NOM_KEY.NOM_KEY from TB_NOM_KEY into K;--получили тек множитель из ключа, а он уже сидит в спец таблице TB_NOM_KEY

   --if (LOCAL_ID < 0 or LOCAL_ID > 4294967295) then

   --exception E_GENERATOR_RANGE_ERROR; --есть предел 2 в 32 степени

   new.id_tb_exp = K * 4294967296 + LOCAL_ID;/*4 старших байта - пор ном ключа*диапазон, 4 младших - локальный ID записи*/

   end --111

end

^

SET TERM ; ^

/******************************************************************************/
/***                                                         Fields descriptions                                                ***/
/******************************************************************************/

COMMENT ON COLUMN TB_EXP.ID_TB_CAR_NEOF IS 'ID в основной БД (не пока не используется)';

/******************************************************************************/
/***                                                                Privileges                                                          ***/
/******************************************************************************/

/* Privileges of users*/

GRANT SELECT ON TB_EXP TO OPERATOR;

/* Privileges of triggers */

GRANT UPDATE, REFERENCES ON TB_EXP TO TRIGGER TB_EXP_AIU0;

GRANT UPDATE, REFERENCES ON TB_EXP TO TRIGGER TB_EXP_BI;

GRANT SELECT ON TB_NOM_KEY TO TRIGGER TB_EXP_BI;

Порядок передачи информации во внешнюю автоматизированную систему о проехавшем ТС следующий:

  1. проезд автомобиля по весам
  2. определение его госномера и весогабаритных параметров
  3. запись всех доступных на данный момент фотографий и параметров в базу данных Весовой программы
  4. апись всех доступных на данный момент фотографий и параметров в экспортную базу данных "EXP.FDB"
  5. из этой базы данные забираются внешней автоматизированной системой (по сигналу или по таймеру)

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