我要实现一个自己编号的程序,先要查出表中的最大值,然后再累加,代码如下 a:='NO'+formatdatetime('yyyymmdd',now());
with adoquery3 do
begin
close;
sql.Clear;
sql.Add('select max(加工单编号) from jiagong ');
open;
end;
if adoquery3.FieldByName('加工单编号').Value=null then
a:=a+'001'
else begin
b:=trim(adoquery3.FieldValues['加工单编号']);
i:=strtoint(trim(copy(b,11,5)));
if i<10 then
a:=a+'00'+inttostr(i+1)
else if i<100 then
a:=a+'0'+inttostr(i+1)
else
a:=a+inttostr(i+1);
end;
label5.Caption:=a;
程序运行时,总是提示出错,adoquery1找不到字段‘加工单编号’,代码好像没有错,哪位高手能告诉我,问题出在哪里?分不够可以再加!
with adoquery3 do
begin
close;
sql.Clear;
sql.Add('select max(加工单编号) from jiagong ');
open;
end;
if adoquery3.FieldByName('加工单编号').Value=null then
a:=a+'001'
else begin
b:=trim(adoquery3.FieldValues['加工单编号']);
i:=strtoint(trim(copy(b,11,5)));
if i<10 then
a:=a+'00'+inttostr(i+1)
else if i<100 then
a:=a+'0'+inttostr(i+1)
else
a:=a+inttostr(i+1);
end;
label5.Caption:=a;
程序运行时,总是提示出错,adoquery1找不到字段‘加工单编号’,代码好像没有错,哪位高手能告诉我,问题出在哪里?分不够可以再加!
你这样选出来,当然找不到字段'加工单编号'啦这样试试
sql.Add('select max(加工单编号) as '加工单编号' from jiagong ');还有
if adoquery3.FieldByName('加工单编号').Value=null then=null 不知有没有问题
都是=''
没见过null的
高级打字员都说出来了
adoQuery3.eof;
sql.Add('select max(加工单编号) from jiagong ');
open;
end;
if adoquery3.FieldByName('加工单编号').Value=null then
a:=a+'001'
else begin
b:=trim(adoquery3.FieldValues['加工单编号']);上面,b后面的表达式有问题,因为你的sql语句执行后,返回的值不再是你所想象的"加工单编号",所以b的后面的表达式应该为:trim(adoquery3.fileds[0].asstring);即可
with adoquery3 do
begin
close;
sql.Clear;
sql.Add('select max(加工单编号) from jiagong ');
open;
end;
if adoquery3.FieldByName('加工单编号').Value=null then
//这句不对,可更改为if adoquery3.Fields[0].asstring='' then
a:=a+'001'
else begin
b:=trim(adoquery3.FieldValues['加工单编号']);
//这句不对,可更改为b:=trim(adoquery3.fields[0].asstring);
i:=strtoint(trim(copy(b,11,5)));
if i<10 then
a:=a+'00'+inttostr(i+1)
else if i<100 then
a:=a+'0'+inttostr(i+1)
else
a:=a+inttostr(i+1);
end;
label5.Caption:=a;
********************************************************************************
这样修改了之后,绝对没有问题。
if adoquery3.FieldByName('加工单编号').Value=null then
改成
if adoquery3.FieldByName('加工单编号').Value='' then
或者
if adoquery3.FieldByName('加工单编号').Value is null then
elect max(加工单编号) as '加工单编号' from jiagong
应该是
Select max(加工单编号) as '加工单编号' from jiagong
再说,你的max用法也不对。怎么可能实现啊