我想製作兩個數據集,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. 是否有可能將記錄數組作爲記錄字段?
- 4. 是否有可能得到平均Berkeley DB的記錄大小
- 5. 是否有可能將所有的Perforce歷史記錄導入到窯爐
- 6. 是否有可能找到通過TestFlight
- 7. 是否有可能找到一個對象的所有關聯記錄整合在Rails中的記錄4
- 8. RecordsetClone.RecordCount只記錄可見的記錄 - 不是那些可以滾動到
- 9. 是否有可能使一個wxDataViewCtrl atuo滾動到buttom?
- 10. 是否有可能將Tridion SP1 HR#1回滾到Tridion SP1
- 11. 是否有可能將日誌記錄添加到java 8中的removeIf?
- 12. 找出UITableView是否滾動到頂部
- 13. 找出ListView是否滾動到上?
- 14. 是否有可能在clojure中記錄記錄中的字段?
- 15. 是否有可能將Selenium Webdriver測試結果記錄到Quality Center?
- 16. 是否有可能將望遠鏡重定向到子目錄
- 17. 是否有可能找到某人是否查看網頁源
- 18. 即使滾動功能被禁用,是否可以平滑滾動到網頁的一部分?
- 19. SQL有可能找到重複的記錄嗎?
- 20. MYSQL:是否有可能將多行記錄串聯成一行
- 21. 是否有可能回滾到jcr中的時間戳?
- 22. Algolia沒有找到記錄
- 23. PHP - 沒有找到記錄
- 24. 是否有可能找到所有未使用的CSS?
- 25. 是否可以將ListView滾動到Listrow的子元素?
- 26. Node.JS |是否有可能將自己移動到背景?
- 27. 是否有可能將動態值添加到@ Html.ActionLink參數
- 28. 是否有可能將事件動態添加到元素
- 29. 404如果沒有找到記錄 - 如何檢查記錄是否存在?
- 30. 即使沒有找到記錄,也可以返回所有參數
您是否試過讓DS2使用與DS1相同的ADO RecordSet對象? – MartynA
@MartynA不,實際上我並不熟悉這個技巧。 – saastn
@saastn你的意思是如果record1中的DS1 DS2也應該在record1中? – Sami