我们一直在使用Access作为后端并使用Excel作为前端来创建HR数据库。当我在Excel中运行宏以将条目插入到MasterTable中时,它说:“数据类型不匹配”。我更改的唯一字段是“作业”字段,该字段需要介于0.0
-之间的值1.0
(即,0.2
它们仅工作一天)。
以前,当我在小数点位置插入条目时,直到将Access中的字段类型更改为接受小数后,才会显示。进行此更改后,宏将不再起作用。
谁能指出为什么呢?
我才刚刚开始学习SQL / Access,所以很可能我犯了一个非常基本的错误。
我搜索了一些其他答案,这些答案涉及使用DECIMAL字段而不是更改properties字段,但这并不能解决我的问题。我的代码:
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的值Id = Worksheets("test").Range("A2").Value
?
我认为这是导致错误的原因。如果访问字段是AutoNumber数据类型,则不必在INSERT查询中包括该字段,因为访问会以递增方式自动为此分配一个值。
如果您希望访问权限为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 & "); "
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句