数据类型不匹配Access 2010

时间:2015-10-21 01:50:39

标签: sql excel vba ms-access-2010

我们一直在创建一个HR数据库,使用Access作为后端,Excel作为前端。当我在Excel中运行宏以将条目插入MasterTable时,它说; “数据类型不匹配”。我改变的唯一字段是“作业”字段,该字段需要0.0 - 1.0之间的值(即0.2表示他们只工作一天)。

以前我在小数位插入条目时才会显示,直到我在Access中更改字段类型接受小数。此更改后,宏不再起作用。

任何人都可以指出这是为什么吗?

我刚刚开始学习SQL / Access,所以我很可能犯了一个非常基本的错误。

我搜索了一些其他答案,其中讨论了使用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 Snapshot Access Structure

1 个答案:

答案 0 :(得分:1)

您是否打算从excel(Id = Worksheets("test").Range("A2").Value)获取 ID 的值?

我认为这是导致错误的原因。如果访问时的字段是自动编号数据类型,则不必将其包含在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 & "); "