【问题标题】:Data-type mismatch Access 2010数据类型不匹配 Access 2010
【发布时间】:2015-10-21 14:08:07
【问题描述】:

我们一直在创建一个 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

【问题讨论】:

    标签: sql excel vba ms-access-2010


    【解决方案1】:

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

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

    【讨论】:

    • Job 的数据类型为 Number,字段大小为“double”,最多接受 4 个小数位。
    • 您是否尝试过将工作变量转换为双倍?尝试将其更改为:'Job = Worksheets("test").Range("D2").Value' 为:'Job = CDbl(Worksheets("test").Range("D2").Value)'跨度>
    • 嗨 Danielle,我也试过了,但仍然是同样的错误。 :(
    • 能不能在cn.Execute strQuery上下个断点,记下strQuery的值,贴在这里?
    • strQuery = "INSERT INTO MasterTable ([Id], [Positions], [BU], [Job]) VALUES ("", "Business Analyst", "Finance", 0.8); " 和然后它在那个时候因为未知的原因而中断。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多