运行时错误“3061”:参数太少,预计1

时间:2013-08-04 12:35:37

标签: ms-access ms-access-2007

VB6(32 BIT - 1998)ERROR 3061 - WINDOWS 7 - ACCESS 2007 - EXCEL 2007

我写了一个VB6程序,它从ACCESS 2007数据库中提取记录并将它们写入EXCEL 2007表。

程序工作正常,我用了几个月的exe。然后,混乱了。 一个新的1GB高清我安装为“C”自杀并发生永久性错误。 我的二级2 GB“D”也同时发生了永久性错误。 再见系统。

我能够恢复一切。放入新的硬盘驱动器(提供保修)。重新安装了W7,ACCESS 2007,EXCEL 2007和VB6,全部来自CD。

现在,当我运行我的VB exe时,给我运行时错误3061 - 参数太少 - 预计至少有1个。

罪魁祸首是选择:

Set rs = db.OpenRecordset(Select_str)

选择包含:

SELECT
    HORA,
    ARL,
    ARL_ECON,
    ESTADO_OPE,
    EST_REMUN,
    ENERGIA,
    POT_DISP,
    POT_RECORTADA,
    PIND,
    PINDFORZ,
    CGN,
    CGO,
    CFO,
    CCM,
    PRECIO_NODO,
    PR_REM_ENERGIA,
    SCTD,
    SCO,
    COSTO_406,
    COMPRA_SPOT,
    POT_DISP_RESERVA,
    POT_DISP_GAS,
    GAS_NOMINADO,
    REM_ADICIONAL,
    REM_ADIC_TOTAL,
    DESP_ECON,
    PGENE_COMP_446,
    REM_ADIC_COMP_446,
    REM_GAS_6866,
    REMUN_ADIC_6866,
    POT_DISP_ACD
FROM VALORES_GENERADORES
WHERE GRUPO = "XXXXXX"

我以这种方式构建选择:

BeguinSelectString$ = "SELECT HORA, "
DE$ = " FROM "
Donde$ = " WHERE GRUPO = " + Chr(34)
FinDelSelect$ = Chr(34) + " "

Select_str = ""

'我用一个FOR / NEXT来构建这个选择列出所有字段并将它们放在SELECT中。

Select_str = BeguinSelectString$

For i = 0 To (Max_Index_de_Records_1 - 1)

    Select_str = Select_str + Nombres_de_Campos_1(i) + ", "

Next i

    Select_str = Select_str + Nombres_de_Campos_1(Max_Index_de_Records_1) ' I INSERT THE LAST FIELD WITHOUT THE COMMA, ELSE IT GIVES AN ERROR

    Select_str = Select_str + _
             DE$ + _
             Tabla + _
             Donde$ + _
             sNombre_del_Grupo + _
             FinDelSelect$

项目参考依次是:

  1. Visual Basic for Applications
  2. Visual Basic运行时对象和过程
  3. Visual Basic对象和过程
  4. ActiveBar控件
  5. ActiveEx类型库
  6. Microsoft DAO 3.6对象库
  7. Microsoft Excel 12.0对象库
  8. Microsoft Access 12.0对象库
  9. Microsoft Office 12.0对象库

2 个答案:

答案 0 :(得分:1)

如果您确定问题中的SELECT语句是代码构建的确切语句,请复制该文本,在Access查询设计器中创建新查询,切换到SQL视图,粘贴复制的文本并尝试运行它。

Access将显示一个参数输入框,要求您提供参数值。请注意,该框包含Access认为是参数的“name”。该参数名称是(通常是拼写错误的字段名称)Access无法在VALORES_GENERADORES表中找到。由于找不到名称,因此假定名称必须是参数。

答案 1 :(得分:1)

谢谢你,HANSUP,你的建议解决了问题!!!

这是第三方提供给我的一组日常数据库。数据库结构和表字段在过去几年中没有变化。 更进一步,我的程序很好地提取了近一年的日常信息! 然后,在我的PC自杀的同时,数据库设计师决定改变表I QUERY中最后一个字段的名称。 嗨,在一个半月的时间内完成了这个奇怪的事情(@#!## !!!)。当我检查表的字段名称时,我查看了第1天的数据库表,它仍然有旧名称!所以,我认为我重新安装的一切都是罪魁祸首。

现在我更改了字段名称(这不是拼写错误或语法错误),一切都恢复正常。

再次感谢!!!

鲁迪