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

📄 gbarcodes.~pas

📁 Barcode And LabelPrint
💻 ~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;
    RvDataSetConnectionBarCode: TRvDataSetConnection;
    RvProjectBarCode: TRvProject;
    RvSystemBarCode: TRvSystem;
    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);
    procedure acPrintExecute(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;
  RvProjectBarCode.ProjectFile := CurPath + '\条码\Probarcode.rav';
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'] := 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').AsDateTime := Date;
 //StockDM.ADOConn.BeginTrans;
 //try
  try
    inherited;
    BarCodePost;

  //StockDM.ADOConn.CommitTrans;
  except
    ShowMessage('生成条码出错,请程序保存!');
  end;
 //finally
 // StockDM.ADOConn.RollbackTrans;
 //end;


end;

procedure TfrmGBarCodes.acPrintExecute(Sender: TObject);
begin
  inherited;
  RvProjectBarCode.Execute;
end;

end.

⌨️ 快捷键说明

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