Delphi 数据库查询TdxDBTreeList记录不显示问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi 数据库查询TdxDBTreeList记录不显示问题相关的知识,希望对你有一定的参考价值。

Dear All:
adoBeautyKind:TADODataSet,
dsBeautyKind:TDataSource,---->adoBeautyKind
gridMain:TdxDBTreeList,---->dsBeautyKind
三者都已关联,dsBeautyKind也SQL到数据,为何gridMain不显示记录?

procedure TfrmBeautyInfo.MainShow;
var
sSql:string;
iRCount:Integer;
begin

StrToTreeField(gridMain,
'KindID,KindName,ClientPCname',
'ID,消费名称,客户端电脑',
'30,150,100');
gridMain.ColumnByFieldName('KindID').Visible := false;
gridMain.Columns[1].SummaryFooterType := cstCount;
gridMain.Columns[1].SummaryFooterFormat := '记录条数: 0';

//////////
ssql :=' SELECT * From Beauty_Kind';
//AdoSetBase2 := adoBeautyKind;
OpenDataSet(adoBeautyKind, ssql);
iRCount := gridmain.DataSource.DataSet.RecordCount;//记录Count为2
ssql:= gridmain.DataSource.DataSet.fieldbyname('KindName').AsString ;
MsgBox(ssql, '提示', MB_OKCancel);//有数据
ShowModal;

end;
function OpenDataSet(ADOConnet: TADOConnection; DataSet: TADODataSet; szSql:
string): Boolean;
begin
result := true;
try
if DataSet.Active = true then
DataSet.Close;
DataSet.CommandType := cmdText;
DataSet.CommandText := szSql;
DataSet.Connection := ADOConnet;
DataSet.Open;
except
result := false;
end;
end;
-----------------------
字段名是有显示的,通过代码StrToTreeField(...)增加了3个字段,并设置了字段名。
iRCount := gridmain.DataSource.DataSet.RecordCount;//运行后得到了记录Count为2
ssql:= gridmain.DataSource.DataSet.fieldbyname('KindName').AsString ;
MsgBox(ssql, '提示', MB_OKCancel);//运行后显示了第一条记录的KindName。
但是,gridmain就是不显示任何记录,只显示3个设置的字段名称!

首先将cxDBTreeList跟数据控件绑定好。

KeyField属性设数据表的主键字段名、ParentField属性设数据表的父id字段名。

然后下面是给cxDBTreeList添加Columns(PS:你的cxDBTreeList没有数据显示估计就是你没有添加Columns的原因):

    双击cxDBTreeList,在弹出的小窗口中Columns选项卡下点右边的Add按钮进行添加,你要显示几列就添加几列吧。

    然后在框里点选Column,在Delphi的Object Inspector里对其进行属性设置,这里主要是设置DataBinding属性下的FieldName属性,设成你要显示的字段名即可。其它Column一样的方法进行设置。

最后,附上效果图仅作参考:

参考技术A 首先回复1楼的回答:
如果不手动添加column,那么默认会显示全部的字段。

这个问题不太好确定原因,你可以看看你的adoBeautyKindt,
dsBeautyKind有没有循环设这,即设置了adoBeautyKindt的datasource属性为dsBeautyKind,dsBeautyKind的dataset属性又设置成adoBeautyKindt
参考技术B 2楼肯定是没有用过cxDBTreeList了,不知道是谁告诉你不手动添加column默认就会显示全部的字段,cxDBTreeList是不会自动添加column的,没有column哪里来显示全部的字段。肯定要添加Columns的,要么双击控件添加,要么代码里面动态添加,不添加Columns就没有记录显示那是肯定的,不用多说了。

2楼是把DBGrid跟cxDBTreeList混淆了吧。

如何查询 Delphi 组件面板?

【中文标题】如何查询 Delphi 组件面板?【英文标题】:How can I interrogate the Delphi component palette? 【发布时间】:2010-11-24 14:23:54 【问题描述】:

我安装了很多组件 - 麻烦在于,当我想找到一个我很少使用的组件时,需要很长时间才能找到它。我可以查看列出所有组件的 ALL 选项,但找到一个标题中带有“网格”的选项仍然非常耗时。是否有标题数据库或(最好)我可以查询和搜索的文本文件?

【问题讨论】:

【参考方案1】:

Delphi 的哪个版本?在最近的版本中,只需单击调色板顶部并键入“网格”。 Ctrl-Alt-P 将聚焦调色板,然后您就可以开始输入了。

在 RAD2009 和 RS2010 中,执行此操作,它将找到标题中任何位置带有“网格”的所有组件。

【讨论】:

@LachlanG:感谢您提供的详细信息 - 我的回答并没有提出其他建议,是吗?【参考方案2】:

试试DDevExtensions 1.61,它增加了为Delphi 5 及更高版本搜索组件的功能,以及IDE 的其他许多改进。

【讨论】:

感谢 DDevExtensions 是一种享受。在 Delphi7 中,我无法使用 CTRL ALT P 或单击调色板顶部来执行任何操作。谢谢大家【参考方案3】:

由于您没有指定 Delphi 的哪个版本...

1) 在旧版本(D7 及之前)中,您可以右键单击组件选项板以查看属性。这将显示您已安装的所有组件,一次一页。它不可搜索,但至少列表显示了每个组件的名称和包,因此比在每个单独的组件上使用弹出提示更容易。

2) 在Delphi 7 中,您可以选择View|Component List,这会显示所有组件的可搜索字母列表。不幸的是,它只匹配组件名称的第一部分。 “新”工具面板的第一个版本也有同样的限制。

3) DDevExtensions(免费)允许在旧组件调色板 (D5-D7) 中进行部分字符串匹配,并在较新版本的 Delphi(D2005 及更高版本)中恢复旧调色板。它也包含在 Delphi 2010 中,供喜欢这种风格的人使用。我喜欢 Delphi 7 中搜索的工作方式,但在 Delphi 2010 中,过滤对我来说似乎有点尴尬。它过滤组件和调色板页面,但如果您在多个页面上有匹配的组件,它们不会同时显示。您仍然需要单击每个单独的页面。

4) 我的最爱。我更喜欢新的工具面板(Delphi 2005 及更高版本)。非常可配置,让我可以查看组件名称、一次在多个页面上显示组件、可停靠等。

底线。如果您没有或不喜欢新的工具面板,请获取 DDevExtensions。

【讨论】:

另外,DDevExtensions 是免费的!【参考方案4】:

Delphi 2005之前:安装DDevExtensions,然后选择Tools -> DDevExtensions Options -> Component Selector -> 勾选“Active”框,点击OK

Delphi 2005 及更高版本:在组件面板中单击并输入所需的名称。

【讨论】:

谢谢。从来不知道这个。在 D2007 上效果很好。【参考方案5】:

使用GExperts - 他们很有帮助。

【讨论】:

以上是关于Delphi 数据库查询TdxDBTreeList记录不显示问题的主要内容,如果未能解决你的问题,请参考以下文章

delphi sql查询

delphi 数据库查询显示问题

delphi SQL查询并显示

Delphi多线程数据库查询(ADO)

怎样在delphi取 dbgrid的一列值来进行二次查询?

如何查询 Delphi 组件面板?