我一直在尝试将Excel电子表格导入MS Access 2013(通过界面)作为表格,并为字段“SegmentID”生成“类型转换失败”错误,该字段为整数类型。
在Excel电子表格中检查失败的行号时,它们确实是整数,就像所有其他行一样。 即使重新输入并将整列设置为数字(并删除小数位)仍然会产生相同的错误。我需要为许多电子表格执行此导入操作,我尝试的几乎每一个都有相同的错误,范围从整个电子表格中的少量到数千个。电子表格为.xlsx格式。
任何想法都将不胜感激。我曾想过用以下方法手动执行此操作:
DoCmd.RunSQL "CREATE TABLE TableName ([Date] DATETIME, [Name] TEXT, ETC..."
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "TableName", "C:\ExcelData.xlxs"
答案 0 :(得分:4)
整数范围从-32,768到+32,767。您的细分ID似乎需要一个LONG整数。您的电子表格似乎转到33581,这会使您超出整数范围。
答案 1 :(得分:1)
正如我之前提到的,我将尝试手动创建表并导入数据。所有数据都被传输到创建的表中,没有错误或数据丢失。在MS Access中的“Visual Basic”视图中单击Ctrl + G
,您可以使用此代码。
DoCmd.RunSQL ("CREATE TABLE Wildlife (ID COUNTER NOT NULL PRIMARY KEY, SegmentID INT, RouteID TEXT, Type TEXT, Subtype TEXT, Subtype2 TEXT);") DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Wildlife", "C:\PathToFile\Wildlife.xlsx",-1
ID COUNTER NOT NULL PRIMARY KEY
添加作为主键的自动编号字段ID
第二个-1
末尾的Do.Cmd
参数告诉Access该字段中的第一行是列名。 DoCmd.TransferSpreadsheet Method (Access)