主/细表中在细表中append时出现'at begin ning of table' or 'at end of table'错误(50分)

  • 主题发起人 主题发起人 TNT
  • 开始时间 开始时间
T

TNT

Unregistered / Unconfirmed
GUEST, unregistred user!
使用了TwwTable,用masterSource,masterkey连接
Sorry,我是新手。
 
现在发现在细表的RecordCount=0时使用第一条用Tabble.Edit
其他使用Table.append没问题。
 
我遇见这样的问题,主要的原因是当在细表中增加记录时,其中包含的关键字在主表中不存在,即产生这样的问题,道里上也很简单,主表不允许细表增加他没有关键字的记录。
 
yh说的对,
>细表的RecordCount=0时使用第一条用Tabble.Edit
>其他使用Table.append没问题。
这是因为当RecordCount为0时,table中缺省是有一条空记录的。
这个你可在DBD中看一看。
 
在细表的TWWTABLE的ONNEWRECORD中添加设置细表的LINK字段值就可以了
 
可以用SQL在细表中添加有关键字的记录,再Edit就可以了。
 
我使用的数据库是Access 97 ,使用BDE连接,在细表的OnNewRecord中
加入wwTableItems.FieldByName('OrderID').AsInteger:=
wwTableOrder.FieldByName('OrderID').AsInteger;
细表增加的orderid在主表中已存在,当细表中没有记录时添加发生以上
错误,大概是由空记录造成的。
有好的解决的方法吗?用SQL麻烦,因为我都使用表。在程序中使用
wwdbNavigator添加,删除记录。
 
另建tmptable, tmptable.tablename:='tableItems' , tmptable.active:=false;
addnewitems_click时:
tmptable.active:=true;
tmptable.insert;
tmptable.FieldByName('OrderID').AsInteger:= wwTableOrder.FieldByName('OrderID').AsInteger;
tmptable.post;
tmptable.active:=false;
wwTableItems.refresh;
wwTableItems.Last;
wwTableItems.edit;
...............
wwtableitems.post;
 
cytown:
我看了你写的程序,知道了方法,用临时表插入不太好,
我的程序中有3个细表,当记录多时不好处理,不是浪费资源,就是损失速度。
还是告我SQL的方法。
 
SQL 方法很简单:

query1.active:=false;
query1.sql.clear;
query1.sql.add('insert tableItems (OrderID) values (' + wwTableOrder.FieldByName('OrderID').AsString + ')');
isSuccess:=true;
try
query1.execsql;
except
isSuccess:=false;
end;
if isSuccess then
begin
wwTableItems.refresh;
wwTableItems.Last;
wwTableItems.edit;
...............
wwtableitems.post;
end
else
showmessage('can not execute the sql');
 
多人接受了答案
 
多人接受答案了。
 
后退
顶部