📄 untbox.pas
字号:
unit UntBox;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, dxExEdtr, DB, ADODB, dxDBCtrl, dxDBGrid, dxTL, dxCntner,
StdCtrls, ComCtrls, ExtCtrls, dfsSplitter;
type
TFrmBox = class(TForm)
Bevel1: TBevel;
dfsSplitter1: TdfsSplitter;
Panel1: TPanel;
Panel2: TPanel;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Date1: TDateTimePicker;
Date2: TDateTimePicker;
GroupBox2: TGroupBox;
EditBarCode: TEdit;
GroupBox3: TGroupBox;
EditMaker: TEdit;
btnFind: TButton;
btnClose: TButton;
Panel3: TPanel;
Panel4: TPanel;
Panel6: TPanel;
btnStart: TButton;
btnDeleteOne: TButton;
btnOut2: TButton;
dxDBGrid2: TdxDBGrid;
dxDBGrid2BdCode: TdxDBGridMaskColumn;
QryBox: TADOQuery;
dsQryBox: TDataSource;
QryBundle: TADOQuery;
dsQryBundle: TDataSource;
dxDBGrid3: TdxDBGrid;
dxDBGrid3cBarCode: TdxDBGridMaskColumn;
btnSave: TButton;
dxDBGrid3ID: TdxDBGridColumn;
QryBarCode: TADOQuery;
dsQryBarCode: TDataSource;
btnDrop: TButton;
dxDBGrid3BDCode: TdxDBGridColumn;
Label3: TLabel;
Label4: TLabel;
Panel5: TPanel;
dxDBGrid1: TdxDBGrid;
dxDBGrid1ID: TdxDBGridColumn;
dxDBGrid1BoxCode: TdxDBGridMaskColumn;
dxDBGrid1dDate: TdxDBGridMaskColumn;
dxDBGrid1cMaker: TdxDBGridMaskColumn;
Panel7: TPanel;
btnOut1: TButton;
btnDelete: TButton;
Panel8: TPanel;
Panel9: TPanel;
btnOut3: TButton;
dxDBGrid4: TdxDBGrid;
dxDBGrid4ID: TdxDBGridColumn;
dxDBGrid4BDCode: TdxDBGridColumn;
dxDBGrid4cBarCode: TdxDBGridMaskColumn;
LsBarCode: TADOQuery;
dsLsBarCode: TDataSource;
dxDBGrid4BoxCode: TdxDBGridColumn;
dxDBGrid4dDate: TdxDBGridColumn;
dxDBGrid4cMaker: TdxDBGridColumn;
btnShow: TButton;
btnHide: TButton;
Label5: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnCloseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnFindClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnStartClick(Sender: TObject);
procedure QryBundleNewRecord(DataSet: TDataSet);
procedure dxDBGrid2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure QryBundleBeforePost(DataSet: TDataSet);
procedure QryBundleAfterPost(DataSet: TDataSet);
procedure btnDeleteOneClick(Sender: TObject);
procedure btnOut2Click(Sender: TObject);
procedure btnDropClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnOut1Click(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
procedure btnHideClick(Sender: TObject);
procedure btnShowClick(Sender: TObject);
procedure btnOut3Click(Sender: TObject);
function GetBundleInBox: Integer;
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmBox: TFrmBox;
implementation
uses DataDmP, SUFunctionP, FrmMainP;
{$R *.dfm}
procedure TFrmBox.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
FrmBox:=nil;
end;
procedure TFrmBox.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TFrmBox.FormCreate(Sender: TObject);
begin
Date1.Date:=Date();
Date2.Date:=Date();
EditMaker.Text:=DataDm.Maker;
SUFunction.SetSequenceCol(dxDBGrid1ID);
SUFunction.SetSequenceCol(dxDBGrid3ID);
SUFunction.SetSequenceCol(dxDBGrid4ID);
end;
procedure TFrmBox.btnFindClick(Sender: TObject);
begin
QryBox.Close;
QryBox.SQL.Clear;
QryBox.SQL.Add('select DISTINCT BoxCode,dDate,cMaker from Box');
QryBox.SQL.Add('Where (dDate >='''+DateToStr(Date1.Date)+''')');
QryBox.SQL.Add(' and (dDate <='''+DateToStr(Date2.Date)+''')');
if EditMaker.Text<>'' then
QryBox.SQL.Add('and (cMaker like ''%'+EditMaker.Text+'%'')');
if EditBarCode.Text<>'' then
begin
QryBox.SQL.Add('and (BoxCode like ''%'+EditBarCode.Text+'%'')');
QryBox.SQL.Add(' Or (BDCode like ''%'+EditBarCode.Text+'%'')');
QryBox.SQL.Add(' Or (cBarCode like ''%'+EditBarCode.Text+'%''))');
end;
QryBox.Open;
QryBundle.Close;
QryBundle.SQL.Clear;
QryBundle.SQL.Add('select * from LsBoxMain');
QryBundle.SQL.Add('where (PCID ='''+FrmMain.PCID+''')');
QryBundle.Open;
QryBarCode.Close;
QryBarCode.SQL.Clear;
QryBarCode.SQL.Add('select * from LsBoxList');
QryBarCode.SQL.Add('where (PCID ='''+FrmMain.PCID+''')');
QryBarCode.Open;
end;
procedure TFrmBox.FormShow(Sender: TObject);
begin
btnFind.Click;
end;
procedure TFrmBox.btnStartClick(Sender: TObject);
begin
btnHide.Click;
QryBundle.Append;
dxDBGrid2.SetFocus;
dxDBGrid2.FocusedField:=QryBundle.FieldByName('BdCode');
end;
procedure TFrmBox.QryBundleNewRecord(DataSet: TDataSet);
begin
QryBundle.FieldByName('PCID').AsString:=FrmMain.PCID;
end;
procedure TFrmBox.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 TFrmBox.QryBundleBeforePost(DataSet: TDataSet);
Var ii:Integer;
LsQry:TADOQuery;
LsStr:String;
begin
ii:=QryBarCode.RecordCount;
LsStr:=QryBundle.FieldByName('BDCode').AsString;
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.ConDataSys;
LsQry.SQL.Add('select count(*) as iNum from dbo.LsBoxMain');
LsQry.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
LsQry.SQL.Add(' AND (BDCODE='''+LsStr+''')');
LsQry.Open;
if (LsQry.FieldByName('iNum').AsInteger>=1) then
begin
Application.MessageBox(Pchar('包条形码<'+LsStr+'>重复,请检查!'),'信息',MB_OK+ MB_ICONINFORMATION);
QryBundle.Cancel;
Abort;
end;
LsQry.Close;
LsQry.SQL.Clear;
LsQry.SQL.Add('Insert into LsBoxList("BDCode","cBarCode","PCID")');
LsQry.SQL.Add('select BDCode,cBarCode,'''+FrmMain.PCID+''' as PCID from bundle');
LsQry.SQL.Add('where (bdcode='''+LsStr+''')');
LsQry.ExecSQL;
QryBarCode.Close;
QryBarCode.Open;
if ii=QryBarCode.RecordCount then
begin
Application.MessageBox(Pchar('包条形码<'+LsStr+'>无效,请检查!'),'信息',MB_OK+ MB_ICONINFORMATION);
QryBundle.Cancel;
Abort;
end;
LsQry.Destroy;
end;
procedure TFrmBox.QryBundleAfterPost(DataSet: TDataSet);
begin
Label3.Caption:='包:'+IntToStr(QryBundle.RecordCount);
Label4.Caption:='件:'+IntToStr(QryBarCode.RecordCount);
end;
procedure TFrmBox.btnDeleteOneClick(Sender: TObject);
Var LsQry:TADOQuery;
LsStr:String;
begin
if QryBundle.RecordCount>0 then
begin
if Application.MessageBox('确定要删除此包的条码?','信息',MB_OKCANCEL+ MB_ICONINFORMATION)= IDOK Then
begin
LsStr:=QryBundle.FieldByName('BDCode').AsString;
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.ConDataSys;
LsQry.SQL.Add('Delete from dbo.LsBoxList');
LsQry.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
LsQry.SQL.Add(' AND (BDCODE='''+LsStr+''')');
LsQry.ExecSQL;
LsQry.Destroy;
QryBarCode.Close;
QryBarCode.Open;
QryBundle.Edit;
QryBundle.Delete;
Label3.Caption:='包:'+IntToStr(QryBundle.RecordCount);
Label4.Caption:='件:'+IntToStr(QryBarCode.RecordCount);
end;
end;
end;
procedure TFrmBox.btnOut2Click(Sender: TObject);
begin
SUFunction.DBGridSaveToFile(dxDBGrid3,'包条形码.xls');
end;
procedure TFrmBox.btnDropClick(Sender: TObject);
Var LsQry:TADOQuery;
begin
if QryBundle.RecordCount>0 then
begin
if Application.MessageBox('确定要删除此包的条码?','信息',MB_OKCANCEL+ MB_ICONINFORMATION)= IDOK Then
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.ConDataSys;
LsQry.SQL.Add('Delete from dbo.LsBoxList');
LsQry.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
LsQry.ExecSQL;
LsQry.SQL.Clear;
LsQry.SQL.Add('Delete from dbo.LsBoxMain');
LsQry.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
LsQry.ExecSQL;
LsQry.Destroy;
QryBundle.Close;
QryBundle.Open;
QryBarCode.Close;
QryBarCode.Open;
Label3.Caption:='包:'+IntToStr(QryBundle.RecordCount);
Label4.Caption:='件:'+IntToStr(QryBarCode.RecordCount);
end;
end;
end;
procedure TFrmBox.btnSaveClick(Sender: TObject);
Var LsQry:TADOQuery;
LsDate:TDate;
cYearMonth,LsCode:String;
ii:Integer;
begin
if QryBarCode.RecordCount=0 then Abort;
ii:=GetBundleInBox;
if ii>0 then
begin
Application.MessageBox(Pchar('共'+IntToStr(ii)+'包条形码已在历史包清单中,请检查!'),'信息',MB_OK+ MB_ICONINFORMATION);
Abort;
end;
LsCode:='2'+FrmMain.GetPCID;
LsDate:=DataDm.GetSysDateTime;
cYearMonth:=DataDm.GetSysYearMonth;
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.ConDataSys;
LsQry.SQL.Add('insert into Box("BoxCode","BDCode","cYearMonth","dDate","cMaker","cBarCode")');
LsQry.SQL.Add('select '''+LsCode+''' as BoxCode,BDCode,'''+cYearMonth+''' as cYearMonth,'''+DateToStr(LsDate)+''' as dDate,'''+DataDm.Maker+''' as cMaker,cBarCode from LsBoxList');
LsQry.SQL.Add('where (PCID ='''+FrmMain.PCID+''')');
Try
LsQry.ExecSQL;
Except
Application.MessageBox(Pchar('条形已经扫描过,请检查!'),'信息',MB_OK+ MB_ICONINFORMATION);
Abort;
end;
LsQry.Destroy;
DataDm.DeletePCIDTabe(DataDm.ConDataSys,'LsBoxMain');
DataDm.DeletePCIDTabe(DataDm.ConDataSys,'LsBoxList');
QryBox.Close;
QryBox.Open;
QryBox.Last;
QryBundle.Close;
QryBundle.Open;
QryBarCode.Close;
QryBarCode.Open;
end;
procedure TFrmBox.btnOut1Click(Sender: TObject);
begin
SUFunction.DBGridSaveToFile(dxDBGrid1,'箱条形码列表_'+DataDm.Maker+'.xls');
end;
procedure TFrmBox.btnDeleteClick(Sender: TObject);
Var LsQry:TADOQuery;
ii:Integer;
begin
if QryBox.RecordCount=0 then Abort;
if Application.MessageBox('确定要删除此箱条码?','信息',MB_OKCANCEL+ MB_ICONINFORMATION)= IDOK Then
begin
ii:=QryBox.RecNo;
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.ConDataSys;
LsQry.SQL.Add('delete from Box');
LsQry.SQL.Add('where (BoxCode='''+QryBox.FieldByName('BoxCode').AsString+''')');
LsQry.ExecSQL;
LsQry.Destroy;
QryBox.Close;
QryBox.Open;
QryBox.MoveBy(ii-1)
end;
end;
procedure TFrmBox.btnHideClick(Sender: TObject);
begin
Panel8.Visible:=False;
end;
procedure TFrmBox.btnShowClick(Sender: TObject);
begin
LsBarCode.Close;
if QryBox.RecordCount=0 then Abort;
LsBarCode.Parameters.ParamByName('boxcode').Value:=QryBox.FieldByName('boxcode').AsString;
LsBarCode.Open;
Label5.Caption:='件:'+IntToStr(LsBarCode.RecordCount);
Panel8.Visible:=True;
end;
procedure TFrmBox.btnOut3Click(Sender: TObject);
begin
SUFunction.DBGridSaveToFile(dxDBGrid1,'箱条形码_'+DataDm.Maker+'.xls');
end;
function TFrmBox.GetBundleInBox: Integer;
Var LsQry:TADOQuery;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.ConDataSys;
LsQry.SQL.Add('select count(*) as iNum from dbo.LsBoxMain');
LsQry.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
LsQry.SQL.Add('And (BDCode in (select BDCode from Box))');
LsQry.Open;
Result:= LsQry.FieldByName('iNum').AsInteger;
LsQry.Destroy;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -