📄 untbundle.~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 + -