数据类型不匹配 Access 2010
Data-type mismatch Access 2010
我们一直在创建一个 HR 数据库,使用 Access 作为后端,Excel 作为前端。当我 运行 我在 Excel 中的宏将条目插入 MasterTable 时,它说; "Data Type Mismatch"。我更改的唯一字段是 "Job" 字段,该字段需要 0.0
- 1.0
之间的值(即 0.2
表示他们只工作一天)。
以前我在小数位插入条目时不会显示,直到我将 Access 中的字段类型更改为接受小数。进行此更改后,宏不再有效。
谁能指出这是为什么?
我才刚刚开始学习SQL/Access所以我很可能犯了一个非常基本的错误。
我在 SO 上搜索了一些其他答案,这些答案讨论了使用 DECIMAL 字段而不是更改属性字段,但这并没有解决我的问题。我的代码:
Sub ExportDataToAccess()
Dim cn As Object
Dim strQuery As String
Dim Id As String
Dim Positions As String
Dim BU As String
Dim Job As Double
Dim Variance As String
Dim myDB As String
'Initialize Variables
Id = Worksheets("test").Range("A2").Value
Positions = Worksheets("test").Range("B2").Value
BU = Worksheets("test").Range("C2").Value
Job = Worksheets("test").Range("D2").Value
myDB = "X:\Users\ADMIN\Documents\HR_Establishment_DB1.accdb"
Set cn = CreateObject("ADODB.Connection")
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0" 'For *.ACCDB Databases
.ConnectionString = myDB 'Connects to my DB
.Open
End With
strQuery = "INSERT INTO MasterTable ([Id], [Positions], [BU], [Job]) " & _
"VALUES (""" & Id & """, """ & Positions & """, """ & BU & """, " & Job & "); "
cn.Execute strQuery
cn.Close
Set cn = Nothing
End Sub
您是否打算从 excel (Id = Worksheets("test").Range("A2").Value
) 中获取 ID 的值?
我认为这是导致错误的原因。如果 access 上的字段是自动编号数据类型,则您不必将其包含在 INSERT 查询中,因为 access 会自动以增量方式为此分配一个值。
如果您希望访问权限自动为 ID 分配值,请更改:
strQuery = "INSERT INTO MasterTable ([Id], [Positions], [BU], [Job]) " & _
"VALUES (""" & Id & """, """ & Positions & """, """ & BU & """, " & Job & "); "
对此:
strQuery = "INSERT INTO MasterTable ([Positions], [BU], [Job]) " & _
"VALUES (""" & Positions & """, """ & BU & """, " & Job & "); "
我们一直在创建一个 HR 数据库,使用 Access 作为后端,Excel 作为前端。当我 运行 我在 Excel 中的宏将条目插入 MasterTable 时,它说; "Data Type Mismatch"。我更改的唯一字段是 "Job" 字段,该字段需要 0.0
- 1.0
之间的值(即 0.2
表示他们只工作一天)。
以前我在小数位插入条目时不会显示,直到我将 Access 中的字段类型更改为接受小数。进行此更改后,宏不再有效。
谁能指出这是为什么?
我才刚刚开始学习SQL/Access所以我很可能犯了一个非常基本的错误。
我在 SO 上搜索了一些其他答案,这些答案讨论了使用 DECIMAL 字段而不是更改属性字段,但这并没有解决我的问题。我的代码:
Sub ExportDataToAccess()
Dim cn As Object
Dim strQuery As String
Dim Id As String
Dim Positions As String
Dim BU As String
Dim Job As Double
Dim Variance As String
Dim myDB As String
'Initialize Variables
Id = Worksheets("test").Range("A2").Value
Positions = Worksheets("test").Range("B2").Value
BU = Worksheets("test").Range("C2").Value
Job = Worksheets("test").Range("D2").Value
myDB = "X:\Users\ADMIN\Documents\HR_Establishment_DB1.accdb"
Set cn = CreateObject("ADODB.Connection")
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0" 'For *.ACCDB Databases
.ConnectionString = myDB 'Connects to my DB
.Open
End With
strQuery = "INSERT INTO MasterTable ([Id], [Positions], [BU], [Job]) " & _
"VALUES (""" & Id & """, """ & Positions & """, """ & BU & """, " & Job & "); "
cn.Execute strQuery
cn.Close
Set cn = Nothing
End Sub
您是否打算从 excel (Id = Worksheets("test").Range("A2").Value
) 中获取 ID 的值?
我认为这是导致错误的原因。如果 access 上的字段是自动编号数据类型,则您不必将其包含在 INSERT 查询中,因为 access 会自动以增量方式为此分配一个值。
如果您希望访问权限自动为 ID 分配值,请更改:
strQuery = "INSERT INTO MasterTable ([Id], [Positions], [BU], [Job]) " & _
"VALUES (""" & Id & """, """ & Positions & """, """ & BU & """, " & Job & "); "
对此:
strQuery = "INSERT INTO MasterTable ([Positions], [BU], [Job]) " & _
"VALUES (""" & Positions & """, """ & BU & """, " & Job & "); "