.CreateField方法,使用字符串var作为名称

时间:2018-06-26 17:10:21

标签: vba access-vba

到目前为止,这是我遗漏的一些多余代码以及一些匿名数据库和变量名:

Dim dB as DAO.Database
Dim tdf as DAO.TableDef
Dim newField As DAO.Field

Dim newFieldNameVar As String

newFieldNameVar = "Variable Name"

Set dB = CurrentDb

Set tdf = dB.TableDefs("PreExistingTable")

Set newField = tdf.CreateField(newFieldNameVar)

tdf.Fields.Append newField

Set newField = Nothing
Set tdf = Nothing
Set dB = Nothing

我的函数中存在上述代码的地方不是在循环中,而是newFieldNameVar是循环的产物,因此会根据与问题线程无关的条件定期进行更改。

在执行.Fields.Append行时,我得到以下运行时错误:无效的字段数据类型。 '3259'我对以任何形式或方式进行编程都是相当陌生的,但是想像一下,对于用作.CreateField方法的Name元素的变量,我可能使用了错误的语法。有任何想法吗?我可以在.CreateField方法中使用字符串变量作为Name吗?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

虽然Type.CreateField方法的可选参数,但每个字段确实都需要一个类型,然后才能将其附加到表中,否则Access会抛出此错误

指定字段大小也是一种好习惯。

指定您的字段类型,例如:

Dim dB as DAO.Database
Dim tdf as DAO.TableDef
Dim newField As DAO.Field

Dim newFieldNameVar As String

newFieldNameVar = "Variable Name"

Set dB = CurrentDb

Set tdf = dB.TableDefs("PreExistingTable")

Set newField = tdf.CreateField(newFieldNameVar, dbText, 255) '255 character long text field

tdf.Fields.Append newField

Set newField = Nothing
Set tdf = Nothing
Set dB = Nothing