谁能帮我!我实在是不知道该怎么做了!

shunv 2000-01-11 02:51:00
程序是这样的:
if not dmZu.dsDep.DataSet.IsEmpty then
begin
dmZu.dsDep.DataSet.Close;
dmZu.dsDep.DataSet.Open;
dmZu.tbDep.First;
while not dmZu.tbDep.Eof do
begin
aDepID:=dmZu.tbDep.FieldByName('DEPT_ID').AsInteger;这段程序的死循环就在这里;
aSupID:=dmZu.tbDep.FieldByName('SUP_DEPT_ID').AsInteger;
if dmZu.tbDep.FieldByName('DEPT_ID').AsInteger=0 then
begin
Child1:=TV.Items.AddChild(TreeNode1,dmZu.dsDep.DataSet.FieldByName('DEPT_NAME').AsString);
.
.
.
dmZu.dsP_D.DataSet.First;
while not dmZu.dsP_D.DataSet.Eof do
begin
if dmZu.dsP_D.DataSet.FieldByName('DEPT_ID').AsInteger=aDepID then
begin
aPosID:=dmZu.dsP_D.DataSet.FieldByName'POSITION_ID').AsInteger;
if dmZu.dsPos.DataSet.Locate('POSITION_ID',aPosID,[loCaseInsensitive]) then
sPos:=dmZu.dsPos.DataSet.FieldByName('POS_NAME').AsString;
TV.Items.AddChild(Child1,sPos);
end;
dmZu.dsP_D.DataSet.Next;
end;
end else
begin
.
.
end;
dmZu.tbDep.Next;
end;
end;
我是过了用dataset ,table 都不可以;我用断点调试,在执行了dmZu.tbDep.Next;这句后,数据库的指针还是指向第一条记录.在这之前没有对该dataset的操作.只有对其他dataset的操作,但是于它没有关系.谁可以告诉我,这还可能是由于什么原因?我是没有办法了,这个问题已经困扰了我两天了.谢谢!
...全文
194 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
barton 2000-01-13
  • 打赏
  • 举报
回复
这事与表间关系没有关系,我认为最有效率的做法是:
1.数据集用一个带排序的查询实现;
2.数据集只需从头到尾扫描一遍;
3.每生成一个结节,在结点处的DATA中连接一个对象(或者一个ID号)
4.生成新结点时通过已生成的结点所带的对象或ID号找出父结点.
Venne 2000-01-11
  • 打赏
  • 举报
回复
如果设置了主从关系的话,那么当主表移动到一定位置时,子表会自动更新记录集,你的这个表是不是别的什么表的子表呢?
shunv 2000-01-11
  • 打赏
  • 举报
回复
在程序里没有引用完整性.但是在数据库中,有其他的表和他又参照关系,这有影响吗?
Venne 2000-01-11
  • 打赏
  • 举报
回复
你有没有其他表与这个表有引用完整性或者设置了主从关系,比如MASTERSOURCE什么的,最好能看看你的源码?KXY说得对,把其它东西过滤掉再看一下.
kxy 2000-01-11
  • 打赏
  • 举报
回复
把其它的注释掉,只留下
Table.First
while not Table.Eof do
begin
其它Table的while;
Table.Next;
end;
试试
kxy 2000-01-11
  • 打赏
  • 举报
回复
源码好像没有问题
Implements a generic method to position the cursor on the next record in the dataset.

procedure Next;

Description

Do not call Next at the TDataSet level. In TDataSet descendants, call Next to position the cursor on the next record in the dataset and make it the current record. Next posts any changes to the current record and:

?Sets the Bof and Eof properties to False.
?Calls a virtual, abstract method to move to the next record, position the cursor on it, and make it the current record. For TDataSet this method is only declared, not implemented.
?Fetches any additional records required for display, such as those needed to fill out a grid control. In TDataSet this method calls another virtual, abstract method that is only declared, not implemented.
?Sets the Eof properties to True if the cursor was already on the last record in the dataset.

?Triggers an event handler for dataset scrolling events.

kxy 2000-01-11
  • 打赏
  • 举报
回复
请把Source发到kxy@csdn.net
性能测试是一个很有前途但又很没前途的职业,很有前途是因为的好能带来高收益,能解决项目和系统的很多疑难问题,甚至是大问题(现实中有多少系统崩溃的悲惨案例,造成的损失很多时候让人承受不起),而优秀的性能测试工程师实在太稀缺了;但性能测试又很没前途,懂点软件测试的,都想拿着压力工具来试一把(然后说自己过性能测试),实际又有多少公司常年有不完的性能测试项目?市场需求量真有那么大吗?可以说,性能测试没前途,原因是因为我们当中很多人是半桶水,甚至连入门都不算,这样的人来性能测试, 这项工作能有前途吗?所以,我们要改变,要让这个有价值的工作真正变成有前途(+钱途),要让性能测试不再是走过场,实打实的能解决问题,能给整个团队带来效益。讲师介绍:郑光华,网名smooth(CSDN上能看到我的博客),从事软件开发和测试工作15年,有多年的技术管理经验,现当任高级性能测试工程师 / 软件测试架构师,热爱性能测试和自动化测试工作,喜欢研究新技术,勤于总结,热于分享,希望通过培训课程输出自己的知识。课程内容:听完这个课程,你将会用不一样的视角,全面而系统的看待性能测试,从基础概念,到性能需求与设计,到性能测试工具原理,到性能监控及工具,到性能定位分析的掌握,都将会有完整而全新的认识,课程虽然不多,总共10节课(每节课25到40多分钟),但浓缩了很多性能测试知识的精华。课程重点是强调方法论和扩展思维视角(我们从思维的高度去理解和掌握性能测试,而不是从工具细节上去狭隘的了解性能测试工作),这个课程让初入性能测试的新人或是多年野蛮生长的老人,都能在思维和方法上更前进一步,为日后的项目工作提供有益助,在思想上向中、高级性能测试工程师看齐。现在就欢迎大家来接受洗脑吧,通过这个课程我们来完成一次性能测试知识的全面答疑和解惑。    本课程的整体知识结构如下图所示:

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧