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

📄 billcode.pas

📁 p2pdbanywhere 可以通过之udp方式远程连接数据库的组件,这个组件非常好,是Delphi7,9,2006能够使用,包含源码.
💻 PAS
字号:
unit BillCode;

interface

uses
  SysUtils, Classes,DB,ADODB,RemoteDataSet,dialogs;

type
  TBillCode = class(TComponent)
  private
    FRemoteDataSet:TRemoteDataSet;
    FADOQuery:TADOQUery;
    procedure setrt(Value:TRemoteDataSet);
    procedure setado(value:TADOQUery);
    { Private declarations }
  protected
    { Protected declarations }
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    Function GetNewBillCode(BillType:string):string;
    { Public declarations }
  published
    property RemoteDataSet:TRemoteDataSet read FRemoteDataSet write setrt;
    property ADOQuery:TADOQuery read FADOQuery write setado;
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('DbAnyWhere', [TBillCode]);
end;
constructor TBillCode.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  {先要建立数据库表DB_Bill:
  BIll_Id:自动编号 bigint
  Bill_Type:单据类型 varchar
  BIll_Code:单据编号 bigint 缺省0} 
end;
destructor TBillCode.Destroy;
begin
  inherited Destroy;
end;
procedure TBillCode.setrt(Value:TRemoteDataSet);
begin
  FRemoteDataSet:=value;
  FADOQuery:=nil;
end;
procedure TBillCode.setado(value:TADOQUery);
begin
  FADOQuery:=value;
  FRemoteDataSet:=nil;
end;
Function TBillCode.GetNewBillCode(BillType:string):string;
var
  cur_code:integer;
begin
  //cur_code:=0;
  if (FADOQuery=nil)and(FRemoteDataSet=nil) then
  begin
    showmessage('请设置SQL执行组件!');
    result:='';
    exit;
  end;
  //ADO
  if FADOQuery<>nil then
  begin
    self.FADOQuery.Close;
    {declare @ok integer
exec @ok=getbillcode 'PYRK'
select @ok}
    self.FADOQuery.SQL.Text:=' declare @ok integer '+
                             ' exec @ok=getbillcode '''+BillType+''''+
                             ' select @ok bill_code';
    self.FADOQuery.Open;
    cur_code:=self.FADOQuery.fieldbyname('Bill_code').AsInteger;
    if length(inttostr(cur_code))<=8 then
    begin
      result:=billtype+stringofchar('0',8-length(inttostr(cur_code)))+inttostr(cur_code);
    end else
    begin
      result:=billtype+inttostr(cur_code);
    end;
  end;
  //Remote
  if self.FRemoteDataSet<>nil then
  begin
    self.FRemoteDataSet.Remoteclose;
    self.FRemoteDataSet.RTSQL.Text:=' declare @ok integer '+
                                    ' exec @ok=getbillcode '''+BillType+''''+
                                    ' select @ok bill_code';
    self.FRemoteDataSet.RemoteOpen;
    cur_code:=self.FRemoteDataSet.fieldbyname('Bill_code').AsInteger;
    if length(inttostr(cur_code))<=8 then
    begin
      result:=billtype+stringofchar('0',8-length(inttostr(cur_code)))+inttostr(cur_code);
    end else
    begin
      result:=billtype+inttostr(cur_code);
    end;
  end;
end;

end.
 

⌨️ 快捷键说明

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