分别用adoquery1,adoquery2连接。并分别显示在grideh1,grideh2中。
当在grideh1中选取一条纪录时。adoquery2在表B中查找B.id=A.id的纪录并显示在grideh2中。并可在grideh2中修改这些记录。
以上这些都可实现,最难的部分在于:
*重点*
adoquery2用的是ltBatchOptimistic模式。并且所有B表中的记录必须在点击一个Btn_save后才能全部更新保存。可是每次在grideh1中选取记录之后。还要求Grideh2中的内容更新。如果上一次的数据没有updatebatch的话。就不会被保存了。如果updatebatch也不行,因为要求必须在最后点按钮时才能全部保存!!!
小弟想了很久,试着用动态创建adoquery的方法解决。但是极不好控制,并且巨耗资源。
23 个解决方案
#1
当grideh1中选取一条纪录时 如果Grideh2中的内容更新了 提示用户保存一次不可以吗?
当grideh1中选取一条纪录时 是不是adoquery2要更换查询语句呢
当grideh1中选取一条纪录时 是不是adoquery2要更换查询语句呢
#2
如果数据量不大,可以一次性用adoquery2.open打开所有记录。
然后采用adoquery2.filter来控制显示的记录。
这样能够满足你的需求。
然后采用adoquery2.filter来控制显示的记录。
这样能够满足你的需求。
#3
up
接分
接分
#4
同意 windindance(风舞轻扬)的做法,
對於數據量大的,只能用 yleiou(生活真痛苦) 的做法了,
沒有什麼不方便的,大家也都是這麼做的。
對於數據量大的,只能用 yleiou(生活真痛苦) 的做法了,
沒有什麼不方便的,大家也都是這麼做的。
#5
to:yleiou(生活真痛苦)
如果是那样就好了,用户就是要求最后统一保存。我也没办法!
to:windindance(风舞轻扬)
请详细一点好吗。谢谢。filter怎么控制?
如果是那样就好了,用户就是要求最后统一保存。我也没办法!
to:windindance(风舞轻扬)
请详细一点好吗。谢谢。filter怎么控制?
#6
grideh2肯定不能通过查询数据库来显示,所以只能另僻溪径,ADOQuery2中取出所有表2中的bookid在adoquery1中出现的记录,这样grideh2来自ADOQuery2而不是数据库中
#7
ADOQuery2.SQL.Text := 'select * From t';
ADOQuery2.Open;
ADOQuery1.AfterScroll:
ADOQuery2.Filter := 'id = ' + VarToStr(ADOQuery1['id']);
ADOQuery2.FIltered := true;
ADOQuery2.Open;
ADOQuery1.AfterScroll:
ADOQuery2.Filter := 'id = ' + VarToStr(ADOQuery1['id']);
ADOQuery2.FIltered := true;
#8
学习帮顶
#9
顶者有分!
#10
关注,我也要编类似的程序,但没这么巨难!学习~~~~~
#11
我试一下!
#12
顶
#13
filter之后,没有提交的数据不会丢失吧
#14
学习
#15
filter 只会对ADO 的缓冲中的数据排序不会丢失数据吧
#16
顶吧。
#17
up
#18
不是明细表的关系吗/
#19
学习
#20
试没试过用事务来解决
#21
帮顶
#22
顶一下
#23
哈哈,终于解决了。用的windindance(风舞轻扬)的方法
先
ADOQuery2.SQL.Text := 'select * From t';
ADOQuery2.Open;
在每次选择时
ADOQuery2.Filter := 'id = ' + VarToStr(ADOQuery1['id']);
ADOQuery2.FIltered := true;
没问题的话就要结贴了
先
ADOQuery2.SQL.Text := 'select * From t';
ADOQuery2.Open;
在每次选择时
ADOQuery2.Filter := 'id = ' + VarToStr(ADOQuery1['id']);
ADOQuery2.FIltered := true;
没问题的话就要结贴了
#1
当grideh1中选取一条纪录时 如果Grideh2中的内容更新了 提示用户保存一次不可以吗?
当grideh1中选取一条纪录时 是不是adoquery2要更换查询语句呢
当grideh1中选取一条纪录时 是不是adoquery2要更换查询语句呢
#2
如果数据量不大,可以一次性用adoquery2.open打开所有记录。
然后采用adoquery2.filter来控制显示的记录。
这样能够满足你的需求。
然后采用adoquery2.filter来控制显示的记录。
这样能够满足你的需求。
#3
up
接分
接分
#4
同意 windindance(风舞轻扬)的做法,
對於數據量大的,只能用 yleiou(生活真痛苦) 的做法了,
沒有什麼不方便的,大家也都是這麼做的。
對於數據量大的,只能用 yleiou(生活真痛苦) 的做法了,
沒有什麼不方便的,大家也都是這麼做的。
#5
to:yleiou(生活真痛苦)
如果是那样就好了,用户就是要求最后统一保存。我也没办法!
to:windindance(风舞轻扬)
请详细一点好吗。谢谢。filter怎么控制?
如果是那样就好了,用户就是要求最后统一保存。我也没办法!
to:windindance(风舞轻扬)
请详细一点好吗。谢谢。filter怎么控制?
#6
grideh2肯定不能通过查询数据库来显示,所以只能另僻溪径,ADOQuery2中取出所有表2中的bookid在adoquery1中出现的记录,这样grideh2来自ADOQuery2而不是数据库中
#7
ADOQuery2.SQL.Text := 'select * From t';
ADOQuery2.Open;
ADOQuery1.AfterScroll:
ADOQuery2.Filter := 'id = ' + VarToStr(ADOQuery1['id']);
ADOQuery2.FIltered := true;
ADOQuery2.Open;
ADOQuery1.AfterScroll:
ADOQuery2.Filter := 'id = ' + VarToStr(ADOQuery1['id']);
ADOQuery2.FIltered := true;
#8
学习帮顶
#9
顶者有分!
#10
关注,我也要编类似的程序,但没这么巨难!学习~~~~~
#11
我试一下!
#12
顶
#13
filter之后,没有提交的数据不会丢失吧
#14
学习
#15
filter 只会对ADO 的缓冲中的数据排序不会丢失数据吧
#16
顶吧。
#17
up
#18
不是明细表的关系吗/
#19
学习
#20
试没试过用事务来解决
#21
帮顶
#22
顶一下
#23
哈哈,终于解决了。用的windindance(风舞轻扬)的方法
先
ADOQuery2.SQL.Text := 'select * From t';
ADOQuery2.Open;
在每次选择时
ADOQuery2.Filter := 'id = ' + VarToStr(ADOQuery1['id']);
ADOQuery2.FIltered := true;
没问题的话就要结贴了
先
ADOQuery2.SQL.Text := 'select * From t';
ADOQuery2.Open;
在每次选择时
ADOQuery2.Filter := 'id = ' + VarToStr(ADOQuery1['id']);
ADOQuery2.FIltered := true;
没问题的话就要结贴了