⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ordertobarcode.~pas

📁 Barcode And LabelPrint
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
  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('信息输入不全,请输入订单号和客户名称!');
    exit;
  end;

  if checkValue('OrderS', 'OrderID', edtOrderID.Text) then
  begin  //限制编号不可重复否则打印不好控制一次性只打印本次所输的
    messagedlg('此订单号已经存在,请重输!', mtinformation, [mbok], 0);
    exit;
  end;

  StockDM.ADOConn.BeginTrans;
  //try
  try
//保存订单基本信息
    with StockDM.QOrders do
    begin
      if not Active then Active := true;
        //不检查重复,订单重复,就进行修改
      if Locate('OrderID', edtOrderID.Text, []) then
        edit
      else
        Append;
      FieldValues['OrderID'] := edtOrderID.Text; //要防止重复
      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])); //数量
    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 := strtoint(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]);
          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('保存数据时出现错误,请重新提交!');
  end;
  loadBarcodeToTreeView; //过滤并显示
  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+'  数量:'+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位产品系列号    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;
  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 从第一开始
      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;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -