创建临时表然后编辑它

问题描述 投票:0回答:1

我正在尝试创建一个临时表,向其附加一些字段,然后将其重命名为原始表。我正在使用下面的代码,但不确定它是否按预期工作。有时结果存在,有时不存在。

指令顺序有错吗?

        Set tbl_copy = db.CreateTableDef("Temp")
        
        db.Execute "SELECT * INTO [" & "Temp" & "] FROM [" & tblName & "]"
        
        db.TableDefs.Delete tblName
        
        Dim field_name As String
        
        With tbl_copy
        
            For col_id = 2 To named_range.Columns.Count
    
                field_name = Format(named_range(1, col_id).Value, "m/d/yyyy")
    
                .Fields.Append .CreateField(field_name, dbdata_type)
    
            Next col_id
          
        End With
      
      
        db.TableDefs.Append tbl_copy
        
        tbl_copy.name = tblName

excel vba ms-access-2010
1个回答
0
投票

如果您在 MsAccess 中托管 VBA,您可以使用 DoCmd 命令:

 Const tblName As String = "<your original tablename here>"
 Dim Col As Variant

'DoCmd.SetWarnings WarningsOn:=False ' you can use this line to suppress warning messages
 
 On Error Resume Next
 DoCmd.RunSQL ("DROP TABLE Temp")
 On Error GoTo 0
 
 DoCmd.RunSQL ("SELECT * INTO Temp FROM " & tblName)
 For Each Col In Array("2/3/2020", "5/4/2021", "12/12/2022")
     DoCmd.RunSQL ("ALTER TABLE Temp ADD COLUMN [" & Col & "] integer")
 Next Col
 DoCmd.RunSQL ("DROP TABLE " & tblName)
 DoCmd.Rename NewName:=tblName, ObjectType:=acTable, OldName:="Temp"

我用数组模拟了你的EXCEL范围。 例如,如果表已经打开,建议您对可能会失败的语句添加更多的错误控制。

您当然可以使用您的 TableDefs 等方法实现相同的效果,但我需要更多时间来计算出确切的代码。

© www.soinside.com 2019 - 2024. All rights reserved.