2013-03-21 84 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