因为在已作的程序中出现“access violation at address 00000000”错误:访问了无效的地址,并只能查到前二条记录,第三条的记录即为空了,第四条时即显示数据库关闭,为此以以上的代码单独作一窗休中,也出现了"connot perform this operation on a closed dataset",一步步查之后,问题点在next代码上,但是对于数据库有showmessage函数查,却显示只能查到前二条记录,第三条的记录即为空了,第四条时即显示数据库关闭(我有10条记录在里面);但是确认数据库连接是没有问题的,原代码如下:
procedure tform1.addclass(ald:integer;fathernode:ttreenode);
var
mynode:ttreenode;
begin
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from tb1');
sql.Add('where fatherid='+inttostr(ald));
open;
showmessage(fieldbyname('cname').asstring);
while not eof do
begin
mynode:=treeview1.Items.AddChild(fathernode,fieldbyname('cname').AsString);
addclass(fieldbyname('autoid').AsInteger,mynode);
next;
end;
free;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
self.addclass(0,nil);
end;
end.
以上请大家帮一帮手,三天了,我都没有办法找到解决的办法,不知调那里才行;急啊
access:字段有三个:autoid(自动编号);cname(文本);fatherid(数字)
procedure tform1.addclass(ald:integer;fathernode:ttreenode);
var
mynode:ttreenode;
begin
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from tb1');
sql.Add('where fatherid='+inttostr(ald));
open;
showmessage(fieldbyname('cname').asstring);
while not eof do
begin
mynode:=treeview1.Items.AddChild(fathernode,fieldbyname('cname').AsString);
addclass(fieldbyname('autoid').AsInteger,mynode);
next;
end;
free;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
self.addclass(0,nil);
end;
end.
以上请大家帮一帮手,三天了,我都没有办法找到解决的办法,不知调那里才行;急啊
access:字段有三个:autoid(自动编号);cname(文本);fatherid(数字)
解决方案 »
- delphi用ado组件连接sql server2005,哪位有这方面的视频没
- 100分求助------ClientDataSet提交数据失败
- 如何捕获ClientSocket连接是否成功???
- 我的clientupdate不能更新数据
- 我要更新一个表的所有记录,为什么进入了死循环(在线等待中)
- 在SpeedButton1中Caption的文字怎么换行显示
- 公司将上新项目,主要用VB和JAVA,我要换工具了。散分,感谢大家无私的帮助!
- 急 急 求高手帮忙
- 关于FastReport打印存放路径的图片(急)-谁帮忙处理下
- 我的程序用ADO连接服务器端SQLSERVER,请问在客户端必须安装SQLSERVER吗?
- devexpress中那个组件具有TreeComboBox功能?
- 怎么在DBGRIDEH中新增一行时设置其某个字段的默认值???
这里就是错误信息标记
var
mynode:ttreenode;
adoQr:TAdoQuery;
begin
try
AdoQr:=TAdoQuery.Create(nil);
with adoQr do
begin
close;
Connection:=AdoConnection1;
sql.Clear;
sql.Add('select * from tb1');
sql.Add('where fatherid='+inttostr(ald));
open;
// showmessage(fieldbyname('cname').asstring);
while not eof do
begin
mynode:=treeview1.Items.AddChild(fathernode,fieldbyname('cname').AsString);
addclass(fieldbyname('autoid').AsInteger,mynode);
next;
end;
//free;
end;
finally
AdoQr.Free;
end;
end;
begin
mynode:=treeview1.Items.AddChild(fathernode,fieldbyname('cname').AsString);
addclass(fieldbyname('autoid').AsInteger,mynode);
next;
end;
free; //这里的问题
end;递归调用有问题,