📄 frmbarautop.~pas
字号:
unit FrmBarAutoP;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FrmRootAddP, StdCtrls, Buttons, ExtCtrls, ComCtrls, dxCntner,
dxEditor, dxExEdtr, dxEdLib, Spin, DB, ADODB, Gauges, Mask, ToolEdit;
type
TFrmBarAuto = class(TFrmRootAdd)
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
GroupBox2: TGroupBox;
dxButtonEdit1: TdxButtonEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
dxButtonEdit2: TdxButtonEdit;
dxButtonEdit3: TdxButtonEdit;
dxButtonEdit4: TdxButtonEdit;
Edit1: TEdit;
Edit2: TEdit;
Label7: TLabel;
Edit3: TEdit;
GroupBox3: TGroupBox;
Label8: TLabel;
EditStart: TdxButtonEdit;
Label9: TLabel;
SpinEdit1: TSpinEdit;
Label10: TLabel;
EditBarCode: TEdit;
Gauge1: TGauge;
btnHistory: TButton;
procedure BtnCancelClick(Sender: TObject);
procedure dxButtonEdit1ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
procedure ShowForm(ctype:String);
procedure dxButtonEdit2ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
procedure dxButtonEdit3ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
procedure BtnSaveClick(Sender: TObject);
procedure dxButtonEdit4ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
Function GetMax(ctype:String):String;
procedure FormShow(Sender: TObject);
procedure EditStartButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
Function CheckInv:Boolean;
procedure SaveBarcode;
procedure SetBar;
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
Function ExistSBarCode:Integer;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnHistoryClick(Sender: TObject);
private
{ Private declarations }
public
cVen,cInv,cColor,cSize:String;
iInv:Integer;
{ Public declarations }
end;
var
FrmBarAuto: TFrmBarAuto;
implementation
uses FrmPoPInventoryP, FrmPoPInvDefineP, FrmPoPVenP, DataDmP, FrmMainP,
UntPoPHisBarCode;
{$R *.dfm}
procedure TFrmBarAuto.BtnCancelClick(Sender: TObject);
begin
inherited;
Close;
end;
procedure TFrmBarAuto.dxButtonEdit1ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
begin
inherited;
if RadioButton1.Checked then
ShowForm('01');
if RadioButton2.Checked then
ShowForm('02');
SetBar;
end;
procedure TFrmBarAuto.ShowForm(ctype: String);
begin
Application.CreateForm(tFrmPoPInventory,FrmPoPInventory);
FrmPoPInventory.Label2.Caption:=ctype;
if FrmPoPInventory.ShowModal =mrok then
begin
cInv :=FrmPoPInventory.QryInv.FieldByName('cInvCode').AsString;
dxButtonEdit1.Text:=FrmPoPInventory.QryInv.FieldByName('cInvCode').AsString;
Edit1.Text :=FrmPoPInventory.QryInv.FieldByName('cInvName').AsString;
Edit2.Text :=FrmPoPInventory.QryInv.FieldByName('cInvStd').AsString;
end;
FrmPoPInventory.Free;
FrmPoPInventory:=nil;
end;
procedure TFrmBarAuto.dxButtonEdit2ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
begin
inherited;
Application.CreateForm(tFrmPoPInvDefine,FrmPoPInvDefine);
FrmPoPInvDefine.QryDefine.Close;
FrmPoPInvDefine.QryDefine.Parameters.ParamByName('id').Value:=20;
FrmPoPInvDefine.QryDefine.Open;
if FrmPoPInvDefine.ShowModal =mrok then
begin
cColor := FrmPoPInvDefine.QryDefine.FieldByName('cAlias').AsString;
dxButtonEdit2.Text := FrmPoPInvDefine.QryDefine.FieldByName('cValue').AsString;
end;
FrmPoPInvDefine.Free;
FrmPoPInvDefine:=nil;
SetBar;
end;
procedure TFrmBarAuto.dxButtonEdit3ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
begin
inherited;
Application.CreateForm(tFrmPoPInvDefine,FrmPoPInvDefine);
FrmPoPInvDefine.QryDefine.Close;
FrmPoPInvDefine.QryDefine.Parameters.ParamByName('id').Value:=21;
FrmPoPInvDefine.QryDefine.Open;
if FrmPoPInvDefine.ShowModal =mrok then
begin
cSize := FrmPoPInvDefine.QryDefine.FieldByName('cAlias').AsString;
dxButtonEdit3.Text := FrmPoPInvDefine.QryDefine.FieldByName('cValue').AsString;
end;
FrmPoPInvDefine.Free;
FrmPoPInvDefine:=nil;
SetBar;
end;
procedure TFrmBarAuto.BtnSaveClick(Sender: TObject);
var cType:String;
begin
inherited;
if not CheckInv then Abort;
DataDm.DeletePCIDTabe(DataDm.ConDataSys,'LsBarData');
if Length(EditStart.Text)<>6 then
begin
Application.MessageBox(Pchar('条码起始长度必须为6!'),'信息',MB_OK+ MB_ICONINFORMATION);
Abort;
end;
if RadioButton1.Checked then cType:='01';
if RadioButton2.Checked then cType:='02';
if StrToIntDef(EditStart.Text,1)<StrToInt(GetMax(cType)) then
begin
Application.MessageBox(Pchar('条码起始小于系统计数('+GetMax(cType)+')!'),'信息',MB_OK+ MB_ICONINFORMATION);
Abort;
end;
if Application.MessageBox('确定要生成条形码?','信息',MB_OKCANCEL+ MB_ICONINFORMATION)= IDOK Then
begin
SaveBarcode;
end;
end;
procedure TFrmBarAuto.dxButtonEdit4ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
begin
inherited;
Application.CreateForm(tFrmPoPVen,FrmPoPVen);
FrmPoPVen.Edit1.Text:=dxButtonEdit4.Text;
if FrmPoPVen.ShowModal =mrok then
begin
cVen := FrmPoPVen.QryVen.FieldByName('cVencode').AsString;
dxButtonEdit4.Text := FrmPoPVen.QryVen.FieldByName('cVencode').AsString;
Edit3.Text := FrmPoPVen.QryVen.FieldByName('cVenName').AsString;
end;
FrmPoPVen.Free;
FrmPoPVen:=nil;
SetBar;
end;
function TFrmBarAuto.GetMax(ctype:String): String;
Function TranNumber(iNum:Integer):String;
begin
Result:=IntToStr(iNum);
while length(Result)<6 do
Result:='0'+Result;
end;
Var LsQry:TADOQuery;
ii:Integer;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.ConDataSys;
LsQry.SQL.Add('select max(right(cbarcode,6)) as cNum from barcode');
LsQry.SQL.Add('where cbarcode like '''+EditBarCode.Text+'%''');
LsQry.SQL.Add(' And (cType='''+ctype+''')');
LsQry.Open;
ii:=StrToIntDef(LsQry.FieldByName('cNum').AsString,0)+1;
LsQry.Destroy;
Result:=TranNumber(ii);
end;
procedure TFrmBarAuto.FormShow(Sender: TObject);
begin
inherited;
iInv:=7;
end;
procedure TFrmBarAuto.EditStartButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
begin
inherited;
if not CheckInv then Abort;
if RadioButton1.Checked and (length(EditBarCode.Text)=13) then
EditStart.Text:=GetMax('01');
if RadioButton2.Checked and (length(EditBarCode.Text)=11) then
EditStart.Text:=GetMax('02');
end;
function TFrmBarAuto.CheckInv: Boolean;
begin
Result:=True;
if Length(cInv)<>iInv then
begin
Application.MessageBox(Pchar('存货代码长度必须为'+IntToStr(iInv)+'!'),'信息',MB_OK+ MB_ICONINFORMATION);
Result:=False;
Exit;
end;
if (COPY(cInv,3,1)<'1') OR (COPY(cInv,3,1)>'9') then
begin
Application.MessageBox(Pchar('存货代码第3位必须为数字(4-9)!'),'信息',MB_OK+ MB_ICONINFORMATION);
Result:=False;
Exit;
end;
if (COPY(cInv,4,1)<'1') OR (COPY(cInv,4,1)>'4') then
begin
Application.MessageBox(Pchar('存货代码第4位必须为(1-4)数字!'),'信息',MB_OK+ MB_ICONINFORMATION);
Result:=False;
Exit;
end;
if Length(cColor)<>2 then
begin
Application.MessageBox(Pchar('颜色代码长度必须为2!'),'信息',MB_OK+ MB_ICONINFORMATION);
Result:=False;
Exit;
end;
if (Length(cSize)<>2) and (RadioButton1.Checked) then
begin
Application.MessageBox(Pchar('尺码代码长度必须为2!'),'信息',MB_OK+ MB_ICONINFORMATION);
Result:=False;
Exit;
end;
if Length(cVen)<>2 then
begin
Application.MessageBox(Pchar('供应商代码长度必须为2!'),'信息',MB_OK+ MB_ICONINFORMATION);
Result:=False;
Exit;
end;
end;
procedure TFrmBarAuto.SaveBarcode;
Function TranNumber(iNum:Integer):String;
begin
Result:=IntToStr(iNum);
while length(Result)<6 do
Result:='0'+Result;
end;
var LsQry:TADOQuery;
ii,iNumber:Integer;
cType,LsYear:String;
LsDate:TDate;
begin
if RadioButton1.Checked then
cType:='01';
if RadioButton2.Checked then
cType:='02';
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.ConDataSys;
LsQry.SQL.Add('Select * from LsbarData');
LsQry.SQL.Add('where (cbarcode=''1'')');
LsQry.Open;
iNumber:=StrToInt(EditStart.Text);
LsYear :=copy(cInv,3,2);
LsDate :=DataDm.GetSysDateTime;
Gauge1.Visible:=True;
for ii:=1 to SpinEdit1.Value do
begin
LsQry.Append;
LsQry.FieldByName('cType').AsString :=cType;
LsQry.FieldByName('dDate').AsDateTime :=LsDate;
LsQry.FieldByName('cBarCode').AsString :=EditBarCode.Text+TranNumber(iNumber);
LsQry.FieldByName('cYearSeason').AsString :=LsYear;
LsQry.FieldByName('cMarker').AsString :=DataDm.Maker;
LsQry.FieldByName('PCID').AsString :=FrmMain.PCID;
LsQry.FieldByName('cInvCode').AsString :=cInv;
LsQry.FieldByName('cInvName').AsString :=Edit1.Text;
LsQry.FieldByName('cInvBarCode').AsString :=EditBarCode.Text;
LsQry.FieldByName('cFree1').AsString :=dxButtonEdit2.Text;
LsQry.FieldByName('cFree2').AsString :=dxButtonEdit3.Text;
LsQry.Post;
Gauge1.Progress:=ii *100 div SpinEdit1.Value;
iNumber:=iNumber+1;
end;
Gauge1.Visible:=False;
if ExistSBarCode>0 then
begin
Application.MessageBox(Pchar('条码已存在,请重新生成!'),'信息',MB_OK+ MB_ICONINFORMATION);
Abort;
end;
LsQry.Close;
LsQry.SQL.Clear;
LsQry.SQL.Add('insert into BarCode("cType","cBarCode","cYearSeason","dDate","cMarker")');
LsQry.SQL.Add('select cType,cBarCode,cYearSeason,dDate,cMarker');
LsQry.SQL.Add('From LsBarData');
LsQry.SQL.Add('Where (PCID ='''+FrmMain.PCID+''')');
Try
LsQry.ExecSQL;
btnHistory.Visible:=True;
Application.MessageBox(Pchar('自动生成条码清单成功!'),'信息',MB_OK+ MB_ICONINFORMATION);
Except
Application.MessageBox(Pchar('自动生成条码清单失败!'),'信息',MB_OK+ MB_ICONINFORMATION);
Abort;
end;
LsQry.Close;
LsQry.Connection:=DataDm.AdoConUfsoft;
LsQry.SQL.Clear;
LsQry.SQL.Add('insert into InventoryBarCodeSet("cInvCode","cInvName","cBarCode","cRuleId","cAssignId","cFree1","cFree2","bAbandon")');
LsQry.SQL.Add('select DISTINCT cInvCode,cInvName,cInvBarCode,1,1,cFree1,cFree2,0');
LsQry.SQL.Add('From LsBarData');
LsQry.SQL.Add('Where (PCID ='''+FrmMain.PCID+''')');
// LsQry.SQL.SaveToFile('c:\1.txt');
Try
LsQry.ExecSQL;
btnHistory.Visible:=True;
Application.MessageBox(Pchar('自动生成用友条码参照清单成功!'),'信息',MB_OK+ MB_ICONINFORMATION);
Except
end;
LsQry.Destroy;
end;
procedure TFrmBarAuto.SetBar;
begin
if RadioButton1.Checked then
EditBarCode.Text:=cInv+cColor+cSize+cVen;
if RadioButton2.Checked then
EditBarCode.Text:=cInv+cColor+cVen;
end;
procedure TFrmBarAuto.RadioButton1Click(Sender: TObject);
begin
inherited;
SetBar;
end;
procedure TFrmBarAuto.RadioButton2Click(Sender: TObject);
begin
inherited;
SetBar;
end;
function TFrmBarAuto.ExistSBarCode: Integer;
Var LsQry:TADOQuery;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.ConDataSys;
LsQry.SQL.Add('select count(*) as iNum from LsBarData');
LsQry.SQL.Add('where cBarCode in (select cBarCode from barcode)');
LsQry.SQL.Add('and (PCID ='''+FrmMain.PCID+''')');
LsQry.Open;
Result:=LsQry.FieldByName('iNum').AsInteger;
LsQry.Destroy;
end;
procedure TFrmBarAuto.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
DataDm.DeletePCIDTabe(DataDm.ConDataSys,'LsBarData');
end;
procedure TFrmBarAuto.btnHistoryClick(Sender: TObject);
begin
inherited;
Application.CreateForm(TFrmPoPHisBarCode,FrmPoPHisBarCode);
FrmPoPHisBarCode.RadioButton1.Checked:=True;
FrmPoPHisBarCode.ShowModal;
FrmPoPHisBarCode.Free;
FrmPoPHisBarCode:=nil;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -