gpt4 book ai didi

Delphi 7 更新连接表

转载 作者:行者123 更新时间:2023-12-03 15:54:10 24 4
gpt4 key购买 nike

我正在使用 Delphi 7 和 Firebird 数据库。我使用 TIBDatabase、TIBTransaction、TIBQuery、TIBDataSet 和 DBGrid 建立连接并提供用于处理表的用户界面。在我的数据库中,我有两个表:

Ships
fields
Id integer
Name varchar(20)
Type_Id(Fk) integer
Longth integer

Ship_types
fields
Id(Pk) integer
Ship_type varchar(10)

因此我通过“join”查询获得的结果数据集具有这样的字段

Name
Type
Longth

Type 是 Ship_types 表中的 Ship_type 字段,通过 Type_Id 外键查询从 Ships 表连接到该表。

数据显示正常。

然后我需要直接通过DBGrid编辑我的数据。为此,我使用 TIBUpdateSQL 组件。为了显示类型(查找)字段,我选择了 DBGrid.Columns.PickList 属性。

所以我的问题是如何让 TIBUpdateSQL 处理这种类型的字段?因为我知道如果它是没有外键的单表,我必须将更新语句写入更新组件的ModifySQL属性。但我对 fk 字段有什么用呢?我可以在 UpdateSQL 组件中编写 update join 语句吗?如果不能,我还可以通过什么方式来实现?

我不需要更新两个表,我只需要更新Ships表,但是在显示数据集和更新数据集时有varchar(单词表示)字段,它必须是整数(对应的id)以适应表结构.

TIBUpdateSQL 中的编辑器对我来说不是解决方案,因为我在运行时将查询分配给 TIBQuery。

最佳答案

您不能使用带有 JOIN 的 select 来更新表,只能使用子选择。

子选择示例:

SELECT TABLE_NAME.*
, (SELECT TABLE_NAME2.NAME FROM TABLE_NAME2 WHERE TABLE_NAME2.ID = TABLE_NAME.ID)
FROM TABLE_NAME

关于Delphi 7 更新连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30359234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com