VB6 (32 ビット - 1998) エラー 3061 - Windows 7 - アクセス 2007 - Excel 2007
ACCESS 2007 データベースからレコードを抽出し、それらを EXCEL 2007 シートに書き込む VB6 プログラムを作成しました。
プログラムは正常に動作し、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$
プロジェクトの参照は、この順序で:
- アプリケーション用の Visual Basic
- Visual Basic ランタイム オブジェクトとプロシージャ
- Visual Basic のオブジェクトとプロシージャ
- ActiveBar コントロール
- ActiveEx タイプ ライブラリ
- Microsoft DAO 3.6 オブジェクト ライブラリ
- Microsoft Excel 12.0 オブジェクト ライブラリ
- Microsoft Access 12.0 オブジェクト ライブラリ
- Microsoft Office 12.0 オブジェクト ライブラリ