(FormTicket) (. 24). . . .
24
, .
(IBQuery) | (IBUpdateSQL) | DataSource | |
( , , , ) | IBQueryTarif | DataSourceTarif | IBUpdateSQLTarif |
IBQueryCntTick | DataSourceCntTick | DataSourceCntTick | |
( , ) | IBQueryPass | DataSourcePass | DataSourcePass |
IBQueryAsc |
( IBQueryTarif)
select TR_AL_NUM, TR_AP_FROM, TR_AP_TO, TR_CODE, TR_COST, TR_SL_TYPE from TARIFF
( IBQueryCntTick) , , .
SELECT count (TC.TC_NUM), f.fl_date FROM TARIFF TR
INNER JOIN flight f on f.fl_num = TR.tr_al_num
LEFT JOIN TICKET TC ON (TC.TC_TR_CODE = TR.tr_code AND TC.tc_fl_date = f.fl_date)
WHERE TR.TR_CODE =:tr
procedure TFormTicket.DataSourceTarifDataChange(Sender: TObject;
Field: TField);
Begin
IBQueryCntTick.Close;
IBQueryCntTick.ParamByName('tr').AsInteger:= IBQueryTarifTR_CODE.Value;
IBQueryCntTick.Open;
end;
:
select P.pr_name, P.pr_name2, P.pr_name3, T.tc_fl_num, Cast(T.tc_row as char(2))||tc_lit from person P
inner join ticket T on T.tc_pr_code = P.pr_code
where T.tc_tr_code =:TR and T.tc_fl_date =:dt
. onDataChange DataSourceCntTick
procedure TFormTicket.DataSourceCntTickDataChange(Sender: TObject;
Field: TField);
Begin
IBQueryPass.Close;
//
IBQueryPass.ParamByName('TR').AsInteger:= IBQueryTarifTR_CODE.Value;
IBQueryPass.ParamByName('DT').AsDate:= IBQueryCntTickFL_DATE.Value;
IBQueryPass.Open;
end;
, .
, (FormNewTicket), (. 25). TDBEdit , IBQueryTarif. : , , , . (DateTimePickerTicket) . (EditName, EditName2, EditName3) , , . .
|
|
(DBGridPRS) , .
, .
(IBQuery) | DataSource | |
( ) | IBQueryPRS | DataSourcePRS |
SQL | IBQueryAny | |
IBQueryNewNum |
(TBitBtn). Kind bkOK ( ModalResult mrOk) . ʻ. Kind bkCancel ( ModalResult mrCancel).
25
.
IBQueryPRS , . SQL :
SELECT PR_NAME, PR_NAME2, PR_NAME3, PR_CODE FROM PERSON
WHERE PR_NAME LIKE:NAME AND PR_NAME2 LIKE:NAME2 AND PR_NAME3 LIKE:NAME3
ORDER BY PR_NAME, PR_NAME2, PR_NAME3
, , .. EditName, EditName2 EditName3.
procedure TFormNewTicket.EditNameChange(Sender: TObject);
Begin
IBQueryPRS.Close;
IBQueryPRS.ParamByName('NAME').AsString:= EditName.Text + '%';
IBQueryPRS.ParamByName('NAME2').AsString:= EditName2.Text + '%';
IBQueryPRS.ParamByName('NAME3').AsString:= EditName3.Text + '%';
IBQueryPRS.Open;
end;
DBGridPRS , . , , , , EditName, EditName2, EditName3.
procedure TFormNewTicket.DBGridPRSDblClick(Sender: TObject);
Begin
EditName.Text:= IBQueryPRSPR_NAME.Value;
EditName2.Text:= IBQueryPRSPR_NAME2.Value;
EditName3.Text:= IBQueryPRSPR_NAME3.Value;
end;
IBQueryAny, IBQueryNewNum .
, . IBQueryNewNum SQL
|
|
select Max(TC_NUM) + 1 from TICKET
WHERE TC_FL_NUM =:fl
. , , ''. IBQueryAny . TFormNewTicket.
Public
sLit:String;
sNum:Integer;
FormNewTicket. OnShow
procedure TFormNewTicket.FormShow(Sender: TObject);
Var
inRow: Integer;
Begin
with FormTicket do begin // FormTicket
//
IBQueryNewNum.Close;
IBQueryNewNum.ParamByName('fl').AsInteger:=
IBQueryTarifTR_AL_NUM.AsInteger;
IBQueryNewNum.Open;
EditNum.Text:= IBQueryNewNum.Fields[0].AsString;
//
//
IBQueryAny.SQL.Text:= 'SELECT MAX(ticket.tc_row) FROM tariff '
+'INNER JOIN ticket ON (tariff.tr_code = ticket.tc_tr_code) '
+'WHERE tariff.tr_al_num = ' + IBQueryTarifTR_AL_NUM.AsString
+'AND tariff.tr_sl_type = ' + IBQueryTarifTR_SL_TYPE.AsString
+'AND ticket.tc_fl_date = ''' + DateToStr(DateTimePickerTicket.Date)
+'''';
IBQueryAny.Open;
sNum:= IBQueryAny.Fields[0].AsInteger;
//
IBQueryAny.SQL.Text:= 'SELECT MAX(ticket.tc_lit)FROM tariff '
+'INNER JOIN ticket ON (tariff.tr_code = ticket.tc_tr_code) '
+'WHERE tariff.tr_al_num = ' + IBQueryTarifTR_AL_NUM.AsString
+'AND tariff.tr_sl_type = ' + IBQueryTarifTR_SL_TYPE.AsString
+'AND ticket.tc_fl_date = ''' + DateToStr(DateTimePickerTicket.Date)
+ '''' + ' AND ticket.tc_row = ' + IntToStr(sNum);
IBQueryAny.Open;
sLit:= IBQueryAny.Fields[0].AsString;
//
IBQueryAny.SQL.Text:= 'SELECT SP.SP_INROW FROM SALON_IN_PLANE SP '
+'INNER JOIN TARIFF T '
+'ON T.TR_SL_TYPE = SP.SP_SL_TYPE INNER JOIN AIRLINE AL '
+'ON AL.AL_NUM = T.TR_AL_NUM AND SP.SP_PL_CODE = AL.AL_PL_CODE '
+'WHERE T.TR_CODE = ' + IBQueryTarifTR_CODE.AsString;
IBQueryAny.Open;
inRow:= IBQueryAny.Fields[0].AsInteger;
if sNum = 0 then begin
sNum:= 1; //
sLit:= '';