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 + -
显示快捷键?