• ベストアンサー

ACCESSを活用して商品変動を捉えたい(4再再)

まだだめなようです。。。 http://okwave.jp/qa/q8782306.html ; を外すと、 !クエリ式'*'の構文エラー:演算子がありません。 と出ます。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

以前の回答時に突っ込み入れるべきだったのか そもそも DBLookup って何ですか?

その他の回答 (2)

回答No.3

補足: DLookup() http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx DBLookup()はDLookup()の高速版。同時に、SELECT文全体を書ける拡張版。例えば、order by 節も書く事ができます。DLookup()は、where節のみ。よって、DLookup()は SELECT 受注履歴.受注日, 受注履歴.会員番号 FROM 受注履歴 ORDER BY 受注履歴.受注日 DESC; などのクエリを準備しなければ、DBLookup()と同じ結果は得られません。もしくは、「単一SELECT文で済ます」ことを諦めて、複雑なSQL文に挑むか? 添付図のDLookup()は、上述のSQL文を'クエリ17'として登録しています。これで、両者は同じ結果を得ます。また、注文一回のお客様を省くWhere節も同様に書き換え可能。その要領は、先に示した通りです。 PS、ただ、私は<クエリは作らない・利用しない>主義。全て、SQL文を直接に書く主義。ですから、クエリを準備するやり方には抵抗があります。

回答No.2

SELECT DBLookup("SELECT 受注日 FROM 受注履歴 WHERE 会員番号=" & [会員番号] & " AND 受注日 < #" & [受注日] & "# ORDER BY 受注日 DESC") AS 前回受注日, DateDiff("d",前回受注日,受注日) AS 切り替え, * FROM 受注履歴 WHERE (((DBLookup("SELECT COUNT(受注日) FROM 受注履歴 WHERE 会員番号=" & [会員番号]))>1)) ORDER BY 受注履歴.会員番号, 受注履歴.受注日; 修正1、*⇒,* 修正2、  DBLookup(⇒,DBLookup( 修正3、  DateDiff(*⇒,DateDiff( 後は、この3つ。 ※'スイッチング'を'受注履歴'に置換してテストしたところ、上の3つが引っかかりました。’,'を追加し、全角ブランクを消すことで保存でき実行もできました。 解答は、改行してかつ全角ブランクを挿入して視認性を高めています。いずれも、それに起因する不具合。上記3つを修正したら100%上手くいきます。標準モジュールに DBLookup()を追加しておくのは当然ですが・・・。

関連するQ&A