⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frm_planequoteinfo.pas

📁 这是一个基于delphi平台的物流空运管理系统!
💻 PAS
字号:
unit Frm_PlaneQuoteInfo;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Frm_Cargo, XPMenu, ComCtrls, StdCtrls, ImgList, Buttons,
  ExtCtrls, DB, ADODB, Grids, BaseGrid, AdvGrid,Math;

type
  TFrmPlaneQuoteInfo = class(TFrmCargo)
    Panel3: TPanel;
    Label2: TLabel;
    Panel4: TPanel;
    Label4: TLabel;
    Label7: TLabel;
    Label1: TLabel;
    Label3: TLabel;
    Label6: TLabel;
    CmbPlaneCompany: TComboBox;
    CmbCurrencyType: TComboBox;
    CmbUnLoad: TComboBox;
    BtnQuery: TBitBtn;
    CmbCountry: TComboBox;
    EdtCity: TEdit;
    ChkBL: TCheckBox;
    EdtBL: TEdit;
    ImageList1: TImageList;
    Panel1: TPanel;
    Panel2: TPanel;
    BtnCancel: TBitBtn;
    BtnNew: TBitBtn;
    BtnDelete: TBitBtn;
    BtnEdit: TBitBtn;
    LVH: TListView;
    GridAirBaseQuote: TAdvStringGrid;
    QryTemp: TADOQuery;
    QryTemp1: TADOQuery;
    procedure FormActivate(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BtnQueryClick(Sender: TObject);
    procedure BtnNewClick(Sender: TObject);
    procedure BtnEditClick(Sender: TObject);
    procedure BtnDeleteClick(Sender: TObject);
    procedure BtnCancelClick(Sender: TObject);
    procedure GridAirBaseQuoteDblClickCell(Sender: TObject; ARow,
      ACol: Integer);
  private
  IsFirstOpen:Boolean;
    { Private declarations }
  public
  AirBaseCurrentRow:Integer;
    { Public declarations }
  end;

var
  FrmPlaneQuoteInfo: TFrmPlaneQuoteInfo;

implementation

uses Frm_Main, Frm_PlaneQuoteEdit;

{$R *.dfm}

procedure TFrmPlaneQuoteInfo.FormActivate(Sender: TObject);
Var
  SqlStr:String;
begin
  inherited;
  if IsFirstOpen then
  else
    exit;
  SqlStr := 'select b.PlaneCompanyName,a.Area,a.LoadPort,a.UnLoadPort,a.quoteM,'
    + 'a.quoteN,a.quote45,a.quote100,a.quote300,a.quote500,' +
    'a.quote1000,a.quote1500,a.quote2000,a.quote2500,a.quote3000,a.quotes300,a.quotes500,' +
    'a.quotes1000,a.quotes1500,a.quoted500,a.quoted1000,a.quoteQt,a.Quotecode' +
    ' from AirBaseQuote a,PlaneCompanyInfo b' +
    ' where b.PlaneCompanyCode=*a.PlaneCompany';
  FrmMain.AddGridData(GridAirBaseQuote, SqlStr);
  IsFirstOpen := False;
end;

procedure TFrmPlaneQuoteInfo.FormCreate(Sender: TObject);
var
  querystr:string;
begin
 inherited;
  AirBaseCurrentRow := 1;
  IsFirstOpen := True;

   querystr:='Select PlaneCompanyCode,PlaneCompanyCName from PlaneCompanyInfo';
   FrmMain.Full_FilterCombobox(CmbPlaneCompany,querystr,'PlaneCompanyCode','PlaneCompanyCName');

   querystr:='Select Code,CName from CountryInfo';
   FrmMain.Full_FilterCombobox(CmbCountry,querystr,'code','cname');

   querystr:='select PortCode,PortName From PortInfo';
   FrmMain.Full_FilterCombobox(cmbunload,QueryStr,'portcode','portname');

   querystr:='Select Code,cName From Currency ';
   FrmMain.Full_FilterCombobox(CmbCurrencyType,QueryStr,'portcode','portname');

end;

procedure TFrmPlaneQuoteInfo.BtnQueryClick(Sender: TObject);
var
  sTmp: string;
  Flag: integer;
  i, j: integer;
  SqlStr: string;
  TempI: Integer;
  SearchCity: array[0..30] of string;
  SearchPort: array[0..30] of string;
  CountryCity, NameCity: string;
  OriCity: string;
begin
  inherited;
  try
    SqlStr := 'select b.PlaneCompanyName,a.Area,a.LoadPort,a.UnLoadPort,a.quoteM,'
      + 'a.quoteN,a.quote45,a.quote100,a.quote300,a.quote500,' +
      'a.quote1000,a.quote1500,a.quote2000,a.quote2500,a.quote3000,a.quotes300,a.quotes500,' +
      'a.quotes1000,a.quotes1500,a.quoted500,a.quoted1000,a.quoteQt,a.Quotecode' +
      ' from AirBaseQuote a,PlaneCompanyInfo b' +
      ' where b.PlaneCompanyCode=*a.PlaneCompany';
    stmp :=FrmMain.GetFieldText(CmbPlaneCompany.text);
    if sTmp <> '' then
      SqlStr := SqlStr + ' And a.PlaneCompany = ''' + sTmp + ''' ';

    stmp := trim(FrmMain.GetFieldText(CmbCountry.text));
    if sTmp <> '' then
    begin
      QryTemp.close;
      qrytemp.sql.text := 'select * from portinfo where countrycode=''' + stmp + '''';
      qrytemp.open;
      if qrytemp.RecordCount > 0 then
      begin
        SqlStr := SqlStr + ' And ( ';
        while not qrytemp.eof do
        begin
          CountryCity := CountryCity + ',' + qrytemp.fieldbyname('portcode').asstring;
          SqlStr := SqlStr + ' (a.unloadport like ''%' + qrytemp.fieldbyname('portcode').asstring + '%'') or ';
          qrytemp.Next;
        end;
        SqlStr := copy(SqlStr, 1, length(SqlStr) - 4) + ' )';
      end;
    end;

    stmp := EdtCity.text;
    if sTmp <> '' then
    begin
      FrmMain.GetSplitText(EdtCity.text, ',', SearchCity);
      SqlStr := SqlStr + ' And (';
      I := 0;
      for i := 0 to 30 do
      begin
        QryTemp.close;
        qrytemp.sql.text := 'select * from portinfo where portname=''' + searchcity[i] + '''';
        qrytemp.open;
        if qrytemp.RecordCount > 0 then
        begin
          while not qrytemp.eof do
          begin
            SqlStr := SqlStr + ' (a.unloadport like ''%' + qrytemp.fieldbyname('portcode').asstring + '%'') or ';
            qrytemp.Next;
          end;
        end;
      end;
      SqlStr := copy(SqlStr, 1, length(SqlStr) - 4) + ' )';
    end;

    stmp := FrmMain.GetFieldText(CmbUnLoad.text);
    SqlStr := SqlStr + ' (a.unloadport like ''%' + stmp + '%'') ';

    FrmMain.AddGridData(GridAirBaseQuote, SqlStr);
    if ChkBl.Checked then
    begin
      for j := 1 to GridAirBaseQuote.RowCount - 1 do
      begin
        for i := 4 to 21 do
        begin
          if GridAirBaseQuote.Cells[i, j] = '' then
            GridAirBaseQuote.Cells[i, j] := '0';
          GridAirBaseQuote.Cells[i, j] := FloattoStr(StrtoFloat(GridAirBaseQuote.Cells[i, j]) * StrtoFloat(EdtBl.Text));
        end;
      end;
    end;

    if CmbCurrencyType.Text <> '' then
    begin
      QryTemp1.Close;
      QryTemp1.SQL.Text := 'Select Rate From Currency where code=''' + 'USD' + '''';
      QryTemp1.Open;
      if FrmMain.GetFieldText(CmbCurrencyType.Text) = 'USD' then
      begin
        for j := 1 to GridAirBaseQuote.RowCount - 1 do
        begin
          QryTemp.Close;
          Qrytemp.SQL.Text := 'Select CurrencyType from AirBaseQuote where Quotecode=''' + GridAirBaseQuote.Cells[22,j] + '''';
          QryTemp.Open;
          for i := 4 to 21 do
          begin
            if GridAirBaseQuote.Cells[i, j] = '' then
              GridAirBaseQuote.Cells[i, j] := '0';
            if Qrytemp.FieldByName('CurrencyType').AsString = FrmMain.GetFieldText(CmbCurrencyType.Text) then
              GridAirBaseQuote.Cells[i, j] := FloattoStr(StrtoFloat(GridAirBaseQuote.Cells[i, j]) * 1)
            else
              GridAirBaseQuote.Cells[i, j] := FloattoStr(RoundTO((StrtoFloat(GridAirBaseQuote.Cells[i, j]) / QryTemp1.fieldByName('Rate').AsFloat),-2));

          end;
        end;
      end;
      if FrmMain.GetFieldText(CmbCurrencyType.Text) = 'RMB' then
      begin
        for j := 1 to GridAirBaseQuote.RowCount - 1 do
        begin
          QryTemp.Close;
          Qrytemp.SQL.Text := 'Select CurrencyType from AirBaseQuote where Quotecode=''' + GridAirBaseQuote.Cells[22,j] + '''';
          QryTemp.Open;
          for i := 4 to 21 do
          begin
            if GridAirBaseQuote.Cells[i, j] = '' then
              GridAirBaseQuote.Cells[i, j] := '0';
            if Qrytemp.FieldByName('CurrencyType').AsString = FrmMain.GetFieldText(CmbCurrencyType.Text) then
              GridAirBaseQuote.Cells[i, j] := FloattoStr(StrtoFloat(GridAirBaseQuote.Cells[i, j]) * 1)
            else
              GridAirBaseQuote.Cells[i, j] := FloattoStr(StrtoFloat(GridAirBaseQuote.Cells[i, j]) * QryTemp1.fieldByName('Rate').AsFloat);

          end;
        end;
      end;
    end;
  except
    ShowMessage('没有符合条件的记录,请重新查询!');
    Exit;
  end;
end;

procedure TFrmPlaneQuoteInfo.BtnNewClick(Sender: TObject);
begin
  inherited;
  if FrmMain.IncludeValue('底价维护') then
  else
  begin
    ShowMessage('对不起,你不具有该操作的权限!');
    exit;
  end;

  FrmPlaneQuoteEdit := TFrmPlaneQuoteEdit.create(Self);
  FrmPlaneQuoteEdit.IsEdit := False;
  FrmPlaneQuoteEdit.Showmodal;
end;

procedure TFrmPlaneQuoteInfo.BtnEditClick(Sender: TObject);
begin
  inherited;
   if (AirBaseCurrentRow = 1) and (GridAirBaseQuote.Cells[22, 1] = '') then
  begin
    ShowMessage('数据为空,不可修改,请点增加!');
    exit;
  end;
  FrmPlaneQuoteEdit := TFrmPlaneQuoteEdit.create(Self);
  FrmPlaneQuoteEdit.IsEdit := true;
  FrmPlaneQuoteEdit.BtnAdd.Enabled := True;
  FrmPlaneQuoteEdit.QuoteCode := GridAirBaseQuote.Cells[22, AirBaseCurrentRow];
  FrmPlaneQuoteEdit.Showmodal;
end;

procedure TFrmPlaneQuoteInfo.BtnDeleteClick(Sender: TObject);
var
  Sqlstr: string;
  PlaneCompany: string;
    //PlaneCompany:String;
begin
  inherited;
  if FrmMain.IncludeValue('底价维护') then
  else
  begin
    ShowMessage('对不起,你不具有该操作的权限!');
    exit;
  end;
  if (AirBaseCurrentRow = 1) and (GridAirBaseQuote.Cells[22, 1] = '') then
    Exit;

  if MessageDlg('是否删除所选中的记录,请确定', mtConfirmation,[mbYes,mbNO], 1) = mrNO then
    exit;

  try
    SqlStr := 'Delete From AirBaseQuote Where QuoteCode=''' + GridAirBaseQuote.Cells[22, AirBaseCurrentRow] + '''';
    if FrmMain.ExecSQL(SqlStr) then
    else
    begin
      ShowMessage('记录删除失败,请检查!');
      exit;
    end;

  except
    ShowMessage('删除操作进行失败,请检查!');
    Exit;
  end;
  FrmMain.DeleteGridRow(GridAirBaseQuote, 23, AirBaseCurrentRow);
end;

procedure TFrmPlaneQuoteInfo.BtnCancelClick(Sender: TObject);
begin
  inherited;
 Close;
end;

procedure TFrmPlaneQuoteInfo.GridAirBaseQuoteDblClickCell(Sender: TObject;
  ARow, ACol: Integer);
begin
  inherited;
  BtnEditClick(Self);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -