假设我们有一个名为'test.csv”的文件,它包含以下数据:
Header1,Header2,Header3
Value1,Value2,Value3
1,2,3
我们希望将它导入名为'test_table”的Access表中,我们可以使用以下代码:
DoCmd.TransferText acImportDelim, , "test_table", "C:\test.csv", True
在这个代码中,第4个参数'True”表示Access将尝试根据列的值自动检测它们的数据类型。如果某个列的值不能转换为正确的数据类型,Access会设置该列的数据类型为'文本”,导入的数据会被截断。
为了避免这个问题,我们需要将第4个参数设置为'False”,并在目标表中手动指定每个列的数据类型。下面是一个例子:
DoCmd.TransferText acImportDelim, , "test_table", "C:\test.csv", False
'在导入数据之后,我们可以使用以下代码手动更改表列的数据类型:
Dim db As DAO.Database
Dim tbl As DAO.TableDef
Dim fld As DAO.Field
Set db = CurrentDb()
Set tbl = db.TableDefs("test_table")
For Each fld In tbl.Fields
Select Case fld.Name
Case "Header1"
fld.Type = dbText
Case "Header2"
fld.Type = dbText
Case "Header3"
fld.Type = dbInteger
End Select
Next fld
在这个代码中,我们首先将第4个参数设置为'False”,以便在导入数据时保留所有的字符串信息。然后,我们使用DAO库(Data Access Object库)中的代码来打开Access数据库、获得目标表、以及设置表中每个列的数据类型。
在最后的'Select Case...”块中,我们根据列名设置每列的数据类型。在这个例子中,我们假设Header1和Header2是文本列,而Header3是整数列。你可以根据自己的需要更改它们。