2015-02-23 133 views
0

有没有办法改变VBA中DAO.Recordset字段的类型?如何更改DAO.Recordset字段类型

出于某种原因解释evalueted记录字段类型8(日期时间),但我需要这个字段设置为文本,因为它应该是

我尝试以下操作:

rs.Fields(0).Type = 10 

,但是这给了我项目没有在这个集合中找到。错误。

有没有什么办法可以改变DAO.Recordset中特定字段的类型?

EDIT1: 这里是我得到目前为止

Private Sub doMagic() 
    Dim db as DAO.Database 
    Dim rs as DAO.Recordset 
    Dim sql as String: sql = "SELECT * FROM [Sheet1$] WHERE [Column1] IS NOT NULL" 

    Set db = OpenDatabase(ThisWorkbook.FullName, False, True, "Excel 8.0; HDR=Yes; IMEX=1;" 
    set rs = db.OpenRecordset(sql) 

    Dim updateSQL As String: updateSQL = "ALTER TABLE [Sheet1$] ALTER COLUMN [Column5] TEXT(100)" 

    ' I tried following, non of them working: 
    ' db.RunSql(updateSQL) - error: Metod or data member not found 
    ' db.Execute(updateSQL) - fails with error: Operation is not supported for this type of object. 
    ' DoCmd.RunSql(updateSQL)- error: Object required 
End Sub 
+0

你需要起诉一个'ALTER'命令。你不能改变这种类型。 – PaulFrancis 2015-02-23 10:50:58

+0

@PaulFrancis你能给我提供一个例子吗?我无法找到任何关于这个 – Kajiyama 2015-02-23 10:53:54

+0

只是谷歌搜索的示例/文档:**更改表字段结构vba访问**。我得到这个:https://msdn.microsoft.com/en-us/library/office/ff822825.aspx – PaulFrancis 2015-02-23 10:55:36

回答

0

你不能用DAO更改表的字段类型。当您创建一个DAO记录集时,该字段的定义是只读的。要更改字段类型,您需要使用DDL(数据定义语言)查询,这是link解释SQL的内容,这是您通常会执行的操作。类似的,

DoCmd.RunSQL "ALTER TABLE yourTableName ALTER COLUMN yourColumnName TEXT(50)" 
+0

当我尝试运行此命令我得到一个错误:424:'对象需要'它似乎,我的DoCmd对象为空 – Kajiyama 2015-02-23 11:35:17

+0

嗯,你确定你已经编辑了代码来匹配你的需求吗?你能显示你正在使用的代码行吗?也许更新你原来的帖子?编辑 – PaulFrancis 2015-02-23 11:39:15

+0

- 添加了所有我试图修复它的方法 – Kajiyama 2015-02-23 11:57:31

相关问题