奇怪的数据库问题,高手请进!!(100分)

  • 主题发起人 主题发起人 netboyrock
  • 开始时间 开始时间
N

netboyrock

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库用的是visual forpro,程序片断如下:
table1.first;
repeat
(Findcomponent(Table1.FieldByName('mc').AsString) as TLabel).Left:=strtoint(table1.fieldbyname('x1').asstring);
(Findcomponent(Table1.FieldByName('mc').AsString) as TLabel).Top:=strtoint(table1.fieldbyname('y1').asstring);
table1.next;
until
Table1.EOF;
运行后出现..class eaccessviolation with message 'acessviolation at address xxxxx in mudule'....exe' read if address xxxxx process stopped 错误
如取消repeat语名,重复多次findcomponent和table1.next 语句则程序通过,也能顺利读出数据

请教各路高手!!!
 
repeat....until之间包含多个语句,应加上begin....end
 
试了,不行,兄弟
 
怎么回事,没人懂吗??
 
换成
while not table1.eof do
begin
...
next;
end;
试试
 
试试:(我自己还没有试过)
table1.first;
while not table1.EOF do
begin
(Findcomponent(Table1.FieldByName('mc').AsString) as TLabel).Left:=strtoint(table1.fieldbyname('x1').asstring);
(Findcomponent(Table1.FieldByName('mc').AsString) as TLabel).Top:=strtoint(table1.fieldbyname('y1').asstring);
table1.next;
end;


While 是先判断,然后再进行操作,
Repeat是先做一次,再开始判断,至少要执行一次。
(记录为空的时候会出问题,因为一次也不要做)
(While和Reapeat的语法记的很模糊,我有说错的地方请原谅)
 
谢谢lnboy,这个我一开始就试了,还是不行!!
 
你用什么连foxpro的?
如果用bde那么换ado试试, 如果是ado那么换bde试试 [:)]
 
用bde,不过不是这个原因吧!!!
 
呵呵,不过还是谢谢你,我明天换个平台再试试
还想问一句,有人解决这个问题吗??
 
我刚又试了一遍,如果数据库记录不超过10就没有问题,超过就报错,有谁知道究竟是怎么回事??
 
我找到问题答案,还是谢谢各位,加分喽!!!
 
后退
顶部