2013-03-21 86 views
1

我已經做了一些搜索,找不到一個明確的答案。使用多個SQL查詢

我剛剛進入SQL,所以要溫柔。使用D5,TNTUnicode,Zeos和SQLite3

我有一個DBGrid與tblAccounts中顯示的所有帳戶名稱。 我有一個DBGrid與tblFolders中顯示的所有文件夾。

在帳戶電網的OnCellClick我有一個SQL查詢

qryFolders.Close; 
qryFolders.SQL.Clear; // Not really needed as I am assigning the Text next - but :) 
qryFolders.SQL.Text:= 
    'SELECT Folder FROM tblFolders WHERE UPPER(Account)="FIRSTTRADER"' 
qryFolders.ExecSQL; 
tblFolders.Refresh; 

在我的應用程序,什麼也沒發生,我仍然有文件夾可見的完整列表。

在SQL-Expert桌面該行正常工作並只顯示與該帳戶關聯的兩個文件夾。在該應用它不斷通過OnCellClick它顯示了正確的文本等

我要去哪裏錯了顯示文件夾

如果我步驟的完整列表?

感謝

+0

什麼是qryFolders和tblFolders之間的連接(如果有的話)? qryFolders可能會得到一個新的數據集(雖然我不確定你的查詢),但是你刷新了tblFolders。 – 2013-03-21 16:18:32

+3

'ExecSQL'是一種執行'insert' /'update'或其他不返回遊標的SQL語句的方法。 'select'語句上的'ExecSQL'是無用的,因爲你通常想獲得返回的遊標。 – jachguate 2013-03-21 16:23:54

+1

更好地解釋你想要完成什麼;) – jachguate 2013-03-21 16:25:52

回答

3

如果你想顯示一個主從(帳號爲主機,文件夾詳細信息),所以我們從這裏開始:

// connecting the grids 
AccountsDataSource.DataSet := tblAccounts; 
AccountsGrid.DataSource := AccountsDataSource; 

FoldersDataSource := tblFolders; 
FoldersGrid.DataSource := FoldersDataSource; 

// retrieving the data 
tblAccounts.Open; 
tblFolders.Open; 

這應該反映,你已經擁有。現在讓我們轉到Master-Detail。

很明顯,所有的查詢和表組件都有一個有效的連接集,所以我將把它留下。

首先要肯定的是,查詢不活躍

qryFolders.Active := False; 

具有主詳細查詢的詳細信息,我們必須設置MasterSource

qryFolders.MasterSource := AccountsDataSource; 

,之後我們就可以使用參數設置查詢以鏈接到來自MasterSource的字段。在的MasterSource鏈接到外地Account通過使用:Account

qryFolders.SQL.Text := 
    'SELECT Folders FROM tblFolders WHERE UPPER(Account) = :Account'; 

done現在,我們已經準備好檢索數據

qryFolders.Open; 

在此之前,我們將不會看到FoldersGrid任何改變,因爲我們沒有告訴任何人這樣做。現在,讓我們得到這個與

FoldersDataSource.DataSet := qryFolders; 

工作在你的方法,你沒有Open查詢和你沒有查詢鏈接到電網。


另一種選擇是使主 - 明細無需單獨的查詢。 (似乎有一些代碼重構,所以我想這是一個工作示例)

tblFolders.MasterSource := AccountsDataSource; 
tblFolders.MasterFields := 'Account'; 
tblFolders.LinkedFields := 'Account'; 

參考:

+0

Rufo爵士,謝謝你的細節。我真的很感激。我很久以前玩過Master Detail的東西,但在挫折中放棄了。有了這個輪廓,我相信我會走在路上。非常感謝花時間。 – user2175495 2013-03-21 19:34:27

+2

不客氣。對SO進行讚賞與upvoting工作,如果答案滿足你的問題,你應該接受它 – 2013-03-21 19:42:15