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

📄 shipment.pas

📁 Barcode And LabelPrint
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Shipment;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, NEOFORM, ExtCtrls, ToolWin, ComCtrls, StdCtrls, DBCtrls,
  Buttons, GridsEh, DBGridEh, Grids, DBGrids, RpCon, RpConDS, RpBase,
  RpSystem, RpDefine, RpRave, rvclass, rvcsstd, RvCsBars, Mask, RvCsRpt, RpMemo,
  DB, ADODB,MMSystem;

type
  TFrmShipment = class(TGBKPForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    DateTimePickerPostDateSart: TDateTimePicker;
    DateTimePickerPostDateEnd: TDateTimePicker;
    EdtOrderIDEnd: TEdit;
    BitBtn1: TBitBtn;
    CheckBoxOrderID: TCheckBox;
    CheckBoxPostDate: TCheckBox;
    CheckBoxCustomer: TCheckBox;
    CheckBoxDevtype: TCheckBox;
    EdtCustomer: TEdit;
    DBNavigator1: TDBNavigator;
    Panel1: TPanel;
    DBGridEh1: TDBGridEh;
    Panel2: TPanel;
    GroupBox2: TGroupBox;
    BtnPrint: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    EdtBarCodeEnter: TEdit;
    LabelMessage: TLabel;
    RvProjectShipLabel: TRvProject;
    RvSystemShipLabel: TRvSystem;
    RvDataSetConnectionShipLabel: TRvDataSetConnection;
    EdtOrderIDSart: TComboBox;
    EdtDevtype: TComboBox;
    CheckBoxIsOut: TCheckBox;
    Label3: TLabel;
    EdtAutoPrintNum: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    DBEditBarCode: TDBEdit;
    DBEditOrderID: TDBEdit;
    DBEditDevName: TDBEdit;
    DBEditCustomerName: TDBEdit;
    DBEditpostdate: TDBEdit;
    DBMemoMemo: TDBMemo;
    RadioGroupLAnguage: TRadioGroup;
    ImportToExcel: TBitBtn;
    Label12: TLabel;
    LabelThisOrderCount: TLabel;
    LabelThisOrder: TLabel;
    LabelTodayCount: TLabel;
    DBGridEh2: TDBGridEh;
    QToday: TADOQuery;
    LabelThisDeviceType: TLabel;
    LabelThisDeviceTypeCount: TLabel;
    ChkPreview: TCheckBox;
    CheckBoxSetPrint: TCheckBox;
    CheckBoxRePrint: TCheckBox;
    procedure CheckBoxOrderIDClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure EdtBarCodeEnterKeyPress(Sender: TObject; var Key: Char);
    procedure BtnPrintClick(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure EdtAutoPrintNumKeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure EdtAutoPrintNumChange(Sender: TObject);
    procedure EdtAutoPrintNumExit(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ImportToExcelClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    OrderIDstr: string;
    DevNamestr: string;
    CustomerNamestr: string;
    postdatestr: string;
    Memostr: string;
    ImportToExcelstr:string;
    procedure getStatInfo;
    { Private declarations }
  public

    function MessageAndSaveBarcodeInfo(infoType: string; OldInfo, newInfo: string): boolean;
    function ContrastBarcodeInfo: boolean;
    procedure SaveBarcodeInfo;

    { Public declarations }
  end;


var
  FrmShipment: TFrmShipment;

implementation

uses StockDataModel, PublicFunction, PublicParameter, RvProj;

{$R *.dfm}
//判断值是否改变

function TFrmShipment.ContrastBarcodeInfo: boolean;
begin
  Result := true; //都不变
  if OrderIDstr <> DBEditOrderID.Text then //订单号不同
  begin
    if MessageAndSaveBarcodeInfo('订单号', OrderIDstr, DBEditOrderID.Text) then
      Result := true else Result := false;
    exit;
  end
  else if CustomerNamestr <> DBEditCustomerName.Text then //客户名称
  begin
    if MessageAndSaveBarcodeInfo('客户名称', CustomerNamestr, DBEditCustomerName.Text) then
      Result := true else Result := false;
    exit;
  end
  else if DevNamestr <> DBEditDevName.Text then //机型
  begin
    if MessageAndSaveBarcodeInfo('机型', DevNamestr, DBEditDevName.Text) then

      Result := true else Result := false;
    exit;

  end else if postdatestr <> DBEditpostdate.Text then //生产日期
  begin
    if MessageAndSaveBarcodeInfo('生产日期', postdatestr, DBEditpostdate.Text) then

      Result := true else Result := false;
    exit;

  end
  else if Memostr <> DBMemoMemo.Text then //配置说明
  begin
    if MessageAndSaveBarcodeInfo('配置说明', Memostr, DBMemoMemo.Text) then

      Result := true else Result := false;
    exit;

  end
end;

function TFrmShipment.MessageAndSaveBarcodeInfo(infoType: string; OldInfo, newInfo: string): boolean;
begin
  Result := false;
  if Application.MessageBox(pchar(infoType + '将由' + #13 + OldInfo + #13 + '改变为' + #13 + newInfo + #13 + '请确定包装机器正确?'), pchar('提示'), MB_YESNO) = IDYES then
  begin
    Result := true;
//记下原来所有值
    SaveBarcodeInfo;
  end;
end;
//记下原来所有值

procedure TFrmShipment.SaveBarcodeInfo;
begin
  OrderIDstr := DBEditOrderID.Text;
  DevNamestr := DBEditDevName.Text;
  CustomerNamestr := DBEditCustomerName.Text;
  postdatestr := DBEditpostdate.Text;
  Memostr := DBMemoMemo.Text;
end;

procedure TFrmShipment.CheckBoxOrderIDClick(Sender: TObject);
begin
  inherited;
  EdtOrderIDSart.Enabled := CheckBoxOrderID.Checked;
  EdtOrderIDEnd.Enabled := CheckBoxOrderID.Checked;
  DateTimePickerPostDateSart.Enabled := CheckBoxPostDate.Checked;
  DateTimePickerPostDateEnd.Enabled := CheckBoxPostDate.Checked;
  EdtDevtype.Enabled := CheckBoxDevtype.Checked;
  EdtCustomer.Enabled := CheckBoxCustomer.Checked;

  if EdtOrderIDSart.Enabled = false then EdtOrderIDSart.Color := clSilver else EdtOrderIDSart.Color := clWindow;
  EdtOrderIDEnd.Color := EdtOrderIDSart.Color;
  if DateTimePickerPostDateSart.Enabled = false then DateTimePickerPostDateSart.Color := clSilver else DateTimePickerPostDateSart.Color := clWindow;
  DateTimePickerPostDateEnd.Color := DateTimePickerPostDateSart.Color;
  if EdtDevtype.Enabled = false then EdtDevtype.Color := clSilver else EdtDevtype.Color := clWindow;
  if EdtCustomer.Enabled = false then EdtCustomer.Color := clSilver else EdtCustomer.Color := clWindow;

end;

procedure TFrmShipment.BitBtn1Click(Sender: TObject);
var sqlstr: string;
iBegin: Cardinal;
begin
  inherited;
  iBegin := GetTickCount; // GetTickCount() 取得当前系统时间的毫秒值
  sqlstr := '';
  //sqlstr := 'select distinct a.barcode,a.*,b.*,c.DevName,d.CustomerName,d.OrderDetail,d.OrderMemo  from BarCode a,GBarCode b,DeviceType c,Orders d '
  //+' where a.GBarCodeID=b.GBarCodeID and a.Devnum=c.Devnum and a.OrderId=d.OrderID '; //
  //QBarCodefind.Locate('BarCode', BarCodeTemp, [])缺少更新或刷新的键列信息。
                    // distinct
  sqlstr :=QBarCodefindSQLStr;
  ImportToExcelstr:='select a.BarCode 条码,a.OrderID 订单号,a.CustomerName 客户,c.DevName 机型,a.PostDate 生产日期,a.PackDate 包装日期,a.InComeDate 入库日期 '
  +' from BarCode a,DeviceType c where  a.Devnum=c.Devnum ';

  //'select  a.barcode,a.GBarCodeID,a.OrderID,a.DevNum,a.PostDate,a.IsPack,a.IsInCome,a.IsOutCome,a.PackDate,a.PackTime,a.InComeDate,a.InComeTime,a.OutComeDate,a.OutComeTime,a.devHardOptions, c.DevName'+
  //' from BarCode a,DeviceType c  where a.Devnum=c.Devnum';
  if CheckBoxOrderID.Checked then
  begin
    sqlstr := sqlstr + format(' and a.OrderId=''%s''', [trim(EdtOrderIDSart.Text)]);
  end;
  if CheckBoxPostDate.Checked then
  begin
    sqlstr := sqlstr + format(' and a.PostDate >=''%s'' and a.PostDate <= ''%s''', [FormatDateTime('yyyy-mm-dd',DateTimePickerPostDateSart.Date), FormatDateTime('yyyy-mm-dd',DateTimePickerPostDateEnd.Date)]);
  end; //保证日期是datetime型
  if CheckBoxDevtype.Checked then
  begin //可模糊查询
    sqlstr := sqlstr + format(' and c.DevName like ''%%%s%%'' ', [EdtDevtype.Text]);
  end;

  if CheckBoxCustomer.Checked then
  begin //可模糊查询
    sqlstr := sqlstr + format(' and a.CustomerName like ''%%%s%%''', [EdtCustomer.Text]);
  end;

  if CheckBoxIsOut.State = cbChecked then
    sqlstr := sqlstr + format(' and a.IsInCome=%d', [1])
  else if CheckBoxIsOut.State = cbunchecked then sqlstr := sqlstr + format(' and a.IsInCome=%d', [0]);


  with StockDM.QBarCodefind do
  begin
    Close;
    SQL.Clear;
    SQL.Text := sqlstr + ' order by a.barcode';
    ImportToExcelstr:=ImportToExcelstr+ copy(sqlstr,length(QBarCodefindSQLStr)+1,MaxInt);
    Prepared := true;
    Open;
    //Parameters.Items[0].Value := FormatDateTime('yyyy-mm-dd',FormatDateTime('yyyy-mm-dd',DateTimePickerPostDateSart.Date)); //如果不转换oracle将提示数据类型不一致
    //Parameters.Items[1].Value := FormatDateTime('yyyy-mm-dd',FormatDateTime('yyyy-mm-dd',DateTimePickerPostDateEnd.Date));
    //sqlstr:=SQL.Text;
    //EdtSum.Text := inttostr(RecordCount);
    //EdtSum.Text :=sqlstr;
  end;
  if not StockDM.QOrders.Active then StockDM.QOrders.Active:=true;
 iBegin := GetTickCount - iBegin; //
  LabelMessage.Caption:='用时' + inttostr(iBegin) + '毫秒'
end;

procedure TFrmShipment.FormShow(Sender: TObject);
begin
  inherited;
  deleteRec(StockDM.ADOConnBarCodeTemp, 'BarCode', ''); //删除临时表
  StockDM.QBarCode.Active := false; StockDM.QBarCode.Active := true;
  DateTimePickerPostDateSart.Date := date;
  DateTimePickerPostDateEnd.Date := date;
  RvProjectShipLabel.ProjectFile := CurPath + '\条码\ShipLabec.rav';
  EdtOrderIDSart.Items.AddStrings(GetValueToCMBOrderId('Orders', 'OrderID', 'All'));
  EdtDevtype.Items.AddStrings(GetValueToCMB('DeviceType', 'DevName', 'All'));
  EdtAutoPrintNum.Text := ReadIniFile('SysConfig', 'AutoPrintNum');
  RadioGroupLAnguage.ItemIndex := strtoint(ReadIniFile('SysConfig', 'Language'));
  //BitBtn1Click(Sender);
  EdtBarCodeEnter.SetFocus;
  ActiveControl := EdtBarCodeEnter;
end;

procedure TFrmShipment.EdtBarCodeEnterKeyPress(Sender: TObject;
  var Key: Char);
var BarCodeTemp: string;
  AutoPrintNum: integer;
begin
  inherited;
  LabelMessage.Caption := '';
  LabelMessage.Refresh;
  AutoPrintNum := strtoint(EdtAutoPrintNum.Text);

  if key = #13 then //条码完毕
  begin
  if not StockDM.QBarCodefind.Active then StockDM.QBarCodefind.Active:=true;
    //BarCodeTemp := trim(EdtBarCodeEnter.Text);
    BarCodeTemp := copy(trim(EdtBarCodeEnter.Text), length(trim(EdtBarCodeEnter.Text)) - 13 + 1, 13); //扫描时前面多一个0
    if length(BarCodeTemp)<>13 then
    begin
       LabelMessage.Caption := BarCodeTemp + '条码扫描错误请重新扫描!';
       PlaySound(pchar(ExtractFilePath(Application.ExeName) + 'keyerror.wav'), 0, snd_Async);
       EdtBarCodeEnter.Text := '';
       exit;
    end;
    if BarCodeTemp = '' then
    begin
      LabelMessage.Caption := '扫描失败,请重新扫描!';
      PlaySound(pchar(ExtractFilePath(Application.ExeName) + 'keyerror.wav'), 0, snd_Async);
      EdtBarCodeEnter.Text := '';
      exit;
    end;

    if StockDM.QBarCode.Locate('BarCode', BarCodeTemp, []) then

⌨️ 快捷键说明

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