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$
项目参考依次是:
答案 0 :(得分:1)
如果您确定问题中的SELECT
语句是代码构建的确切语句,请复制该文本,在Access查询设计器中创建新查询,切换到SQL视图,粘贴复制的文本并尝试运行它。
Access将显示一个参数输入框,要求您提供参数值。请注意,该框包含Access认为是参数的“name”。该参数名称是(通常是拼写错误的字段名称)Access无法在VALORES_GENERADORES
表中找到。由于找不到名称,因此假定名称必须是参数。
答案 1 :(得分:1)
谢谢你,HANSUP,你的建议解决了问题!!!
这是第三方提供给我的一组日常数据库。数据库结构和表字段在过去几年中没有变化。 更进一步,我的程序很好地提取了近一年的日常信息! 然后,在我的PC自杀的同时,数据库设计师决定改变表I QUERY中最后一个字段的名称。 嗨,在一个半月的时间内完成了这个奇怪的事情(@#!## !!!)。当我检查表的字段名称时,我查看了第1天的数据库表,它仍然有旧名称!所以,我认为我重新安装的一切都是罪魁祸首。
现在我更改了字段名称(这不是拼写错误或语法错误),一切都恢复正常。
再次感谢!!!
鲁迪