焦急!(100分)

  • 主题发起人 主题发起人 lizheng
  • 开始时间 开始时间
L

lizheng

Unregistered / Unconfirmed
GUEST, unregistred user!
var

j:integer;

begin

datamodule2.Table2.delete;

datamodule2.Table1.First;

for j:=1 to datamodule2.Table1.RecordCount do

begin

if datamodule2.Table1.FieldByName('光盘编号').AsInteger=
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
datamodule2.Table2.FieldByName('光盘编号').AsInteger then
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
begin

datamodule2.Table1.delete;

end;

datamodule2.Table1.Next;

end;

end;


他们都是由inttostr(form3.edit1.text)赋的值

但datamodule2.Table2.FieldByName('光盘编号').AsInteger总是为0,

datamodule2.Table1.FieldByName('光盘编号').AsInteger为正确的值,
即inttostr(form3.edit1.text)。

请各位打下帮忙看看。


 
查看一下
datamodule2.Table2.delete;
之前是不是到了最后一条记录
另外你想完成什么功能,写清楚一点好吗?
 
把源码贴详细些!
 
datamodule2.Table2.delete;
//~~~~~~~~~~~~~~~~~~~~~~~~~~ 删除后, Table2的记录指针没有移动, 需要再
//定位记录指针


datamodule2.Table1.First;
while not datamodule2.Table1.eof do
begin

if datamodule2.Table1.FieldByName('光盘编号').AsInteger=
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
datamodule2.Table2.FieldByName('光盘编号').AsInteger then
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
begin

datamodule2.Table1.delete;
//~~~~~~~~~~~~~~~~~~~~~~~~~~ 删除后, Table2的记录指针没有移动,
//需要再定位记录指针

end;

datamodule2.Table1.Next;

end;
 
SeaSky:
你说的道理不错,可是他未必是要到第一条记录呀?
datamodule2.Table2.delete;
datamodule2.Table1.Next;//根据需要也可能是前一条记录,当然,如果保险,还应该检查是否table2.eof,table2.bof否则都为0

 
datamodule2.Table2.delete;
该语句为删除当前的记录,后面的记录编号自动更新前提,记录指针依然为该位置,
当然就不会有指针的变化啦!
 
:CJ
Jams说的对,那一段应该是
if datamodule2.Table1.FieldByName('光盘编号').AsInteger=
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
datamodule2.Table2.FieldByName('光盘编号').AsInteger then
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ begin
datamodule2.Table1.delete;
end
else
datamodule2.table1.next;
问题是在第一个datamodule2.table2.delete,那是干什么用的,删除记录不
定位,那可能是在TABLE1中查询有没有TABLE2中的记录,没有删除。
 
是否在做主从表的删除工作(主表和明细表)
一般应先删除明细表的记录,根据你的代码应
先删除tabel1,等它删除完了再删除主表的记录

 
我考虑了,的确应该first:-)虽然效率低点,要么是prior,没试过

您加个ELSE做什么呢?删不删都要往下走的呀?没弄错,他是要删所有
两表中一样的记录吧?实际上一条SQL应该可以的吧。不过LOCAL SQL
是否支持就不晓得了

jams说的对?
>后面的记录编号自动更新前提,记录指针依然为该位置,
这不明明是说,当前指针指的就是那条被删除记录的下一条吗?
有所谓记录编号吗?
>当然就不会有指针的变化啦!
什么呀?

 
我先回去试试,请各位打下千万别走开。
 
后退
顶部