📄 billcode.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 + -