我刚学delphi,想问一个问题。我的一个表主键为stu_no char(3),现在里面有一条记录'001',我想增加记录,如'002','003',....这样来每次加1,怎么编程序呀。
tblStu.Append;
tblStu.fieldbyname('stu_no').asString:=???
多谢赐教!
tblStu.Append;
tblStu.fieldbyname('stu_no').asString:=???
多谢赐教!
其他的就要稍微麻烦一些,有0.
var
maxNO:string;
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('select max(cast(stu_no as int)) stu_no from table1');
open;
if recordcount>0 then
maxNo:=inttostr(fieldbyname('stu_no').asinteger+1)
else
maxNo:='001';
if Length(maxNo)=1 then maxNo:='00'+maxNo;
if length(maxNo)=2 then maxNo='0'+maxNo;
result:=maxNo;
end;
end;
.........................................................
tblStu.Append;
tblStu.fieldbyname('stu_no').asString:=getmaxNo;
if Length(maxNo)=1 then maxNo:='000000'+maxNo;
if Length(maxNo)=2 then maxNo:='00000'+maxNo;
if Length(maxNo)=3 then maxNo:='0000'+maxNo;
.....有没别的函数象PB中可以用string(),比如maxNo:=string(maxNo,'0000000')这样制定格式的。
adoquery1.sql.add('Select max(stu_no) max1 from table ');
adoquery1.open;
adoquery2.insert
adoqyery2.fieldbyname('Stu_no').value:=copy(adoqyery2.fieldbyname('max1').value,lenght(adoqyery2.fieldbyname('Stu_no').value)-lenght(IntToStr(adoqyery2.fieldbyname('max1').AsInteger)))+IntToStr(adoqyery2.fieldbyname('max1').AsInteger);
adoquery2.post;
to: amei2000go(浪子) Format('%0000000d',[x])不行呀。
如果现在选出的最大编号为'0100005',怎么往库里插入'0100006'? 哈哈.
代碼如下,絕對可以,我已經測試了!procedure TForm1.BitBtn1Click(Sender: TObject);
begin
adoquery1.close;
adoquery1.sql.add('Select max(id)as max1 from table1 ');
adoquery1.open;
adoquery2.Close;
ADOQuery2.SQL.Add('select * from table1');
ADOQuery2.Open;
adoquery2.insert;if adoquery1.FieldByName('max1').IsNull then
adoquery2.fieldbyname('id').value:='001'
else
if length(IntToStr(adoquery1.fieldbyname('max1').AsInteger+1))-length(IntToStr(adoquery1.fieldbyname('max1').AsInteger))=0 then
adoquery2.fieldbyname('id').value:=copy(adoquery1.fieldbyname('max1').value,1,length(adoquery1.fieldbyname('max1').value)-length(IntToStr(adoquery1.fieldbyname('max1').AsInteger)))+IntToStr(adoquery1.fieldbyname('max1').AsInteger+1)
else
adoquery2.fieldbyname('id').value:=copy(adoquery1.fieldbyname('max1').value,1,length(adoquery1.fieldbyname('max1').value)-length(IntToStr(adoquery1.fieldbyname('max1').AsInteger))-1)+IntToStr(adoquery1.fieldbyname('max1').AsInteger+1);
adoquery2.post;
end;