📄 gbarcodes.~pas
字号:
unit GBarCodes;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, InfoBase, wwDialog, wwidlg, DB, ADODB, ActnList, ExtCtrls,
ComCtrls, ToolWin, StdCtrls, DBCtrls, RxLookup, ToolEdit, RXDBCtrl, Mask,
GridsEh, DBGridEh, DateUtils, Grids, DBGrids, RpBase, RpSystem, RpRave,
RpDefine, RpCon, RpConDS;
type
TfrmGBarCodes = class(TfrmInfoBase)
GroupBox1: TGroupBox;
Label1: TLabel;
DBEditOrderID: TDBEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
DBEditNum: TDBEdit;
DBEditbusiness: TDBEdit;
DBEditCustomer: TDBEdit;
Label7: TLabel;
DBMemo1: TDBMemo;
Label8: TLabel;
DBMemo2: TDBMemo;
Panel6: TPanel;
DBGridEh1: TDBGridEh;
DBGridEhBarCode: TDBGridEh;
tbtPrint: TToolButton;
ToolButton1: TToolButton;
QDeviceType: TADOQuery;
DSDeviceType: TDataSource;
QBaseInfoDevNum: TIntegerField;
QBaseInfoGBarCodeID: TAutoIncField;
QBaseInfoOrderID: TWideStringField;
QBaseInfoNum: TIntegerField;
QBaseInfobusiness: TWideStringField;
QBaseInfoCustomer: TWideStringField;
QBaseInfoUPDateDate: TDateTimeField;
QBaseInfoSpecificFunction: TWideStringField;
QBaseInfoMemo: TWideStringField;
QBarCode: TADOQuery;
DSBarCode: TDataSource;
Splitter1: TSplitter;
DateTimePicker1: TDateTimePicker;
DBLookupComboBoxDevNum: TDBLookupComboBox;
QBaseInfoPostDate: TDateTimeField;
RvDataSetConnectionBarCode: TRvDataSetConnection;
RvProjectBarCode: TRvProject;
RvSystemBarCode: TRvSystem;
procedure FormShow(Sender: TObject);
procedure dsBaseInfoStateChange(Sender: TObject);
procedure dsBaseInfoDataChange(Sender: TObject; Field: TField);
procedure DBEditNumKeyPress(Sender: TObject; var Key: Char);
procedure acNewExecute(Sender: TObject);
procedure acSaveExecute(Sender: TObject);
procedure acPrintExecute(Sender: TObject);
private
{ Private declarations }
function CreateMachineNumber: string;
procedure BarCodePost;
public
{ Public declarations }
end;
var
frmGBarCodes: TfrmGBarCodes;
implementation
uses StockDataModel, PublicFunction, PublicParameter;
{$R *.dfm}
procedure TfrmGBarCodes.FormShow(Sender: TObject);
begin
inherited;
if QDeviceType.Active = false then QDeviceType.Active := true;
if QBarCode.Active = false then QBarCode.Active := true;
RvProjectBarCode.ProjectFile := CurPath + '\条码\Probarcode.rav';
end;
function TfrmGBarCodes.CreateMachineNumber: string;
var INIDeviceNumStr: string;
Year, weakstr, d, orderID: string;
INIDeviceNum: integer;
date: TDate;
begin
INIDeviceNum := QBaseInfo.FieldValues['DevNum'];
date := QBaseInfo.Fieldbyname('PostDate').AsDateTime;
orderID := QBaseInfo.FieldValues['OrderID'];
INIDeviceNumStr := IntToStr(INIDeviceNum);
INIDeviceNumStr := copy('0000' + INIDeviceNumStr, length(INIDeviceNumStr) + 1, 4);
Year := copy(inttostr(YearOf(date)), 4, 1); //只取最后一位的年
weakstr := inttostr(WeekOfTheYear(date));
weakstr := copy('00' + weakstr, length(weakstr) + 1, 2);
d := inttostr(DayOfTheWeek(date));
orderID := copy('000' + orderID, length(orderID) + 1, 3);
Result := INIDeviceNumStr + orderID + year + weakstr + d;
end; //4位产品系列号 3位订单号 1位年 2星期 1天
procedure TfrmGBarCodes.BarCodePost;
var
SerialNumberStart, SerialNumberTemp, LastSerialNumberStr: string;
i, num: integer;
GBarCodeID, LastSerialNumberInt, DevNum: integer;
OrderID: string;
begin
SerialNumberStart := CreateMachineNumber; //4+3+1+2+1共11+4位序列号
GBarCodeID := QBaseInfo.FieldValues['GBarCodeID'];
OrderID := QBaseInfo.FieldValues['OrderID'];
DevNum := QBaseInfo.FieldValues['DevNum'];
num := QBaseInfo.FieldValues['Num'];
with TADOQuery.Create(self) do
begin
try
Connection := StockDM.ADOConn;
close;
sql.Clear;
sql.Add(format('select * from BarCode where OrderID=%s and DevNum=%D order by BarCode', [OrderID, DevNum]));
Prepared := True;
Open;
if IsEmpty then
SerialNumberStart := SerialNumberStart + copy('0000' + inttostr(0), length(inttostr(0)) + 1, 4)
else
begin
Last;
LastSerialNumberstr := FieldValues['BarCode'];
LastSerialNumberInt := strtoint(copy(LastSerialNumberstr, length(LastSerialNumberstr) - 4 + 1, 4)) + 1;
SerialNumberStart := SerialNumberStart + copy('0000' + inttostr(LastSerialNumberInt + 0), length(inttostr(LastSerialNumberInt + 0)) + 1, 4)
end;
//DBGridEhBarCode.
//UpdateBatch;
//close;
//sql.Clear;
//sql.Add('select * from BarCode');
//open;
SerialNumberStart := copy(SerialNumberStart, 1, length(SerialNumberStart) - 4);
for i := 0 to num - 1 do
begin
SerialNumberTemp := SerialNumberStart
+ copy('0000' + inttostr(LastSerialNumberInt + i), length(inttostr(LastSerialNumberInt + i)) + 1, 4);
Append;
FieldValues['BarCode'] := SerialNumberTemp;
FieldValues['GBarCodeID'] := GBarCodeID;
FieldValues['OrderID'] := OrderID;
FieldValues['DevNum'] := DevNum;
FieldValues['Isout'] := false;
FieldValues['InComeDate'] := Date;
post;
end;
finally
free;
end;
end;
end;
procedure TfrmGBarCodes.dsBaseInfoStateChange(Sender: TObject);
var i: integer;
begin
inherited;
with GroupBox1 do
for i := 0 to ControlCount - 1 do
begin
if Controls[i] is TDBEdit then
(Controls[i] as TDBEdit).ReadOnly := not acSave.Enabled
else if Controls[i] is TDBLookupComboBox then
(Controls[i] as TDBLookupComboBox).ReadOnly := not acSave.Enabled
else if Controls[i] is TDBMemo then
(Controls[i] as TDBMemo).ReadOnly := not acSave.Enabled
end;
//DateTimePicker1.Enabled := not acSave.Enabled;
end;
procedure TfrmGBarCodes.dsBaseInfoDataChange(Sender: TObject;
Field: TField);
//VAR
// GBarCodeID:integer; // devNum,OrderID:STRING;
begin
inherited;
if QBaseInfo.State = dsBrowse then
begin
if (QBaseInfo.Fieldbyname('PostDate').AsString <> '') and (QBaseInfo.Fieldbyname('DevNum').AsString <> '') then
begin
DateTimePicker1.Date := QBaseInfo.Fieldbyname('PostDate').AsDateTime;
//OrderID:=QBaseInfo.FieldValues['OrderID'];
//DevNum:=QBaseInfo.FieldValues['DevNum'];
// GBarCodeID:=QBaseInfo.FieldValues['GBarCodeID'];
// with QBarCode do
// begin
// close;
// sql.Clear;
// sql.Add(format('select * from BarCode where GBarCodeID=%d',[GBarCodeID] )); //OrderID=%s and DevNum=%D order by BarCode',[OrderID,DevNum]
// Prepared := True;
// Open;
// end;
end;
end;
end;
procedure TfrmGBarCodes.DBEditNumKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if (not (Key in ['0'..'9', #8])) then Key := #0; //只可输入整数
end;
procedure TfrmGBarCodes.acNewExecute(Sender: TObject);
begin
DBEditOrderID.SetFocus;
inherited;
DateTimePicker1.Date := date;
end;
procedure TfrmGBarCodes.acSaveExecute(Sender: TObject);
begin
if (DBEditOrderID.Text = '')
or (DBEditNum.Text = '')
or (DBEditbusiness.Text = '')
or (DBEditCustomer.Text = '')
or (DBLookupComboBoxDevNum.Text = '') then
begin
ShowMessage('输入不全,请输入!');
Abort;
end;
QBaseInfo.Fieldbyname('PostDate').AsDateTime := DateTimePicker1.Date;
QBaseInfo.Fieldbyname('UPdateDate').AsDateTime := Date;
//StockDM.ADOConn.BeginTrans;
//try
try
inherited;
BarCodePost;
//StockDM.ADOConn.CommitTrans;
except
ShowMessage('生成条码出错,请程序保存!');
end;
//finally
// StockDM.ADOConn.RollbackTrans;
//end;
end;
procedure TfrmGBarCodes.acPrintExecute(Sender: TObject);
begin
inherited;
RvProjectBarCode.Execute;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -