我已经做了一些搜索,并不能找到一个明确的答案,这一个。
我刚刚进入SQL所以要温柔。 利用D5,TNTUnicode,和的Zeos SQLite3的
我有在tblAccounts表现的帐号名字一个DBGrid。 我有一个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-专家桌面该行正常工作 ,并与帐户相关联只显示两个文件夹。 在该应用它不断显示文件夹的完整列表
如果我通过OnCellClick加强它显示了正确的文字等。
我要去哪里错了?
谢谢
如果你想显示一个主从(帐户作为主,文件夹详细信息),所以我们从这里开始:
// connecting the grids
AccountsDataSource.DataSet := tblAccounts;
AccountsGrid.DataSource := AccountsDataSource;
FoldersDataSource := tblFolders;
FoldersGrid.DataSource := FoldersDataSource;
// retrieving the data
tblAccounts.Open;
tblFolders.Open;
这应该反映,你已经拥有。 现在让我们进入了主从。
这应该是显而易见的,所有的查询和表组件有一个有效的连接设置,所以我就离开了这一点。
首先可以确定的是,查询不活跃
qryFolders.Active := False;
具有主详细查询的详细信息,我们必须设置MasterSource
qryFolders.MasterSource := AccountsDataSource;
之后,我们可以设置与参数的查询链接到从的MasterSource领域。 链接到外地Account
中的MasterSource是通过使用完成:Account
qryFolders.SQL.Text :=
'SELECT Folders FROM tblFolders WHERE UPPER( Account ) = :Account';
现在,我们已经准备好检索数据
qryFolders.Open;
在此之前,我们将不会看到任何变化FoldersGrid
,因为我们没有告诉过任何人这样做。 现在,让我们这个一起工作
FoldersDataSource.DataSet := qryFolders;
在你的方法,你没有Open
的查询和你没有查询链接到电网。
另一种选择是有一个主从没有一个单独的查询。 (这似乎有一些代码重构,所以我想这是一个工作示例)
tblFolders.MasterSource := AccountsDataSource;
tblFolders.MasterFields := 'Account';
tblFolders.LinkedFields := 'Account';
参考:
- SourceForge上ZTestMasterDetail.pas (见行181ff)
- SourceForge上ZDataset.pas