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

📄 untbundle.~pas

📁 二次开发模块 一、条形码的批量生成
💻 ~PAS
字号:
unit UntBundle;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls, dxExEdtr, dxCntner, dxTL,
  dxDBCtrl, dxDBGrid, dfsSplitter, DB, ADODB;

type
  TFrmBundle = class(TForm)
    Bevel1: TBevel;
    Panel1: TPanel;
    Panel2: TPanel;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Date1: TDateTimePicker;
    Date2: TDateTimePicker;
    GroupBox2: TGroupBox;
    EditBarCode: TEdit;
    GroupBox3: TGroupBox;
    EditMaker: TEdit;
    btnFind: TButton;
    Panel3: TPanel;
    dfsSplitter1: TdfsSplitter;
    Panel4: TPanel;
    Panel6: TPanel;
    dxDBGrid2: TdxDBGrid;
    btnStart: TButton;
    btnDeleteOne: TButton;
    btnOut2: TButton;
    QryList: TADOQuery;
    dsQryList: TDataSource;
    QryBundle: TADOQuery;
    dsQryBundle: TDataSource;
    dxDBGrid2cBarCode: TdxDBGridMaskColumn;
    btnClose: TButton;
    dxDBGrid1: TdxDBGrid;
    dxDBGrid1ID: TdxDBGridColumn;
    dxDBGrid1BDCode: TdxDBGridMaskColumn;
    dxDBGrid1dDate: TdxDBGridMaskColumn;
    dxDBGrid1cMaker: TdxDBGridMaskColumn;
    Panel5: TPanel;
    btnOut1: TButton;
    btnDelete: TButton;
    Panel7: TPanel;
    dxDBGrid4: TdxDBGrid;
    dxDBGrid4ID: TdxDBGridColumn;
    dxDBGrid4BDCode: TdxDBGridColumn;
    dxDBGrid4cBarCode: TdxDBGridMaskColumn;
    dxDBGrid4dDate: TdxDBGridColumn;
    dxDBGrid4cMaker: TdxDBGridColumn;
    Panel9: TPanel;
    Label5: TLabel;
    btnOut3: TButton;
    btnHide: TButton;
    btnShow: TButton;
    LsBundle: TADOQuery;
    dsLsBundle: TDataSource;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure dxDBGrid2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnStartClick(Sender: TObject);
    procedure btnFindClick(Sender: TObject);
    procedure QryBundleNewRecord(DataSet: TDataSet);
    procedure FormShow(Sender: TObject);
    procedure btnDeleteOneClick(Sender: TObject);
    procedure PostBundle;
    procedure QryBundleAfterPost(DataSet: TDataSet);
    procedure btnDeleteClick(Sender: TObject);
    procedure btnOut1Click(Sender: TObject);
    procedure btnOut2Click(Sender: TObject);
    procedure EditBarCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditMakerKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnCloseClick(Sender: TObject);
    procedure btnHideClick(Sender: TObject);
    procedure btnShowClick(Sender: TObject);
    procedure QryBundleBeforePost(DataSet: TDataSet);
    Function GetBarInBundle:Integer;

  private
    { Private declarations }
  public
    bModify:Boolean;
    { Public declarations }
  end;

var
  FrmBundle: TFrmBundle;

implementation

uses DataDmP, FrmMainP, SUFunctionP;

{$R *.dfm}

procedure TFrmBundle.FormCreate(Sender: TObject);
begin
  Date1.Date:=Date();
  Date2.Date:=Date();
  EditMaker.Text:=DataDm.Maker;
  SUFunction.SetSequenceCol(dxDBGrid1ID);
  SUFunction.SetSequenceCol(dxDBGrid4ID);  
end;

procedure TFrmBundle.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action:=caFree;
 FrmBundle:=nil;
end;

procedure TFrmBundle.dxDBGrid2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=vk_return  then
    begin
      if QryBundle.RecNo=-1 then
         begin
            QryBundle.Post;
            QryBundle.Append;
        end
      else
        QryBundle.Next;
    end;
end;

procedure TFrmBundle.btnStartClick(Sender: TObject);
begin
   Panel7.Visible:=False;
      QryBundle.Append;
      dxDBGrid2.SetFocus;
      dxDBGrid2.FocusedField:=QryBundle.FieldByName('cBarCode');
//      bModify:=False;
end;

procedure TFrmBundle.btnFindClick(Sender: TObject);
begin
  QryList.Close;
  QryList.SQL.Clear;
  QryList.SQL.Add('select DISTINCT BDCode,dDate,cMaker from Bundle');
  QryList.SQL.Add('Where (dDate >='''+DateToStr(Date1.Date)+''')');
  QryList.SQL.Add(' and  (dDate <='''+DateToStr(Date2.Date)+''')');
  if EditMaker.Text<>'' then
     QryList.SQL.Add('and (cMaker like ''%'+EditMaker.Text+'%'')');
  if EditBarCode.Text<>'' then
    begin
     QryList.SQL.Add('and ((BDCode   like ''%'+EditBarCode.Text+'%'')');
     QryList.SQL.Add(' Or  (cBarCode like ''%'+EditBarCode.Text+'%''))');
    end;
  QryList.Open;

  QryBundle.Close;
  QryBundle.SQL.Clear;
  QryBundle.SQL.Add('select * from LsBundleData');
  QryBundle.SQL.Add('where  (PCID ='''+FrmMain.PCID+''')');
  QryBundle.Open;
end;

procedure TFrmBundle.QryBundleNewRecord(DataSet: TDataSet);
begin
  QryBundle.FieldByName('PCID').AsString:=FrmMain.PCID;
  QryBundle.FieldByName('cMaker').AsString:=DataDm.Maker;  
end;

procedure TFrmBundle.FormShow(Sender: TObject);
begin
  btnFind.Click;
end;

procedure TFrmBundle.btnDeleteOneClick(Sender: TObject);
begin
  if QryBundle.RecordCount>0 then
    begin
      if Application.MessageBox('确定要删除此条码?','信息',MB_OKCANCEL+ MB_ICONINFORMATION)= IDOK  Then
           begin
              QryBundle.Edit;
              QryBundle.Delete;
           end;
    end;
end;

procedure TFrmBundle.PostBundle;
Var LsQry:TADOQuery;
    LsDate:TDate;
    cYearMonth,LsCode:String;
    ii:Integer;
begin
  if QryBundle.RecordCount=5 then
    begin
      ii:=GetBarInBundle;
      if ii>0 then
        begin
         Application.MessageBox(Pchar('共'+IntToStr(ii)+'条形码已在历史条形码清单中,请检查!'),'信息',MB_OK+ MB_ICONINFORMATION);
         Abort;
        end;
      LsCode:=FrmMain.GetPCID;
      LsDate:=DataDm.GetSysDateTime;
      cYearMonth:=DataDm.GetSysYearMonth;
      LsQry:=TADOQuery.Create(Self);
      LsQry.Connection:=DataDm.ConDataSys;
      LsQry.SQL.Add('insert into Bundle("BDCode","cYearMonth","dDate","cMaker","cBarCode")');
      LsQry.SQL.Add('select '''+LsCode+''' as BDCode,'''+cYearMonth+''' as cYearMonth,'''+DateToStr(LsDate)+''' as dDate,cMaker,cBarCode from LsBundleData');
      LsQry.SQL.Add('where  (PCID ='''+FrmMain.PCID+''')');
//      LsQry.SQL.SaveToFile('c:\1.txt');
      Try
        LsQry.ExecSQL;
      Except
         Application.MessageBox(Pchar('条形已经扫描过,请检查!'),'信息',MB_OK+ MB_ICONINFORMATION);
         Abort;      
      end;
      LsQry.Destroy;
      DataDm.DeletePCIDTabe(DataDm.ConDataSys,'LsBundleData');
      QryBundle.Close;
      QryBundle.Open;
      QryList.Close;
      QryList.Open;
    end
  else
    begin
       Application.MessageBox(Pchar('装包数量必须是5件!'),'信息',MB_OK+ MB_ICONINFORMATION);
    end;
end;

procedure TFrmBundle.QryBundleAfterPost(DataSet: TDataSet);
begin
    if QryBundle.RecordCount=5 then
      PostBundle;
end;

procedure TFrmBundle.btnDeleteClick(Sender: TObject);
Var LsQry:TADOQuery;
    ii:Integer;
begin
  if QryList.RecordCount=0 then Abort;
  if Application.MessageBox('确定要删除此包条码?','信息',MB_OKCANCEL+ MB_ICONINFORMATION)= IDOK  Then
       begin
          ii:=QryList.RecNo;
          LsQry:=TADOQuery.Create(Self);
          LsQry.Connection:=DataDm.ConDataSys;
          LsQry.SQL.Add('delete from bundle');
          LsQry.SQL.Add('where (BDCode='''+QryList.FieldByName('BDCode').AsString+''')');
          LsQry.ExecSQL;
          QryList.Close;
          QryList.Open;
          QryList.MoveBy(ii-1)
      end;
end;

procedure TFrmBundle.btnOut1Click(Sender: TObject);
begin
   SUFunction.DBGridSaveToFile(dxDBGrid1,'包条形码_'+DataDm.Maker+'.xls');
end;

procedure TFrmBundle.btnOut2Click(Sender: TObject);
begin
   SUFunction.DBGridSaveToFile(dxDBGrid2,'条形码_'+DataDm.Maker+'.xls');
end;

procedure TFrmBundle.EditBarCodeKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=vk_return then btnFind.Click;
end;

procedure TFrmBundle.EditMakerKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=vk_return then btnFind.Click;
end;

procedure TFrmBundle.btnCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TFrmBundle.btnHideClick(Sender: TObject);
begin
   Panel7.Visible:=False;
end;

procedure TFrmBundle.btnShowClick(Sender: TObject);
begin
   LsBundle.Close;
   if QryList.RecordCount=0 then Abort;
   LsBundle.Parameters.ParamByName('BdCode').Value:=QryList.FieldByName('BdCode').AsString;
   LsBundle.Open;
   Label5.Caption:='件:'+IntToStr(LsBundle.RecordCount);
   Panel7.Visible:=True;
end;

procedure TFrmBundle.QryBundleBeforePost(DataSet: TDataSet);
Var LsQry:TADOQuery;
    LsStr:String;
begin
   LsStr:=QryBundle.FieldByName('cBarCode').AsString;
   LsQry:=TADOQuery.Create(Self);
   LsQry.Connection:=DataDm.ConDataSys;
   LsQry.SQL.Add('select count(*) as iNum from dbo.LsBundleData');
   LsQry.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
   LsQry.SQL.Add(' AND  (cBarCode='''+LsStr+''')');
   LsQry.Open;
   if (LsQry.FieldByName('iNum').AsInteger>=1) then
     begin
      Application.MessageBox(Pchar('条形码<'+LsStr+'>重复,请检查!'),'信息',MB_OK+ MB_ICONINFORMATION);
      QryBundle.Cancel;
      Abort;
     end;
   LsQry.Destroy;
end;

function TFrmBundle.GetBarInBundle: Integer;
Var LsQry:TADOQuery;
begin
   LsQry:=TADOQuery.Create(Self);
   LsQry.Connection:=DataDm.ConDataSys;
   LsQry.SQL.Add('select count(*) as iNum from dbo.LsBundleData');
   LsQry.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
   LsQry.SQL.Add('And (cBarCode in (select cBarCode from Bundle))');
   LsQry.Open;
   Result:= LsQry.FieldByName('iNum').AsInteger;
   LsQry.Destroy;

end;

end.

⌨️ 快捷键说明

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