调整TDbGrid

时间:2012-10-12 10:32:02

标签: delphi tdbgrid

我正在采取我的第一个绊脚石进入DB感知控件(任何好的教程?)。

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

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

我该怎么做?

(我可以隐藏左侧的“装订线”(?),显示当前行吗?)

由于

4 个答案:

答案 0 :(得分:4)

你应该总是从SQL端执行连接,然后比programaticaly更容易

如:

SELECT mytable.id, mytable.column1, another_table.barcode
FROM mytable
JOIN another_table ON another_table.id = mytable.barcode_id

要删除装订线,您需要在选项中取消选中DBGrid属性dgIndicator

对于“DB-Aware控件”,你应该尝试delphi帮助。

答案 1 :(得分:2)

使用查询而不是表。然后,使用连接选择产品名称,如下所示:

SELECT
  t.*,
  p.name
FROM
  YourTable t
  INNER JOIN Product p on p.barcode = t.barcode

我使用t。*,因为我不知道确切的列。在实践中,我不会使用select *,而是指定特定的列。如果您打算使用*,则可以通过将数据集/查询中的TField对象的Visible属性设置为False来隐藏特定列。

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

可以通过转到对象检查器中的属性Options隐藏装订线,展开它,然后将dgIndicator设置为False

答案 2 :(得分:0)

仅供记录:对于像Paradox和DBF这样的ISAM数据库,典型的解决方案将是所谓的master-detail tables relations,它仍然适用于SQL。虽然效率很低而且很慢。你肯定会阅读关于SQL的som书。

答案 3 :(得分:-1)

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