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

📄 paicheon.pas

📁 信息管理系统
💻 PAS
字号:
unit paicheon;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, Grids, DBGrids, StdCtrls, DBCtrls, Mask, ExtCtrls,
  Buttons,paichein_unit,ADODB, DB, DBClient,driverdata_unit,vehicledata_unit;

type
  Tpaicheonfrm = class(TForm)
    Panel1: TPanel;
    Label18: TLabel;
    DBGrid1: TDBGrid;
    StatusBar1: TStatusBar;
    Label20: TLabel;
    Label21: TLabel;
    Label5: TLabel;
    Label9: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn3: TBitBtn;
    paiche_ds1: TDataSource;
    paiche_cds1: TClientDataSet;
    Memo1: TMemo;
    Label17: TLabel;
    Label13: TLabel;
    ComboBox2: TComboBox;
    Edit3: TEdit;
    Label6: TLabel;
    Label1: TLabel;
    DateTimePicker1: TDateTimePicker;
    Edit1: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Label12: TLabel;
    Label7: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label8: TLabel;
    Label11: TLabel;
    DateTimePicker2: TDateTimePicker;
    ComboBox3: TComboBox;
    ComboBox1: TComboBox;
    Edit2: TEdit;
    Label3: TLabel;
    DateTimePicker3: TDateTimePicker;
    DateTimePicker4: TDateTimePicker;
    Edit6: TEdit;
    Edit7: TEdit;
    procedure FormShow(Sender: TObject);
    procedure DBComboBox2DropDown(Sender: TObject);
    procedure DBComboBox3DropDown(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure DBEdit8Click(Sender: TObject);
    procedure DBComboBox2Click(Sender: TObject);
    procedure paiche_ds1DataChange(Sender: TObject; Field: TField);
    procedure Edit7Exit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit6KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1CellClick(Column: TColumn);
  private
  ID:string;
  ss:real;
  datestr:string;
  paiche:Tpaichein;
  driver:Tdriverdata;
  vehicle:Tvehicledata;
  sql:string;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  paicheonfrm: Tpaicheonfrm;
  
implementation

uses loginfrmUnit3;

{$R *.dfm}

procedure Tpaicheonfrm.FormShow(Sender: TObject);
var
  reccount:integer;
begin
  datestr:=datetostr(date);     //当前日期
  sql:='select * from WORK_INFO where (TIME_FROM is NULL) or ((TIME_TO is not NULL) AND (NUM_TO is NULL)) order by DATETIME';
  reccount:=paiche.Find(sql);     
  paiche_cds1.Data:=paiche.Sel(sql); //显示当前允许修改的派车记录情况
  if reccount<>0 then
     StatusBar1.Panels[0].Text := '当前可修改的派车记录有'+ inttostr(reccount) +'条。'
  else
     StatusBar1.Panels[0].Text :='尚无可修改的派车记录。';
  DBGrid1.SetFocus ;       //激活显示
end;

procedure Tpaicheonfrm.DBComboBox2DropDown(Sender: TObject);
begin
  //load 车辆编号
  ComboBox2.Items.clear;  //首先清空它的项目
  ComboBox2.Items:=driver.GetDriverIDList1() ;
end;

procedure Tpaicheonfrm.DBComboBox3DropDown(Sender: TObject);
begin
  //load 司机编号
  ComboBox3.Items.Clear ;    //首先清空它的项目
  ComboBox3.Items:=vehicle.GetVehicleNOList1() ;
end;

procedure Tpaicheonfrm.BitBtn1Click(Sender: TObject);
begin
  if (Edit1.Text='')or(Combobox1.Text='') then
     begin
     showmessage('用车单位、用车性质资料不全!');
     exit;
     end;
  if Application.MessageBox('您确定要保存这条派车记录吗?','确定吗?',
     MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then
  begin
     sql:='update WORK_INFO set '
     +'DATETIME='''+datetostr(datetimepicker1.DateTime)+''','
     +'USER_COMPANY='''+edit1.Text+''',USER1='''+edit2.Text+''','
     +'PURPOSE='''+combobox1.Text+''',PLACE_FROM='''+edit3.Text+''','
     +'PLACE_TO='''+edit4.Text+''','
     +'DAY_BOOKED='''+datetostr(datetimepicker2.DateTime)+''','
     +'VEHICLE_NO='''+combobox1.Text+''',VEHICLE_TYPE='''+edit5.Text+''','
     +'DRIVER_ID='''+combobox3.Text+''','
     +'TIME_FROM='''+datetostr(datetimepicker3.DateTime)+''','
     +'TIME_TO='''+datetostr(datetimepicker4.DateTime)+''','
     +'NUM_FROM='''+edit6.Text+''',NUM_TO='''+edit7.Text+''','
     +'NUM='''+floattostr(ss)+''',OPERTATOR='''+loginfrm.user+''','
     +'REMARK='''+memo1.Text+''' where paiche_id='''+ID+''' ';
     paiche.Execu(sql);
     paicheonfrm.DoShow;    //重新显示当前派车情况
  end;
end;

procedure Tpaicheonfrm.BitBtn3Click(Sender: TObject);
begin
 //不保存,不退出,重新修改派车单
  if Application.MessageBox('您确实要取消修改这条派车记录吗?','确认吗?',
      MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then
     begin
        paicheonfrm.DoShow;    //重新显示当前派车情况
     end;
end;

procedure Tpaicheonfrm.BitBtn2Click(Sender: TObject);
begin
  driver.Free;
  vehicle.Free;
  paiche.Free;
  close;;
end;

procedure Tpaicheonfrm.BitBtn4Click(Sender: TObject);
begin
  if Application.MessageBox('您确定要删除这条派车记录吗?','确定吗?',
     MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then
  begin
     sql:='delete from work_info where paiche_id='''+ID+'''';
     paiche.Execu(sql);
     paicheonfrm.DoShow;    //重新显示当前派车情况
  end;
end;

procedure Tpaicheonfrm.DBEdit8Click(Sender: TObject);
begin
 edit6.Text:=paiche.GetNumTo(combobox2.Text);
end;

procedure Tpaicheonfrm.DBComboBox2Click(Sender: TObject);
var i:integer;
begin
 if ComboBox2.Text <> '' then
     begin
       sql:='select VEHICLE_NO from WORK_INFO where (TIME_FROM is not NULL) AND (TIME_TO is NULL) AND (VEHICLE_NO='+''''+ComboBox2.Text+''')';
       i:=paiche.Find(sql);
       if i<>0 then    //提示该车不在位
          begin
             if Application.MessageBox('此车外出未归,仍派此车吗?','确认吗?',
                MB_OKCANCEL + MB_DEFBUTTON1) <> IDOK then
                begin
                  ComboBox2.Text:='';
                  edit5.Text:='';
                  exit;
                end;
          end;
       sql:='select  VEHICLE_NO from WORK_INFO where (DATETIME>='+''''+datetostr(date)+''') and (TIME_FROM is NULL) AND (VEHICLE_NO='+''''+ComboBox2.Text+''')';
       i:=paiche.Find(sql);
       if i<>0 then    //提示该车已有安排
          begin
             if Application.MessageBox('此车已有安排,仍派此车吗?','确认吗?',
                MB_OKCANCEL + MB_DEFBUTTON1) <> IDOK then
                begin
                  ComboBox2.Text:='';
                  edit5.Text:='';
                  exit;
                end;
          end;
       //  按车辆编号,自动填入车型
       edit5.Text:=vehicle.GetVehicleType(combobox2.Text);
     end;
end;

procedure Tpaicheonfrm.paiche_ds1DataChange(Sender: TObject;
  Field: TField);
begin               //根据鼠标所指,修改相应派车记录
  datestr:=datetostr(date);     //当前日期
  ID:=paiche_cds1.FieldByName('paiche_id').asstring  ;
  if (paiche_cds1.FieldByName('TIME_TO').asstring <> '') and (paiche_cds1.FieldByName('NUM_TO').asstring = '') then
     begin          //提示“出车已归,应及时填写里程尾数。”
       DBGrid1.ShowHint:=False;
       DBGrid1.Hint:='出车已归,应及时填写里程尾数。';
       DBGrid1.ShowHint:=True;
     end
  else
     begin
       if (paiche_cds1.FieldByName('DATETIME').asstring < datestr) and (paiche_cds1.FieldByName('DATETIME').asstring <>'') and (paiche_cds1.FieldByName('TIME_FROM').asstring = '') then
          begin     //提示“日期已过且未出车,是否修改或删除此派车单?”
            DBGrid1.ShowHint:=False;
            DBGrid1.Hint:='日期已过且未出车,是否修改或删除此派车单?';
            DBGrid1.ShowHint:=True;
          end
       else
          begin
            DBGrid1.ShowHint:=False;  //正常情况不提示
          end;
     end;
  if (paiche_cds1.FieldByName('TIME_FROM').asstring = '') then
     begin     //尚未出车,允许改、删派车记录
       BitBtn4.Enabled:=True;             //允许删除操作
       Edit6.Enabled:=False;           //不能填尾数
       Label20.Enabled:=False;
       Edit7.Enabled:=False;           //不能填尾数
       Label21.Enabled:=False;
       Edit1.Enabled:=True;             //用车单位
       ComboBox1.Enabled:=True;         //用车性质
       ComboBox2.Enabled:=True;         //车辆编号
       Edit2.Enabled:=True;             //带车人
       ComboBox3.Enabled:=True;         //司机编号
       datetimepicker2.Enabled:=True;             //用车日期
       Edit5.Enabled:=True;             //车型

       //load 车辆编号
       ComboBox2.Items.clear;  //首先清空它的项目
       ComboBox2.Items:=driver.GetDriverIDList1() ;
       //load 司机编号
       ComboBox3.Items.Clear ;    //首先清空它的项目
       ComboBox3.Items:=vehicle.GetVehicleNOList1() ;
     end
  else
     begin     //车已出过,只准补全派车记录
       BitBtn4.Enabled:=False;           //不允许删除操作
       Edit6.Enabled:=True;           //能填尾数
       Label20.Enabled:=True;
       Edit7.Enabled:=True;           //能填尾数
       Label21.Enabled:=True;
       ComboBox2.Enabled:=False;        //车辆编号
       ComboBox3.Enabled:=False;        //司机编号
       datetimepicker2.Enabled:=False;            //用车日期
       Edit5.Enabled:=False;            //车型
       //下列几项若原派车单已填,则不允许改;若未填,则允许补填
       if Edit1.Text='' then Edit1.Enabled:=True
       else Edit1.Enabled:=False;     //用车单位
       if Edit2.Text='' then edit2.Enabled:=True
       else Edit2.Enabled:=False;     //带车人
       if ComboBox1.Text='' then ComboBox1.Enabled:=True
       else ComboBox1.Enabled:=False;     //用车性质
     end;
end;



procedure Tpaicheonfrm.Edit7Exit(Sender: TObject);
var
  ccq,hch:real;   //用于存放出场前尾数和回场后尾数
begin
  if (paiche_cds1.FieldByName('TIME_FROM').asstring<>'')
  and (paiche_cds1.FieldByName('TIME_TO').asstring<>'') then
     begin
       ccq:=strtofloat(paiche_cds1.FieldByName('TIME_FROM').asstring);
       hch:=strtofloat(paiche_cds1.FieldByName('TIME_TO').asstring);
       if ccq > hch then     //出场前尾数不可能大于回场后尾数
          begin
            showmessage('尾数填写不正确!');
            exit;
          end;
       if hch-100 > ccq then  //提示本次出车超过100公里
          begin
            if Application.MessageBox('出车超过100公里,您确定吗?','确定吗?',
               MB_OKCANCEL + MB_DEFBUTTON1) <> IDOK then
               begin
                 exit;
               end;
          end;
       ss:=hch-ccq; //计算行驶里程
     end
  else            //出场前尾数或回场后尾数未填全
     begin
       showmessage('请填入尾数!');
       exit;
     end;
end;

procedure Tpaicheonfrm.FormCreate(Sender: TObject);
begin
  paiche:=Tpaichein.create;
  driver:=Tdriverdata.create;
  vehicle:=Tvehicledata.create;
  ShortdateFormat:='YYYY-MM-DD';    //确定日期格式
  LongDateFormat:='YYYY-MM-DD';
  DateSeparator:='-';
end;

procedure Tpaicheonfrm.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
   if not(Key in['0'..'9',#8])then
      begin
         Key :=#0; //清除Key中的字符
         Beep;
      end;
end;

procedure Tpaicheonfrm.DBGrid1CellClick(Column: TColumn);
begin
  ID:= DBGrid1.Fields[0].AsString ;
  datetimepicker1.DateTime:=DBGrid1.Fields[1].AsDateTime;
  datetimepicker2.DateTime:=DBGrid1.Fields[5].AsDateTime;
  datetimepicker3.DateTime:=DBGrid1.Fields[12].AsDateTime;
  datetimepicker1.DateTime:=DBGrid1.Fields[13].AsDateTime;
  combobox1.Text:=DBGrid1.Fields[4].AsString;
  combobox2.Text:=DBGrid1.Fields[9].AsString;
  combobox3.Text:=DBGrid1.Fields[11].AsString;
  edit2.Text :=DBGrid1.Fields[3].AsString ;
  edit3.Text :=DBGrid1.Fields[7].AsString ;
  edit4.Text :=DBGrid1.Fields[8].AsString ;
  edit5.Text :=DBGrid1.Fields[10].AsString ;
  edit6.Text :=DBGrid1.Fields[14].AsString ;
  edit7.Text :=DBGrid1.Fields[15].AsString ;
  edit1.Text :=DBGrid1.Fields[2].AsString ;
  memo1.Text :=DBGrid1.Fields[17].AsString ;
end;

end.

⌨️ 快捷键说明

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