【发布时间】:2016-01-25 19:34:18
【问题描述】:
我正在尝试将 Excel 工作表中的数据导入访问表。我正在尝试自动化数据操作过程。所以我可以通过这段代码将数据读入访问:
Private Sub ctlOpen_Click()
Set f = Application.FileDialog(3)
f.AllowMultiSelect = False
If f.Show Then
strExcelPath = f.SelectedItems(1)
End If
Call DoCmd.TransferSpreadsheet(acImport, _
acSpreadsheetTypeExcel8, "InitialTable", strExcelPath, _
True)
End Sub
但我得到一个错误。它会创建另一个名为导入错误的表,说明“类型转换失败”,后跟列名和行号。
问题是我的 Excel 工作表上有一个名为 ETA 的列,它有一个日期。该列中的大多数字段将具有月份/日期,例如('1/20' 或 1/17'),但一些字段具有诸如 'BAD' 或 'CP' 之类的代码。我的数据操作的一部分是将“糟糕”的所有内容更改为从今天开始的一周,以及“CP”的不同公式。
所以我的问题是:有没有办法在 DoCmd.TransferSpreadsheet() 或任何替代方法中将所有内容都读取为字符串?
【问题讨论】:
-
我不清楚您为什么在导入前不执行“数据操作”。
-
@Jeeped 大多数其他需要的东西已经在访问表单上。我正在尝试创建另一个按钮,其中用户指向 excel 文件,然后它将导出访问表中的格式化数据。在我的代码中,initialtable 本质上是一个临时表。
-
问题就在这里!电子表格和数据库之间的经典区别。在电子表格中,您可以在列中输入任何字符串/日期/布尔值/数字。如果您不遵守列的数据类型,数据库会惩罚您。 Access 的日期时间字段需要每个段的日、月和年:
MM/DD/YYYY或DD/MM/YYYY(取决于您的区域设置)。如果省略时间 (HH:MM:SS),则假定为午夜00:00:00。
标签: ms-access vba ms-access-2010