1

VB6(32 位 - 1998)错误 3061 - WINDOWS 7 - 访问 2007 - EXCEL 2007

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

该程序运行良好,我使用了几个月的 exe。然后,混乱发生了。我安装为“C”的一个新的 1GB HD 自杀并出现了永久性错误。我的二级 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 中。

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
  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 对象库
4

2 回答 2

2

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

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

于 2013-08-04T15:44:42.257 回答
1

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

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

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

再次感谢!!!

鲁迪

于 2013-08-05T14:38:57.050 回答