我正在迈出第一步进入数据库感知控件(有什么好的教程吗?)。
我有一个包含 6 列的 MySql 表,并设法将其加载到 TDbGrid 中。
然而,其中一列是另一个表的索引。这是一个条形码,我不想显示它,而是想显示与它相关的产品名称。
我怎么做?
(我可以隐藏左侧显示当前行的“排水沟”(?)吗?)
谢谢
您应该始终从 SQL 端执行连接,这比以编程方式执行要容易得多
如:
SELECT mytable.id, mytable.column1, another_table.barcode
FROM mytable
JOIN another_table ON another_table.id = mytable.barcode_id
要删除装订线,您需要取消选中dgIndicator
Options 中的 DBGrid 属性。
至于“DB-Aware 控件”,您应该尝试 delphi 帮助。
使用查询代替表。然后,使用连接来选择产品名称,如下所示:
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
.
仅作记录:对于像 Paradox 和 DBF 这样的 ISAM 数据库,典型的解决方案就是所谓的master-detail tables relations
,它仍然可能适用于 SQL。虽然它会非常低效和缓慢。您肯定会阅读一些有关 SQL 的书籍。
使用 TQuery 组件而不是 TTable 并使用上面建议的选择语句设置 SQL 属性。如果您只是添加要在 sql 语句中显示的列,您会得到预期的结果。至于“排水沟”,您将不得不在运行时以某种方式破解网格。