|
▼EXCEL_VBA中の下 さん:
こんにちは。
まず、ADOのI/Oプロシジャーの一部を
'================================
Function get_exec_sql(sql_str, rs As Object) As Long
On Error Resume Next
Set rs = cn.Execute(sql_str)
get_exec_sql = Err.Number
If Err.Number <> 0 Then
MsgBox Err.Number & "::" & Err.Description
End If
On Error GoTo 0
End Function
と詳しいエラーが表示されるように変更して下さい。
>
>自分でSQLのことを言っていたので、
>今回はichinoseさんのものを使って試してみました。
>
>結果なのですが、get_exec_sqlがエラーで動きませんでした。
>リターンコードは"-2147217904"でした。
>
> Dim rs As Object
> Dim mysql As String
> If open_ado_excel(ThisWorkbook.FullName) = 0 Then
> mysql = "Select [YYYY],[MM],[CODE_A],[CODE_B],[CODE_C],[CODE_D],sum([KINGAKU]) " & _
> " from [DATA$] " & _
> " Where [FLG] = '1' AND [CODE_D] = '03' " & _
> " group by [YYYY],[MM],[CODE_A],[CODE_B],[CODE_C],[CODE_D] "
> If get_exec_sql(mysql, rs) = 0 Then
> With Worksheets("WORK")
> .Cells.ClearContents
.Range("a2").CopyFromRecordset rs '一箇所訂正 a2でした
> .Range("a1:g1").Value = Array("YYYY", "MM", "CODE_A", "CODE_B", "CODE_C", "CODE_D", "KINGAKU")
> End With
> Call rs_close(rs)
Else '呼び出し側でエラー表示するので不要になりました
MsgBox "rs error" ←これも・・・
> End If
> Call close_ado
> Else
> MsgBox "cn error"
> End If
>(他の部分はichinoseさんの記述のまま使用しています。)
として実行してみて下さい
SQLの記述に問題があると思います。
私が疑っているのは
> " Where [FLG] = '1' AND [CODE_D] = '03' " & _
この行です。と言ってサンプルを提示されていないので感ですが・・。
''で囲むのは文字列です。FLGという列の書式は文字列なんですか?
CODE_Dも同様です。
FLGという列の書式が標準で上記のSQLでは 型が一致しないというエラーが出ます。
確認して下さい。
>なにか基本的な設定が足りないのでしょうか?
>質問時はSQL文を少し(Where句、項目数)削り記載しましたが、
>今回のSQLは実際のものです。
>開発はXP(Excel2002)、使用するのは2000(Excel2000)です。
>エラーは開発環境で出ています。
↑こんなクロスコンパイラーのような事がVBAで大丈夫なんですか?
私なら、使用するExcel2000で作成も行いますが・・・。
|
|