var a1,a2:string; begin adoquery1.Close; adoquery1.SQL.clear; adoquery1.SQL.Add('select * from ts where dh=ooooo1'); adoquery1.Open; if adoquery1.RecordCount>1 then begin adotable1.Close; adotable1.Open; adotable1.Last; a1:=adotable1.fieldbyname('dh').AsString; a2:=floattostr(strtoint(a1)+1); dbe_bh.Text:=a2; dbe_bh.Text:=''; dbe_nc.Text:=''; dbe_zz.Text:=''; dbe_cbs.Text:=''; dbe_jg.Text:=''; dbe_ys.Text:=''; dbe_kc.Text:=''; dbe_fl.Text:=''; dbe_bh.SetFocus(); end else dbe_bh.Text:='000001'; end; 这样写有什么错误吗?!
给你一个方法,你看一看: unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, Db, Grids, DBGrids, ADODB;type TForm1 = class(TForm) ADOConnection1: TADOConnection; ADOTable1: TADOTable; DBGrid1: TDBGrid; DataSource1: TDataSource; DBEdit1: TDBEdit; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private //定义替换函数; function MyReplace(reStr:String;Slen:integer):String; { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM} function Tform1.MyReplace(reStr:String;Slen:integer):String; var i:integer; s:String; begin s:=''; for i:=1 to Slen do S:=S+reStr; MyReplace:=s; end; procedure TForm1.FormCreate(Sender: TObject); var stemp:String; begin if not ADOTable1.Active then ADOTable1.Active:=True; ADOTable1.Last; if ADOTable1.FieldByName('bh').asString='' then DBEdit1.Text:=MyReplace('0',6)+'1' else DBedit1.Text:=ADOTable1.FieldByName('bh').asString; end;procedure TForm1.Button1Click(Sender: TObject); var stemp:string; begin ADOTable1.Last; if ADOTable1.FieldByName('bh').asString='' then DBEdit1.Text:=MyReplace('0',6)+'1' else begin stemp:=IntToStr(Trunc(StrToInt(DBEdit1.text)+1)); DBEdit1.Text:=MyReplace('0',7-length(stemp))+stemp; end;
function Get_My_Str(var Old_String:string):string; function TFrm_Main.Get_My_Str(var Old_String:string):string; var tmp_ID:string; //之后新增的ID号 tmp_str:string;//临时的ID号 tmp_int:integer; i:integer; begin tmp_ID:='0000000'; //得到要写入库中的数据格式 tmp_str:=Floattostr(strtofloat(Old_String)+1); tmp_int:=length(tmp_str); For i:=0 to tmp_int-1 do begin tmp_ID[7-i]:=tmp_str[tmp_int-i]; end; Get_My_Str:=tmp_ID; end;
a1,a2:string;
begin
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.SQL.Add('select * from ts where dh=ooooo1');
adoquery1.Open;
if adoquery1.RecordCount>1 then
begin
adotable1.Close;
adotable1.Open;
adotable1.Last;
a1:=adotable1.fieldbyname('dh').AsString;
a2:=floattostr(strtoint(a1)+1);
dbe_bh.Text:=a2;
dbe_bh.Text:='';
dbe_nc.Text:='';
dbe_zz.Text:='';
dbe_cbs.Text:='';
dbe_jg.Text:='';
dbe_ys.Text:='';
dbe_kc.Text:='';
dbe_fl.Text:='';
dbe_bh.SetFocus();
end
else
dbe_bh.Text:='000001';
end;
这样写有什么错误吗?!
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask, DBCtrls, Db, Grids, DBGrids, ADODB;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
DBEdit1: TDBEdit;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
//定义替换函数;
function MyReplace(reStr:String;Slen:integer):String;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}
function Tform1.MyReplace(reStr:String;Slen:integer):String;
var
i:integer;
s:String;
begin
s:='';
for i:=1 to Slen do
S:=S+reStr;
MyReplace:=s;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
stemp:String;
begin
if not ADOTable1.Active then
ADOTable1.Active:=True;
ADOTable1.Last;
if ADOTable1.FieldByName('bh').asString='' then
DBEdit1.Text:=MyReplace('0',6)+'1'
else
DBedit1.Text:=ADOTable1.FieldByName('bh').asString;
end;procedure TForm1.Button1Click(Sender: TObject);
var
stemp:string;
begin
ADOTable1.Last;
if ADOTable1.FieldByName('bh').asString='' then
DBEdit1.Text:=MyReplace('0',6)+'1'
else
begin
stemp:=IntToStr(Trunc(StrToInt(DBEdit1.text)+1));
DBEdit1.Text:=MyReplace('0',7-length(stemp))+stemp;
end;
ADOTable1.Append;
ADOTable1.FieldByName('bh').asString:=DBEdit1.Text;
ADOTAble1.Post;end;end.
// DBEdit1.DataSource的属性必须为空
function TFrm_Main.Get_My_Str(var Old_String:string):string;
var
tmp_ID:string; //之后新增的ID号
tmp_str:string;//临时的ID号
tmp_int:integer;
i:integer;
begin
tmp_ID:='0000000'; //得到要写入库中的数据格式
tmp_str:=Floattostr(strtofloat(Old_String)+1);
tmp_int:=length(tmp_str);
For i:=0 to tmp_int-1 do
begin
tmp_ID[7-i]:=tmp_str[tmp_int-i];
end;
Get_My_Str:=tmp_ID;
end;