在delphi中有如下代码:
rocedure TForm3.autono(const stype:string); //传递的参数是图书类别
var
q:TQuery;
s:string;
begin //先利用SQL查询,得到本类别的最后一个图书编号,
q:=tquery.create(nil);
q.databasename:=dbname;
q.sql.add('select 图书编号 from book_info where 类别='''
+stype+''''+'order by 图书编号');
q.open;
q.last; //指针移动到最后一条记录
s:=q.fieldbyname('图书编号').AsString;
q.close;
q.free;
nobox.text:=nextbookno(s); //调用函数,填写新图书编号
end;function TForm3.nextbookno(const str:string):string;
var
s,s1:string; //中间变量和循环变量
i,j,k:integer;
begin
s:=str;
s1:=copy(s,1,1); //取前一个非数字字符
delete(s,1,1); //取掉非数字字符
i:=length(s); //再求字符串长度
j:=length(inttostr(strtoint(s))); //求该字符串转换成数字后的位数
for k:=1 to i-j do s1:=s1+'0';
result:=s1+inttostr(strtoint(s)+1); //返回下一个号码
end;编译时能过,可运行时出现Debugger Exception Notification错误呀
最后高亮显示范区 : nobox.text:=nextbookno(s); //调用函数,填写新图书编号最后还提示: "is not a vaild integer value."
请问这是什么原因引起的呀????????
rocedure TForm3.autono(const stype:string); //传递的参数是图书类别
var
q:TQuery;
s:string;
begin //先利用SQL查询,得到本类别的最后一个图书编号,
q:=tquery.create(nil);
q.databasename:=dbname;
q.sql.add('select 图书编号 from book_info where 类别='''
+stype+''''+'order by 图书编号');
q.open;
q.last; //指针移动到最后一条记录
s:=q.fieldbyname('图书编号').AsString;
q.close;
q.free;
nobox.text:=nextbookno(s); //调用函数,填写新图书编号
end;function TForm3.nextbookno(const str:string):string;
var
s,s1:string; //中间变量和循环变量
i,j,k:integer;
begin
s:=str;
s1:=copy(s,1,1); //取前一个非数字字符
delete(s,1,1); //取掉非数字字符
i:=length(s); //再求字符串长度
j:=length(inttostr(strtoint(s))); //求该字符串转换成数字后的位数
for k:=1 to i-j do s1:=s1+'0';
result:=s1+inttostr(strtoint(s)+1); //返回下一个号码
end;编译时能过,可运行时出现Debugger Exception Notification错误呀
最后高亮显示范区 : nobox.text:=nextbookno(s); //调用函数,填写新图书编号最后还提示: "is not a vaild integer value."
请问这是什么原因引起的呀????????
所以报错!!!!!!可能你的数据字段“图书编号'”取出的值是空值。
procedure TForm3.insbook;
var q:TQuery;
begin
q:=TQuery.create(nil);
q.databasename:=dbname;
q.sql.add('insert into book_info (图书编号,书名,作者,出版社, 出版时间,书价,类别,备注,入库时间,借阅次数) values (:b_no,:b_name,:b_author,:b_publisher,:b_time,:b_momey,:b_type,:b_time,:b_outcount)'); q.parambyname('b_no').asstring:=nobox.text;
q.parambyname('b_name').asstring:=namebox.text;
q.parambyname('b_author').asstring:=authorbox.text;
q.parambyname('b_publisher').asstring:=publisherbox.text;
q.parambyname('b_time').asdate:=pubtimebox.date;
q.parambyname('b_momey').asfloat:=strtofloat(pricebox.text);
q.parambyname('b_type').asstring:=intimebox.text;
q.parambyname('b_outcount').asstring:=outcountbox.text; q.execsql;
q.close;
q.free;
end;
上面是入库的上代码,可当我在form3里面输入相应的值,结果却显示
Debugger Exception Notification :'invalid parameter.'错误,并且
q.close;
高亮显示错误呀,实在搞不懂了
用try 把s 专程int
原来是我下面为insert into 少赋了两个值
看来小弟我还精心了,以后要改改这个坏习惯了^_^