ordertobarcode.~pa
来自「Barcode And LabelPrint」· ~PA 代码 · 共 701 行 · 第 1/2 页
~PA
701 行
FieldValues['ProPrincipal'] := edtProPrincipal.Text;
FieldValues['RDMemo'] := MemoRDMemo.Text;
FieldValues['EngMemo'] := MemoEngMemo.Text;
FieldValues['EngAudting'] := edtEngAudting.Text;
FieldValues['AppendDate'] := date;
post;
end;
//保存订单明细(机型与数量)
with StringGridOrder do
begin
for i := 1 to RowCount - 1 do
begin //机器类型 //数量
if (trim(Cells[1, i]) = '') or (trim(Cells[2, i]) = '') then Continue;
num := strtoint(trim(Cells[2, i])); //数量
DevNum := GetValueTostr('DeviceType', 'DevNum', 'DevName', trim(Cells[1, i]));
with StockDM.QGBarCode do //机型
begin
if not Active then Active := true;
//if Locate('OrderID;DevNum;Num',VarArrayOf([strtoint(EdtOrderID.Text),devnum,num]),[])then Continue;//重复或者又一次增加就跳过
Append;
FieldValues['OrderID'] := edtOrderID.Text; //要防止重复 //FieldValues['GBarCodeID'] := edtCustomerName;
FieldValues['DevNum'] := DevNum;
FieldValues['Num'] := num;
FieldValues['UPDateDate'] := date;
FieldValues['Memo'] := trim(Cells[3, i]);
GetDevHardOptionsNumAndEName(Cells[1, i], NumS, Enames);
//MemoMemo.Text:=Enames;
FieldValues['devHardOptions'] := Enames; //NumS;
post;
//保存并生成条码
SerialNumberStart := CreateSerialNumberStart(strtoint(DevNum), DateTimePickerPostDate.Date, edtOrderID.Text);
LastSerialNumberInt := strtoint(copy(SerialNumberStart, length(SerialNumberStart) - 4 + 1, 4));
SerialNumberStart := copy(SerialNumberStart, 1, length(SerialNumberStart) - 4); //条码起始号码
for j := 0 to num - 1 do
begin
with stockdm.QSQLBarCode do //条码
begin
if not Active then Active := true;
ProgressBar1.Position := ProgressBar1.Position + 1;
SerialNumberTemp := SerialNumberStart + copy('0000' + inttostr(LastSerialNumberInt + j), length(inttostr(LastSerialNumberInt + j)) + 1, 4);
Append;
FieldValues['BarCode'] := SerialNumberTemp;
FieldValues['GBarCodeID'] := StockDM.QGBarCode.FieldValues['GBarCodeID'];
FieldValues['OrderID'] := edtOrderID.Text;
FieldValues['DevNum'] := DevNum;
FieldValues['IsPack'] := false;
FieldValues['IsInCome'] := false;
FieldValues['IsOutCome'] := false;
FieldValues['IsPack'] := false;
FieldValues['PostDate'] := Date; //生产日期
GetDevHardOptionsNumAndEName(Cells[1, i], NumS, Enames);
//MemoMemo.Text:=Enames;
FieldValues['devHardOptions'] := Enames; // NumS
//FieldValues['InComeDate'] := Date; //生产日期
//FieldValues['InComeDate'] := Date; //生产日期
post;
end;
end; //end for j := 0 to num - 1 do
end; //end with StockDM.QGBarCode do
end; // end for i := 1 to RowCount - 1 do
end; //end with StringGridOrder do
stockdm.ADOConn.CommitTrans;
except
stockdm.ADOConn.RollbackTrans;
raise Exception.Create('保存数据时出现错误,请重新提交!');
end;
loadBarcodeToTreeView; //过滤并在treeView上显示显示
StockDM.QGBarCode.close;
StockDM.QGBarCode.Filter := 'OrderID=' + EdtOrderID.Text + ''; //过滤此订单的所有条码,准备打印
StockDM.QGBarCode.Filtered := true;
StockDM.QGBarCode.Active := true;
StockDM.QSQLBarCode.close;
StockDM.QSQLBarCode.Filter := 'OrderID=' + EdtOrderID.Text + ''; //过滤此订单的所有条码,准备打印
StockDM.QSQLBarCode.Filtered := true;
StockDM.QSQLBarCode.Active := true;
BitBtnPrintBarcode.Enabled := true;
getStatInfo;
end;
procedure TFrmOrderToBarCode.getStatInfo;
begin
with QToday do
begin
close;
sql.Clear;
sql.Add(Format('select OrderID,PostDate from Orders where PostDate=''%s''', [datetostr(date)]));
open;
LabelTodayOrderCount.Caption := inttostr(RecordCount);
LabelTodayOrderCount.Refresh;
close;
sql.Clear;
sql.Add(Format('select BarCode,PostDate from BarCode where PostDate=''%s''', [datetostr(date)]));
open;
LabelTodayCount.Caption := inttostr(RecordCount);
LabelTodayCount.Refresh;
close;
sql.Clear;
sql.Add(Format('select BarCode,OrderID from BarCode where OrderID=''%s''', [EdtOrderID.Text]));
open;
LabelThisCount.Caption := inttostr(RecordCount);
LabelThisCount.Refresh;
end;
end;
procedure TFrmOrderToBarCode.BitBtn1Click(Sender: TObject);
begin
inherited;
with QToday do
begin
close;
sql.Clear;
sql.Add(Format('select a.BarCode 条码,a.PostDate 生产日期, a.OrderID 订单号,b.CustomerName 客户,c.DevName 机型 from BarCode a ,Orders b,DeviceType c where a.OrderID=b.OrderID and a.devnum=c.devnum and a.OrderID=''%s''', [EdtOrderID.Text]));
open;
if recordcount >= 1 then ExportToExcel(QToday);
end;
end;
procedure TFrmOrderToBarCode.loadBarcodeToTreeView;
var nodeDevName, nodeCode: TTreeNode;
begin
with StockDM.QGBarCode do
begin
fcTreeViewBarcode.Items.Clear;
close;
Filter := 'OrderID=' + EdtOrderID.Text + ' and UPDateDate=' + datetostr(date) + ''; //过滤此订单的所有机型的数据并且是今天
//ShowMessage(Filter);
Filtered := true;
Active := true;
First;
while not Eof do
begin
nodeDevName := fcTreeViewBarCode.items.add(nil, Fieldbyname('devName').AsString + ' 数量:' + Fieldbyname('num').AsString);
//nodeDevName.ImageIndex := 0;
//nodemanger.Expanded:=true;
//nodemanger.MultiSelected := True;
//nodemanger.CheckboxType := tvctCheckbox;
StockDM.QSQLBarCode.close;
StockDM.QSQLBarCode.Filter := 'GBarCodeID=' + Fieldbyname('GBarCodeID').asstring + ''; //过滤此机型的所有条码(机器)
StockDM.QSQLBarCode.Filtered := true;
StockDM.QSQLBarCode.Active := true;
while not StockDM.QSQLBarCode.Eof do
begin
nodeCode := fcTreeViewBarCode.Items.AddChild(nodeDevName, StockDM.QSQLBarCode.Fieldbyname('barcode').AsString);
//nodeEnterprise.MultiSelected := True;
//nodeEnterprise.MultiSelected := True;
//nodeEnterprise.ImageIndex := 1;
StockDM.QSQLBarCode.Next
end;
//StockDM.QSQLBarCode.Filtered := false;
Next;
end;
Filtered := false;
end;
end;
function TFrmOrderToBarCode.CreateMachineNumberStar(Devnum: dword; postDate: Tdate; orderIDStr: string): string;
var INIDeviceNumStr: string;
Year, weakstr, d, orderID: string;
INIDeviceNum: integer;
date: TDate;
begin
INIDeviceNum := Devnum;
date := postDate;
orderID := orderIDStr;
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天
function TFrmOrderToBarCode.CreateSerialNumberStart(DevNumINT: dword; postDate: tdate; orderIDStr: string): string;
var
SerialNumberStart, SerialNumberTemp, LastSerialNumberStr: string;
LastSerialNumberInt, DevNum: integer;
OrderID: string;
begin
SerialNumberStart := CreateMachineNumberStar(DevNumINT, postDate, orderIDStr, ); //4+3+1+2+1共11+4位序列号
OrderID := orderIDStr;
DevNum := DevNumINT;
SerialNumberStart := SerialNumberStart + '0001'; //0000 从第一开始
Result := SerialNumberStart;
{ 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 and order by BarCode', [OrderID, DevNum]));
Prepared := True;
Open;
if IsEmpty then
SerialNumberStart := SerialNumberStart + '0001' //0000 从第一开始
else
begin
Last;
LastSerialNumberstr := FieldValues['BarCode'];
LastSerialNumberInt := strtoint(copy(LastSerialNumberstr, length(LastSerialNumberstr) - 4 + 1, 4)) + 1; //原值+1
SerialNumberStart := SerialNumberStart + copy('0000' + inttostr(LastSerialNumberInt + 0), length(inttostr(LastSerialNumberInt + 0)) + 1, 4)
end;
Result := SerialNumberStart;
finally
free;
end;
end; }
end;
procedure TFrmOrderToBarCode.ComboBoxDevNameKeyPress(Sender: TObject;
var Key: Char);
begin
inherited;
key := #0
end;
procedure TFrmOrderToBarCode.BitBtnPrintBarcodeClick(Sender: TObject);
begin
inherited;
//打印不易控制
ProgressBar1.Position := 0;
RvProjectBarCode.ProjectFile := CurPath + '\条码\Probarcode.rav';
RvProjectBarCode.Execute;
BitBtnPrintBarcode.Enabled := false;
//打印完成后再进行保存 //仅打印本次设置生成的条码
end;
procedure TFrmOrderToBarCode.EdtOrderIDKeyPress(Sender: TObject;
var Key: Char);
begin
inherited;
if (not (Key in ['0'..'9', #8])) then Key := #0;
end;
procedure TFrmOrderToBarCode.ComboBoxDevNameCloseUp(Sender: TObject);
var
NumS, Enames: string;
begin
inherited;
//if StockDM.QDeviceType.Active = false then StockDM.QDeviceType.Active := true;
//if StockDM.QDevAndOptions.Active=false then StockDM.QDevAndOptions.Active:=true;
//if StockDM.QDevHardOptions.Active=false then StockDM.QDevHardOptions.Active:=true;
//etDevHardOptionsNumAndEName(NumS,Enames);
//MemoMemo.Text:=Enames;
end;
procedure TFrmOrderToBarCode.GetDevHardOptionsNumAndEName(DevName: string; var NumS, Enames: string);
var sqlstr: string;
begin
NumS := '';
Enames := '';
sqlstr := Format('SELECT a.Devnum,a.DevName,a.Descri,c.Num,c.Ename,c.Zname,c.memo FROM deviceType a, DevAndOptions b,DevHardOptions c where a.devNum=b.devnum and b.Num=c.Num and a.Devname=''%s''', [DevName]);
with StockDM.QDevAndOptions do
begin
close;
SQL.Clear;
SQL.add(sqlstr);
open;
while not eof do
begin
NumS := NumS + copy('00' + FieldValues['Num'], length(FieldValues['Num']) + 1, 2); //+','
Enames := Enames + '/' + FieldValues['EName'];
next;
end;
//NumS:=copy(NumS,2,maxint);
NumS := copy(NumS, 1, 20); //最多10个功能配置
Enames := copy(Enames, 2, maxint);
end;
end;
procedure TFrmOrderToBarCode.ComboBoxDevNameSelect(Sender: TObject);
begin
inherited;
//if StockDM.QDeviceType.Active = false then StockDM.QDeviceType.Active := true;
//if StockDM.QDevAndOptions.Active=false then StockDM.QDevAndOptions.Active:=true;
//if StockDM.QDevHardOptions.Active=false then StockDM.QDevHardOptions.Active:=true;
//GetDevHardOptionsNumAndEName(NumS,Enames);
//MemoMemo.Text:=Enames;
end;
procedure TFrmOrderToBarCode.ComboBoxDevNameExit(Sender: TObject);
var
NumS, Enames: string;
begin
inherited;
GetDevHardOptionsNumAndEName(ComboBoxDevName.Text, NumS, Enames);
StringGridOrder.Cells[3, StringGridOrder.row] := Enames;
end;
procedure TFrmOrderToBarCode.BitBtn2Click(Sender: TObject);
begin
inherited;
close;
end;
procedure TFrmOrderToBarCode.BitBtn3Click(Sender: TObject);
var i: byte;
begin
inherited;
EdtPanPrincipal.Text := '';
EdtPanAuditing.Text := '';
EdtSellPrincipal.Text := '';
EdtPanTab.Text := '';
EdtOrderID.Text := '';
EdtDevName.Text := '';
MemoOrderDetail.Text := '';
MemoOrderMemo.Text := '';
EdtCustomer.Text := '';
for i := 1 to StringGridOrder.RowCount - 1 do
begin
StringGridOrder.Cells[1, i] := '';
StringGridOrder.Cells[2, i] := '';
StringGridOrder.Cells[3, i] := '';
end;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?