0

我正在迈出第一步进入数据库感知控件(有什么好的教程吗?)。

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

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

我怎么做?

(我可以隐藏左侧显示当前行的“排水沟”(?)吗?)

谢谢

4

4 回答 4

4

您应该始终从 SQL 端执行连接,这比以编程方式执行要容易得多

如:

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

要删除装订线,您需要取消选中dgIndicatorOptions 中的 DBGrid 属性。

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

于 2012-10-12T10:40:01.593 回答
2

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

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

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

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

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

于 2012-10-12T10:38:30.337 回答
0

仅作记录:对于像 Paradox 和 DBF 这样的 ISAM 数据库,典型的解决方案就是所谓的master-detail tables relations,它仍然可能适用于 SQL。虽然它会非常低效和缓慢。您肯定会阅读一些有关 SQL 的书籍。

于 2012-10-12T11:24:15.393 回答
-1

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

于 2012-10-12T11:03:35.857 回答