我想制作两个数据集,DS1
和DS2
,同时滚动。这些实际上是在具有不同字段的同一张表上查询的结果。第一个用于用户界面,有很多计算字段,第二个是一个简单的可编辑数据集,只有很少的数据字段。我希望两个数据集都具有相同的活动记录ID
。所以,因为我假设DS1
记录集是DS2
的子集,我只需拨打DS2.Locate
,DS2.AfterScroll
即可。但是我的假设在技术上可能会被违反(由于配置错误)。所以我想在DS2
没有相应的记录时中止DS1
的滚动过程。通过滚动过程,我的意思是更改活动记录DS1
并解雇DS1.AfterScroll
。是否有可能找到CustomADODataSet即将滚动到的记录?
0
A
回答
1
下面应该做我理解你的意思,换句话说DS2的活动记录跟踪DS1的活动记录。该示例使用Sql Server的MS演示pubs
数据库的 authors
表。理想情况下,它会有一个整数主键ID列,但不幸的是authors
没有。
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
DS1: TADOQuery;
DS2: TADOQuery;
DataSource1: TDataSource;
DataSource2: TDataSource;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
DBNavigator1: TDBNavigator;
DBNavigator2: TDBNavigator;
procedure DS1AfterScroll(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
protected
DS2au_id,
DS2au_lname,
DS2au_fname : TStringField;
public
end;
[...]
procedure TForm1.DS1AfterScroll(DataSet: TDataSet);
begin
if DS2.Active then
DS2.Locate('au_ID', DS1.FieldByName('au_ID').AsString, []);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DS1.SQL.Text := 'select * from authors';
DS2.SQL.Text := 'select au_id, au_name, au_fname from authors';
DS1.Open;
DS2au_id := TStringField.Create(Self);
DS2au_id.FieldName := 'au_ID';
DS2au_id.Size := 11;
DS2au_id.DataSet := DS2;
DS2au_lname := TStringField.Create(Self);
DS2au_lname.FieldName := 'au_lname';
DS2au_lname.Size := 40;
DS2au_lname.DataSet := DS2;
DS2au_lname := TStringField.Create(Self);
DS2au_lname.FieldName := 'au_fname';
DS2au_lname.Size := 20;
DS2au_lname.DataSet := DS2;
DS2.Recordset := DS1.Recordset;
end;
如果你做这种方式,回答您的问与答
是否有可能发现CustomADODataSet即将滚动到记录?
是你不需要。
+0
嗯,这是一个有趣的技术,但并没有解决我的问题。我真的需要使用两个独立的数据集。但在你的解决方案中,两个数据集都有相同数量的记录,'DS2'只能有'DS1'中存在的字段。即使没有DS2.SQL.Text:= ...行,你的代码行为也是一样的。 – saastn
相关问题
- 1. 是否有可能将html传递到Gojs的滚动表中?
- 2. 是否有可能将记录数组作为记录字段?
- 3. 是否有可能得到平均Berkeley DB的记录大小
- 4. 是否有可能将所有的Perforce历史记录导入到窑炉
- 5. 是否有可能将Tridion SP1 HR#1回滚到Tridion SP1
- 6. 是否有可能将日志记录添加到java 8中的removeIf?
- 7. 找出ListView是否滚动到上?
- 8. 是否有可能在clojure中记录记录中的字段?
- 9. 是否有可能将Selenium Webdriver测试结果记录到Quality Center?
- 10. 即使滚动功能被禁用,是否可以平滑滚动到网页的一部分?
- 11. 是否有可能找到某人是否查看网页源
- 12. 是否有可能回滚到jcr中的时间戳?
- 13. Algolia没有找到记录
- 14. PHP - 没有找到记录
- 15. 是否有可能找到所有未使用的CSS?
- 16. Node.JS |是否有可能将自己移动到背景?
- 17. 是否有可能将动态值添加到@ Html.ActionLink参数
- 18. 是否有可能将事件动态添加到元素
- 19. 即使没有找到记录,也可以返回所有参数
- 20. 是否有可能在mysql中选择从n到n + 10的记录范围?
- 21. 是否有可能有多个部分的记录?
- 22. 是否有可能检测到Java中是否有类可用?
- 23. 是否可以将按钮添加到滚动视图?
- 24. 是否可以将滚动条从容器移出到文档?
- 25. 任何表中都没有找到索引 - 是否有可能?
- 26. 是否有可能找到依赖同义词的对象?
- 27. 是否有可能找到不跟随定位符的元素?
- 28. 是否有可能找到另一个Android手机的位置?
- 29. 是否有可能在Windows的Vim中找到unicode字符串?
- 30. 是否有可能找到按下特定命令的按钮?
您是否试过让DS2使用与DS1相同的ADO RecordSet对象? – MartynA
@MartynA不,实际上我并不熟悉这个技巧。 – saastn
@saastn你的意思是如果record1中的DS1 DS2也应该在record1中? – Sami