みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ExcelからACCESSへ接続するとエラーになる

ExcelからACCESSファイルに接続し、該当する値を落とし込もうとしているのですが、エラーになってしまいます。
ACCESSのクエリ経由では問題なく該当するものを表示しています。

Const ADO_CONNECT1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Const ADO_CONNECT2 = "フォルダ場所"

Dim dbCon As New ADODB.Connection
Dim dbRes As New ADODB.Recordset

Dim SqlSet As String

Public Sub 接続()

SqlSet = "SELECT "
SqlSet = SqlSet & "テーブル名.日時, テーブル名.排出数" & vbNewLine
SqlSet = SqlSet & "FROM テーブル名" & vbNewLine
SqlSet = SqlSet & "WHERE (排出数=0) AND Nz(DLookUp(""排出数"",""テーブル名"",""日時='"" & DMax(""日時"",""テーブル名"",""日時<'"" & [日時] & ""'"") & ""'""),-1)<>0 ;"


'mdb接続
dbCon.Open ADO_CONNECT1 & ADO_CONNECT2

'レコードセット
dbRes.Open SqlSet, dbCon, adOpenKeyset, adLockReadOnly



レコードセットの部分で
実行時エラー '-2147217900(80040e14)':
式に未定義関数 'Nz'があります。

と、出て処理が止まってしまいます。

イミディエイトでは
?SqlSet
SELECT テーブル名.日時, テーブル名.排出数
FROM テーブル名
WHERE (排出数=0) AND Nz(DLookUp("排出数","テーブル名","日時='" & DMax("日時","テーブル名","日時<'" & [日時] & "'") & "'"),-1)<>0 ;

と、なっており、これを該当するACCESSファイルのSQLビューに貼り付けると問題なく条件に一致した物が表示されます。
何故Excel経由だとエラーになるのでしょうか?

投稿日時 - 2015-01-07 19:12:12

QNo.8883440

困ってます

質問者が選んだベストアンサー

SQLSet組み立ての中の、日本語の列名を [ ] で括るとどうなりますか?

投稿日時 - 2015-01-07 20:53:22

お礼

解決しました、ありがとうございました

投稿日時 - 2015-01-08 17:05:27

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問