gpt4 book ai didi

sql - 创建超链接类型字段的 MS Access SQL 语法是什么?

转载 作者:行者123 更新时间:2023-12-05 00:23:45 50 4
gpt4 key购买 nike

我正在开发一个 C# 项目,该项目使用 System.Data.OleDb.OleDbCommand 类在 MS Access DB 中创建和更改表。我生成 SQL 语句,将其传递给对象,然后调用 ExecuteNonQuery 函数。我能够找出正确的 MS Access SQL 语法来创建以下 Access 数据类型的列:

自动编号:ALTER TABLE 表名 ADD COLUMN 列名 COUNTER|AUTOINCREMENT
货币:ALTER TABLE table-name ADD COLUMN column-name MONEY
日期/时间:ALTER TABLE table-name ADD COLUMN column-name DATE
备注:ALTER TABLE 表名 ADD COLUMN 列名 MEMO|TEXT
编号:ALTER TABLE 表名 ADD COLUMN 列名 NUMBER
OLE 对象:ALTER TABLE 表名 ADD COLUMN 列名 OLEOBJECT
文本:ALTER TABLE table-name ADD COLUMN column-name CHARACTER
是/否:ALTER TABLE table-name ADD COLUMN column-name BIT

我还没有弄清楚如何创建的唯一类型是超链接。有谁知道那个语法?

最佳答案

这是一种不能使用 DDL 但必须使用 DAO 的情况。您正在寻找的是 DAO 字段类型的 .Attributes 属性。在 VBA 中,此代码可以解决问题(您必须弄清楚如何在 C# 中使用 DAO 执行此操作):

  Dim tdf As DAO.TableDef
Dim fld As DAO.Field

Set tdf = CurrentDB.TableDefs("MyTable")
Set fld = tdf.CreateField("Hyperlink", dbMemo) ' dbMemo = 12
fld.Attributes = dbHyperlinkField ' 32768
tdf.Fields.Append fld
Set fld = Nothing
Set tdf = Nothing

如果您在 Access 中检查此字段的数据类型:
  CurrentDB.TableDefs("MyTable").Fields("Hyperlink").Type

它返回 12,它等于 VBA 全局常量 dbMemo(这就是我想出的方法,即在 Access UI 中创建一个超链接字段,然后检查其数据类型)。 dbHyperlinkField 的值为 32768,但不能直接作为数据类型分配——它是备注字段的子属性。

这是 Access 扩展 Jet 的一个案例,它使用自定义属性来处理数据,而不是有限数量的 Jet 数据类型。很明显,只有当您使用 Access 本身的数据时,超链接字段类型才相关。如果您使用其他应用程序来处理数据,那么使用超链接数据字段将一无所获。

另外,我和那些建议不要使用 Hyperlink 类型的字段的人一样,因为我已经尝试过它并且它只是一个痛苦的屁股。此外,鉴于它确实是一个备忘录字段,它会受到备忘录字段带来的所有问题的影响。也就是说,数据实际上并不与数据表一起存储——所有存储在主记录中的是指向存储真实数据的数据页的指针,而这些指针是 Jet 的脆弱部分之一。备忘录值得冒险,因为当您需要存储超过 255 个字符时,您需要这样做。我看不出有任何由特定于 Access 的超链接字段类型添加的重要功能,值得在代码中使用它的麻烦,或者因为它在幕后作为备忘录字段实现而带来的风险。

关于sql - 创建超链接类型字段的 MS Access SQL 语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1133523/

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