运行-time error 2465 cannot find the field '|1' with alter column
Run-time error 2465 can't find the field '|1' with alter column
我的代码:
Private Sub UpdateTables_Click()
DoCmd.SetWarnings False
MsgBox "Please Wait for the 'Done' message to appear"
DoCmd.RunMacro "Update_Tables"
DoCmd.RunSQL "ALTER TABLE " & [tablename] & " ALTER COLUMN StartDateAll DATE;"
MsgBox "Done"
DoCmd.SetWarnings True
End Sub
DoCmd.RunSQL
行是调试 window 中突出显示的内容。我以我的 table 名称作为 t_tablename 开头,但出现了语法错误。阅读后我发现“”可能是个问题,所以我删除了 "t",这消除了我的语法错误,但现在我遇到了这个 2465 错误。我的专栏原来是"Start_Date_All",所以改名为"StartDateAll"
我有多个 make table 查询,它合并了各个部门员工的开始日期,生成的合并列是文本而不是日期。我在表单上有一个按钮,上面的代码 运行 到 运行 一个宏 运行 进行 table 查询并且 运行 很好,但它卡在了这个 alter table 部分(我只是为了测试目的包含了一个)
我检查了列名的拼写,用双引号试过,也试过用“& StartDateAll &
”...每次都出现 2465 错误。
这就是您所说的 Access 抱怨找不到字段的地方:
DoCmd.RunSQL "ALTER TABLE " & [tablename] & " ALTER COLUMN StartDateAll DATE;"
有更好的方法,它可能无法解决问题,但至少应该让您有更好的机会了解为什么会发生:
Dim strTable As String
Dim strAlter As String
strTable = "t_tablename"
DoCmd.SetWarnings True
strAlter = "ALTER TABLE [" & strTable & "] ALTER COLUMN StartDateAll DATE;"
Debug.Print strAlter '<- inspect in Immediate window; Ctrl+g will take you there
CurrentProject.Connection.Execute strAlter
MsgBox "Done"
我在 Access 2010 中测试了该代码,使用 StartDateAll
作为 t_tablename
中的文本字段。代码 运行 没有错误,之后我确认该字段已从文本更改为 Date/Time 数据类型。
重点有:
- 给自己一个机会来检查已完成的
ALTER TABLE
您要求数据库引擎执行的语句 --> Debug.Print strAlter
。 IOW,确保它是你想要的。
- 您的 table 姓名
t_tablename
不需要括号。但是如果你想把名字括起来,把那些括号移到字符串段内。
- 关闭
SetWarnings
抑制信息。在进行故障排除时,您需要获得所有最后一点信息。所以在执行 ALTER TABLE
时保持 SetWarnings
开启。
如果 Access 仍然找不到 StartDateAll
字段,请仔细检查 Access 认为确实存在的字段名称。这是即时 window 会话中的示例:
set db = currentdb
for each fld in db.TableDefs("t_tablename").Fields : ? fld.name : next
id
StartDateAll
我的代码:
Private Sub UpdateTables_Click()
DoCmd.SetWarnings False
MsgBox "Please Wait for the 'Done' message to appear"
DoCmd.RunMacro "Update_Tables"
DoCmd.RunSQL "ALTER TABLE " & [tablename] & " ALTER COLUMN StartDateAll DATE;"
MsgBox "Done"
DoCmd.SetWarnings True
End Sub
DoCmd.RunSQL
行是调试 window 中突出显示的内容。我以我的 table 名称作为 t_tablename 开头,但出现了语法错误。阅读后我发现“”可能是个问题,所以我删除了 "t",这消除了我的语法错误,但现在我遇到了这个 2465 错误。我的专栏原来是"Start_Date_All",所以改名为"StartDateAll"
我有多个 make table 查询,它合并了各个部门员工的开始日期,生成的合并列是文本而不是日期。我在表单上有一个按钮,上面的代码 运行 到 运行 一个宏 运行 进行 table 查询并且 运行 很好,但它卡在了这个 alter table 部分(我只是为了测试目的包含了一个)
我检查了列名的拼写,用双引号试过,也试过用“& StartDateAll &
”...每次都出现 2465 错误。
这就是您所说的 Access 抱怨找不到字段的地方:
DoCmd.RunSQL "ALTER TABLE " & [tablename] & " ALTER COLUMN StartDateAll DATE;"
有更好的方法,它可能无法解决问题,但至少应该让您有更好的机会了解为什么会发生:
Dim strTable As String
Dim strAlter As String
strTable = "t_tablename"
DoCmd.SetWarnings True
strAlter = "ALTER TABLE [" & strTable & "] ALTER COLUMN StartDateAll DATE;"
Debug.Print strAlter '<- inspect in Immediate window; Ctrl+g will take you there
CurrentProject.Connection.Execute strAlter
MsgBox "Done"
我在 Access 2010 中测试了该代码,使用 StartDateAll
作为 t_tablename
中的文本字段。代码 运行 没有错误,之后我确认该字段已从文本更改为 Date/Time 数据类型。
重点有:
- 给自己一个机会来检查已完成的
ALTER TABLE
您要求数据库引擎执行的语句 -->Debug.Print strAlter
。 IOW,确保它是你想要的。 - 您的 table 姓名
t_tablename
不需要括号。但是如果你想把名字括起来,把那些括号移到字符串段内。 - 关闭
SetWarnings
抑制信息。在进行故障排除时,您需要获得所有最后一点信息。所以在执行ALTER TABLE
时保持SetWarnings
开启。
如果 Access 仍然找不到 StartDateAll
字段,请仔细检查 Access 认为确实存在的字段名称。这是即时 window 会话中的示例:
set db = currentdb
for each fld in db.TableDefs("t_tablename").Fields : ? fld.name : next
id
StartDateAll