Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数据类型不匹配访问2010_Sql_Excel_Vba_Ms Access 2010 - Fatal编程技术网

Sql 数据类型不匹配访问2010

Sql 数据类型不匹配访问2010,sql,excel,vba,ms-access-2010,Sql,Excel,Vba,Ms Access 2010,我们一直在创建一个人力资源数据库,使用Access作为后端,Excel作为前端。当我在Excel中运行宏将条目插入主表时,它会显示:;“数据类型不匹配”。我唯一更改的字段是“作业”字段,该字段要求值介于0.0-1.0(即0.2表示他们只工作一天) 以前,我在Access中将字段类型更改为接受小数后,才会显示小数点后插入的条目。此更改后,宏将不再工作 有人能指出这是为什么吗 我刚刚开始学习SQL/Access,所以很可能犯了一个非常基本的错误 我搜索了其他一些关于使用十进制字段而不是更改属性字段的

我们一直在创建一个人力资源数据库,使用Access作为后端,Excel作为前端。当我在Excel中运行宏将条目插入主表时,它会显示:;“数据类型不匹配”。我唯一更改的字段是“作业”字段,该字段要求值介于
0.0
-
1.0
(即
0.2
表示他们只工作一天)

以前,我在Access中将字段类型更改为接受小数后,才会显示小数点后插入的条目。此更改后,宏将不再工作

有人能指出这是为什么吗

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

我搜索了其他一些关于使用十进制字段而不是更改属性字段的答案,但这并没有解决我的问题。我的代码:

    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=工作表(“测试”).Range(“A2”).value

我认为这是造成错误的原因。如果access上的字段是“自动编号”数据类型,则不必将其包含在插入查询中,因为access会以增量方式自动为此字段分配值

如果希望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 & "); "

作业的数据类型编号的字段大小为“double”,最多可接受4位小数。是否尝试将作业变量强制转换为double?尝试将此更改为:“Job=Worksheets(“test”).Range(“D2”).Value”改为:“Job=CDbl(Worksheets(“test”).Range(“D2”).Value)”嗨,Danielle,我也尝试过了,但仍然是相同的错误:(你能在cn上设置一个断点吗?执行strQuery并记下strQuery的值并发布在这里吗?)strQuery=“插入MasterTable([Id]、[Positions]、[BU]、[Job])值(“,”业务分析师“、”财务“,”0.8)”,然后它在该点由于未知原因而中断。