?? ordertobarcode.~pas
字號(hào):
var Key: Char);
begin
inherited;
//if (not (Key in ['0'..'9','.',#8])) then Key:=#0;
end;
procedure TFrmOrderToBarCode.BitBtnpostClick(Sender: TObject);
var i, j: integer;
num, DevNum: dword;
SerialNumberStart, SerialNumberTemp, LastSerialNumberStr: string;
LastSerialNumberInt: integer;
begin
inherited;
StringGridOrderSelectCell(self, StringGridOrder.Col, StringGridOrder.Row, Canselect);
if (EdtOrderID.Text = '') // or (DBEditNum.Text = '') or (DBEditbusiness.Text = '') or (DBLookupComboBoxDevNum.Text = '')
or (EdtCustomer.Text = '')
then
begin
ShowMessage('信息輸入不全,請(qǐng)輸入訂單號(hào)和客戶(hù)名稱(chēng)!');
exit;
end;
if checkValue('OrderS', 'OrderID', edtOrderID.Text) then
begin //限制編號(hào)不可重復(fù)否則打印不好控制一次性只打印本次所輸?shù)? messagedlg('此訂單號(hào)已經(jīng)存在,請(qǐng)重輸!', mtinformation, [mbok], 0);
exit;
end;
StockDM.ADOConn.BeginTrans;
//try
try
//保存訂單基本信息
with StockDM.QOrders do
begin
if not Active then Active := true;
//不檢查重復(fù),訂單重復(fù),就進(jìn)行修改
if Locate('OrderID', edtOrderID.Text, []) then
edit
else
Append;
FieldValues['OrderID'] := edtOrderID.Text; //要防止重復(fù)
FieldValues['CustomerName'] := EdtCustomer.Text;
FieldValues['PostDate'] := DateTimePickerPostDate.Date;
FieldValues['SellPrincipal'] := edtSellPrincipal.Text;
FieldValues['PanTab'] := edtPanTab.Text;
FieldValues['OrderDetail'] := MemoOrderDetail.Text;
FieldValues['OrderMemo'] := MemoOrderMemo.Text;
FieldValues['PanPrincipal'] := edtPanPrincipal.Text;
FieldValues['PanAuditing'] := edtPanAuditing.Text;
FieldValues['SpecificPro'] := edtSpecificPro.Text;
FieldValues['ApplyDept'] := edtApplyDept.Text;
FieldValues['ProPrincipal'] := edtProPrincipal.Text;
FieldValues['RDMemo'] := MemoRDMemo.Text;
FieldValues['EngMemo'] := MemoEngMemo.Text;
FieldValues['EngAudting'] := edtEngAudting.Text;
FieldValues['AppendDate'] := date;
post;
end;
ProgressBar1.Position := 0;
ProgressBar1.Max := 0;
for i := 1 to StringGridOrder.RowCount - 1 do
begin
if (trim(StringGridOrder.Cells[1, i]) = '') or (trim(StringGridOrder.Cells[2, i]) = '') then Continue;
ProgressBar1.Max := ProgressBar1.Max + strtoint(trim(StringGridOrder.Cells[2, i])); //數(shù)量
end;
//保存訂單明細(xì)(機(jī)型與數(shù)量)
with StringGridOrder do
begin
for i := 1 to RowCount - 1 do
begin //機(jī)器類(lèi)型 //數(shù)量
if (trim(Cells[1, i]) = '') or (trim(Cells[2, i]) = '') then Continue;
num := strtoint(trim(Cells[2, i])); //數(shù)量
DevNum := strtoint(GetValueTostr('DeviceType', 'DevNum', 'DevName', trim(Cells[1, i])));
with StockDM.QGBarCode do //機(jī)型
begin
if not Active then Active := true;
//if Locate('OrderID;DevNum;Num',VarArrayOf([strtoint(EdtOrderID.Text),devnum,num]),[])then Continue;//重復(fù)或者又一次增加就跳過(guò)
Append;
FieldValues['OrderID'] := edtOrderID.Text; //要防止重復(fù)
//FieldValues['GBarCodeID'] := edtCustomerName;
FieldValues['DevNum'] := DevNum;
FieldValues['Num'] := num;
FieldValues['UPDateDate'] := date;
FieldValues['Memo'] := trim(Cells[3, i]);
post;
//保存并生成條碼
SerialNumberStart := CreateSerialNumberStart(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['Isout'] := false;
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('保存數(shù)據(jù)時(shí)出現(xiàn)錯(cuò)誤,請(qǐng)重新提交!');
end;
loadBarcodeToTreeView; //過(guò)濾并顯示
BitBtnPrintBarcode.Enabled:=true;
//finally
//end;
end;
procedure TFrmOrderToBarCode.loadBarcodeToTreeView;
var nodeDevName, nodeCode: TTreeNode;
begin
with StockDM.QGBarCode do
begin
fcTreeViewBarcode.Items.Clear;
close;
Filter := 'OrderID=' + EdtOrderID.Text + '';
Filtered := true;
Active := true;
First;
while not Eof do
begin
nodeDevName := fcTreeViewBarCode.items.add(nil, Fieldbyname('devName').AsString+' 數(shù)量:'+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;
StockDM.QSQLBarCode.close;
StockDM.QSQLBarCode.Filter := 'OrderID=' + EdtOrderID.Text + '';;
StockDM.QSQLBarCode.Filtered := true;
StockDM.QSQLBarCode.Active := true;
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位產(chǎn)品系列號(hào) 3位訂單號(hào) 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位序列號(hào)
OrderID := orderIDStr;
DevNum := DevNumINT;
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 + '0001' //0000 從第一開(kāi)始
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;
//打印完成后再進(jìn)行保存 //僅打印本次設(shè)置生成的條碼
end;
procedure TFrmOrderToBarCode.EdtOrderIDKeyPress(Sender: TObject;
var Key: Char);
begin
inherited;
if (not (Key in ['0'..'9', #8])) then Key := #0;
end;
end.
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -