?? 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;
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);
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;
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'] := FormatDateTime('yyyy-mm-dd',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').AsString :=FormatDateTime('yyyy-mm-dd',Date); //生產日期
//StockDM.ADOConn.BeginTrans;
//try
try
inherited;
BarCodePost;
//StockDM.ADOConn.CommitTrans;
except
ShowMessage('生成條碼出錯,請程序保存!');
end;
//finally
// StockDM.ADOConn.RollbackTrans;
//end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -