unit Air1;

interface

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, DB, StdCtrls, Grids, DBGrids, DBTables;

type
  TForm1 = class(TForm)
    Query1: TQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    QueryFlight: TButton;
    Flight: TEdit;
    Seat: TEdit;
    TicketNo: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Query2: TQuery;
    DataSource2: TDataSource;
    DBGrid2: TDBGrid;
    dbAirline: TDatabase;
    SetTicket: TQuery;
    AssignSeat: TButton;
    AssignSeatBySP: TButton;
    Status: TEdit;
    spAssignSeat: TStoredProc;
    procedure QueryFlightClick(Sender: TObject);
    procedure AssignSeatClick(Sender: TObject);
    procedure AssignSeatBySPClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.QueryFlightClick(Sender: TObject);
begin
 Query1.Close;
 Query1.Params[0].AsString := Flight.Text;
 Query1.Open;
 Query2.Close;
 Query2.Params[0].AsString := Flight.Text;
 Query2.Open;
end;

procedure TForm1.AssignSeatClick(Sender: TObject);
var
 CreditCardError: Boolean;
begin
 dbAirline.StartTransaction;
 SetTicket.ParamByName('FlightNo').AsString := Flight.Text;
 SetTicket.ParamByName('Seat').AsInteger := StrToInt(Seat.Text);
 SetTicket.ParamByName('TicketNo').AsString := TicketNo.Text;
 SetTicket.ExecSQL;
 CreditCardError := False;
 {****************************}
 {* PROCESS CREDIT CARD HERE *}
 {****************************}
 if CreditCardError then
  dbAirline.Rollback
 else
  dbAirline.Commit;
end;

procedure TForm1.AssignSeatBySPClick(Sender: TObject);
begin
 spAssignSeat.ParamByName('FlightNo').AsString := Flight.Text;
 spAssignSeat.ParamByName('Seat').AsInteger := StrToInt(Seat.Text);
 spAssignSeat.ParamByName('TicketNo').AsString := TicketNo.Text;
 spAssignSeat.ExecProc;
 Status.Text := spAssignSeat.Params[3].AsString;
end;

end.