
見積のシステムを作る際、AccessからSQL Serverに接続をするためパススルークエリーにて実行させようとしたのですが、エラーが発生してしまいます。
SQLビューのコード
SELECT 見積明細備考.見積明細備考ID, 見積明細.見積明細ID, 見積明細.見積ID, 見積明細備考.型番, IIf((IsNull((SELECT Sum(Q_加工費.価格) FROM Q_加工費 WHERE 見積明細ID=見積明細.見積明細ID and 型番=見積明細備考.型番))),0,(SELECT Sum(Q_加工費.価格) FROM Q_加工費 WHERE 見積明細ID=見積明細.見積明細ID and 型番=見積明細備考.型番)) AS 加工費
FROM 商品 INNER JOIN ((見積明細 INNER JOIN 取引先 ON 見積明細.得意先ID = 取引先.得意先ID) INNER JOIN 見積明細備考 ON 見積明細.見積明細ID = 見積明細備考.見積明細ID) ON 商品.型番 = 見積明細備考.型番
GROUP BY 見積明細備考.見積明細備考ID, 見積明細.見積明細ID, 見積明細.見積ID, 見積明細備考.型番;
エラー内容
ODBC-- 呼び出しが失敗しました。
[Microsoft][ODBC SQL Server Driver][SQL server]isnullには引数が2個必要(#174)。[Microsoft][ODBC SQL Server Driver][SQL server]')'付近に不適切な構文があります。(#102)
IIfとIsNullを使い別クエリにある加工費の合計を計算し、見積明細備考というテーブルにある見積明細備考にあるID1つにつき加工費の集計結果を出力するレコードがありそれが原因だと思うのですが、どのように変更すればエラーがなくなるでしょうか?
長文になりましたが、ご助力願えればと思います。
宜しくお願い致します。
補足
見積(主キー 見積ID)ー見積明細(主キー 見積明細ID)ー見積明細備考(主キー 見積明細備考ID)
加工費(主キー 加工費ID)
材料費(主キー 材料費ID)
初回費用(主キー 初回費用ID)
運賃(主キー 運賃ID)
各テーブルに見積ID、見積明細IDがある
見積明細ID、見積明細備考にある型番から該当の費用を参照し合計を総合計クエリに表示させている
取引先(主キー 得意先ID)
商品(主キー 型番)
主キーを参照することで得意先名と商品名を表示させるようにしている
データベースツールの「データベースの最適化」とデータベースツールの「パフォーマンスの最適化」では特に変化はありませんでした。
No.1ベストアンサー
- 回答日時:
null値検索をしたいのであれば、isnull の間にスペースを入れたら(is null)どうだろう?
https://learn.microsoft.com/ja-jp/sql/t-sql/func …
No.2
- 回答日時:
ISNULL (Transact-SQL):
https://learn.microsoft.com/ja-jp/sql/t-sql/func …IsNull 関数: https://support.microsoft.com/ja-jp/office/isnul …
上記違いがあるので、SQL Server用に書き換える必要があるかと。
IIf((IsNull(※S※)),0,(※S※)) → ISNULL(※S※,0)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessの帳票フォームで重複デ...
-
MS ACCESS 商品価格変更時の該...
-
アクセスのテーブルを分ける理...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Accessでテーブル名やクエリ名...
-
Oracle 2つのDate型の値の差を...
-
FROM の中で CASE を使えるでし...
-
異なるサーバのDBデータ同士を...
-
INSERT INTO ステートメントに...
-
ORACLEでLONG項目からCHAR項目...
-
ACCESSのクエリで集計で、先頭...
-
Access テキスト型に対する指定...
-
固有レコード識別子の選択とは??
-
SUBSTRING 関数に渡した長さの...
-
BLOB型のPDF出力の方法
-
エクセルグラフの凡例スペース
-
2つのテーブルを比較して一致し...
-
Accessクエリーで両方のテーブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスのテーブルを分ける理...
-
Accessフォーム全レコードをPDF...
-
Accessの帳票フォームで重複デ...
-
Access2021 「ISNULL関数には引...
-
あるフィールドの最大値を条件...
-
MS ACCESS 商品価格変更時の該...
-
ACCESS VBA クエリを開く
-
マイクロソフト アクセス リレ...
-
ボイスコッド正規形
-
フィールド名が取得したい
-
SQL文について
-
SQL文でのDISTINCT
-
こんな関数か式?SQLってありま...
-
データベースの正規化について...
-
accessのレポートで困ってます。
-
SQLで合計表示
-
usingの意味がわからないのですが
-
SQL文でexistsの使い方がわかり...
-
曜日を表す項目
-
正規化すると遅くなるというの...
おすすめ情報
ご回答ありがとうございます。
isnull→is nullにしたところ別エラーが発生しました。
ODBC-- 呼び出しが失敗しました。
[Microsoft][ODBC SQL Server Driver][SQL server]キーワード'Is'付近に不適切な構文があります(#156)。[Microsoft][ODBC SQL Server Driver][SQL server]')'付近に不適切な構文があります。(#102)。[Microsoft][ODBC SQL Server Driver][SQL server]')'付近に不適切な構文があります。(#102)
申し訳ございませんがこちらのエラーについて何かわかるでしょうか?
osamuy様
ご回答ありがとうございます。
以下のように変更したところ別のエラーが発生しました。
IsNull(SELECT Sum(Q_加工費.価格) FROM Q_加工費 WHERE 見積明細ID=見積明細.見積明細ID and 型番=見積明細備考.型番,0) AS 加工費
エラー内容
[Microsoft][ODBC SQL Server Driver][SQL server]SELECT付近に不適切な構文があります。(#156)。[Microsoft][ODBC SQL Server Driver][SQL server]')'付近に不適切な構文があります。(#102)
こちらのエラーについて何かわかるでしょうか?