dbgrideh在主从表中,增加时只能显示一行,不知道怎么弄了? ( 积分: 88 )

  • 主题发起人 主题发起人 cooldren
  • 开始时间 开始时间
C

cooldren

Unregistered / Unconfirmed
GUEST, unregistred user!
主表 order
id name
01 AAAA
02 BBBB

从表 orderDetail
id orderid name
01 01 DDDD
02 01 EEEE

ADOTable:=ltBatchOptimistic;

现在的问题是:
从表dbgrideh中,输入一行资料后,点增加一行,刚才输入的那一行就不显示了,但是保存后又能显示出来,也就是说在输入状态下,看不见,但是可以保存的。

不知道要怎么设置一下?

如果不是主从表,光是一个表的话,在DBGridEh中就可以在输入时显示几个记录。
 
增加的时候不要清空,写条SQL语句把新添加的记录写出来,刷新以下
 
看了你的问题,我思考了一下,提出我的看法:
在正常情况下,不应该出现你的现象,
我想你的问题可能出在程序的其他地方,
在增加一条记录的时候你在某个地方刷新了一下后台数据库,导致你
无论输入多少行,只能看到最后一次输入的行,
但点保存后就都能显示出来了,那是因为你设置了
ADOTable.lockType:=ltBatchOptimistic;
一保存的时候,把缓存在内存中,前面几次输入的数据批量提交到数据库了,
所以都能显示出来了。
如果你把ADOTable.lockType:=ltOptimistic我不相信还会有你这问题;
解决的方案:刷新了一下后台数据库的这个地方改一改。
 
ADOTable.lockType:=ltOptimistic 也不行的
窗口也没什么代码
两个adotable tbl,tbldetail tbldetail是从的,两个detasource,dbgrideh与tbldetail一连,

增加:
tbl.Append;
tbl.FieldByName('id').AsString:=orderid();
tbl.FieldByName('employee').AsString:=FrmMain.sLoginName;
tblDetail.Append;
保存:
tbl.UpdateBatch(arAll);
tbldetail.UpdateBatch(arAll);

这个问题搞了两天了,兄弟帮帮忙啊!
 
主表在增加状态下出现如上问题

如果主表在编辑或正常状态下,从表正常,增加多少条,dbgrid中显示多少条
 
重写ADO的sql语句刷新一下就行了
 
多人接受答案了。
 
后退
顶部