Delphi 调整TDbGrid

Delphi 调整TDbGrid,delphi,tdbgrid,Delphi,Tdbgrid,我在DB感知控件中迈出了第一步(有好的教程吗?) 我有一个包含6列的MySql表,并设法将其加载到TDbGrid中 但是,其中一列是另一个表的索引。它是一个条形码,我不想显示它,而是想显示与之关联的产品名称 我该怎么做 (我可以把左边的“边沟”(?)隐藏起来吗?它显示的是当前行?) 谢谢使用查询代替表格。然后,使用联接选择产品名称,如下所示: SELECT t.*, p.name FROM YourTable t INNER JOIN Product p on p.barcode

我在DB感知控件中迈出了第一步(有好的教程吗?)

我有一个包含6列的MySql表,并设法将其加载到TDbGrid中

但是,其中一列是另一个表的索引。它是一个条形码,我不想显示它,而是想显示与之关联的产品名称

我该怎么做

(我可以把左边的“边沟”(?)隐藏起来吗?它显示的是当前行?)


谢谢

使用查询代替表格。然后,使用联接选择产品名称,如下所示:

SELECT
  t.*,
  p.name
FROM
  YourTable t
  INNER JOIN Product p on p.barcode = t.barcode
我使用t.*,因为我不知道确切的列。实际上,我不会使用
select*
,而是指定特定的列。如果仍要使用
*
,可以通过将数据集/查询中的TField对象的Visible属性设置为
False
来隐藏特定列

我不知道您正在使用哪些组件连接到表,但大多数组件都有一个查询对应项,允许您插入SQL而不是表名


通过转到对象检查器中的属性
选项
,展开它,并使用查询将
dgIndicator
设置为
False
,可以隐藏边沟。然后,使用联接选择产品名称,如下所示:

SELECT
  t.*,
  p.name
FROM
  YourTable t
  INNER JOIN Product p on p.barcode = t.barcode
我使用t.*,因为我不知道确切的列。实际上,我不会使用
select*
,而是指定特定的列。如果仍要使用
*
,可以通过将数据集/查询中的TField对象的Visible属性设置为
False
来隐藏特定列

我不知道您正在使用哪些组件连接到表,但大多数组件都有一个查询对应项,允许您插入SQL而不是表名


通过转到对象检查器中的属性
选项
,展开它,并将
dgIndicator
设置为
False

,可以隐藏边沟。您应该始终从SQL端执行连接,这比通过编程执行要容易得多

例如:

SELECT mytable.id, mytable.column1, another_table.barcode
FROM mytable
JOIN another_table ON another_table.id = mytable.barcode_id
要删除边沟,需要取消选中选项中的DBGrid属性
dgIndicator


至于“DB感知控件”,您应该尝试delphi帮助。

您应该始终从SQL端执行连接,这比通过编程实现要容易得多

例如:

SELECT mytable.id, mytable.column1, another_table.barcode
FROM mytable
JOIN another_table ON another_table.id = mytable.barcode_id
要删除边沟,需要取消选中选项中的DBGrid属性
dgIndicator


至于“DB感知控件”,您应该尝试delphi帮助。

使用TQuery组件而不是TTable,并使用上面建议的select语句设置SQL属性。如果只添加要在sql语句中显示的列,则会得到预期的结果。至于“gotter”,您必须在运行时以某种方式破解网格。

使用TQuery组件而不是TTable,并使用上面建议的select语句设置SQL属性。如果只添加要在sql语句中显示的列,则会得到预期的结果。至于“gotter”,您必须在运行时以某种方式破解网格。

只是为了记录:对于Paradox和DBF之类的ISAM数据库,典型的解决方案将是所谓的
主-详细表关系
,它可能仍然适用于SQL。虽然这会非常低效和缓慢。你肯定会读一些关于SQL的som书籍。

只是为了记录:对于Paradox和DBF这样的ISAM数据库,典型的解决方案是所谓的
主-细节表关系
,它可能仍然适用于SQL。虽然这会非常低效和缓慢。你肯定会读一些关于SQL的书。

你可以省去所有的痛苦和麻烦,投资一个专业的网格组件,如devexpress、tms、@whosr如果你开发专业应用程序,使用“专业”网格会很方便,但我们不知道这里是否是这样,除此之外,这些网格都不能解决这个问题,因为它仍然需要从另一个表中获取数据。@GolezTrol,我不是说获取数据,使用标准DB控件可能会很快变得很麻烦。@GolezTrol:Devexpress网格解决了这个问题,因为你有查找列,你只需要分配查找表。很好,我不知道。:-)这是DevExpress网格问题的一部分。我已经使用它们好几年了(在那之前是cxGrid和dxGrid),我从来没有感觉到我能够完全掌握组件的潜力。它们是网格中的一个完整应用程序,但学习曲线非常陡峭。它们为您的应用程序增加了很多重量。虽然我真诚地同意TDBGrid过于原始,但我也相信许多第三方网格比DevExpress“更好”,因为DX过于复杂。(不是因为这些查找列,这实际上是有意义的。)您可以省去所有的痛苦和麻烦,投资于专业的网格组件,如devexpress、tms、@whosrdaddy,如果您开发专业应用程序,使用“专业”网格会很方便,但我们不知道这里的情况是否如此,除此之外,这些网格都不能解决这个问题,因为它仍然需要从另一个表中获取数据。@GolezTrol,我不是说获取数据,使用标准DB控件可能会很快变得很麻烦。@GolezTrol:Devexpress网格解决了这个问题,因为你有查找列,你只需要分配查找表。很好,我不知道。:-)这是DevExpress网格问题的一部分。我已经使用它们好几年了(在那之前是cxGrid和dxGrid),我从来没有感觉到我能够完全掌握组件的潜力。它们是网格中的一个完整应用程序,但学习曲线非常陡峭。它们为您的应用程序增加了很多重量。虽然我真诚地同意TDBGrid过于原始,但我也相信许多第三方网格都是如此