前提・実現したいこと
AccessVBAのSQL文の中で安値予想という項目で1日前のデータを参照しているのですが、日曜日が休みになるので、空欄ができます。この時は3日前のデータを参照したいです。
月曜日の予想は、金曜日の安値結果から
発生している問題・エラーメッセージ
SQLの4行目にあたる部分です。
ISNULL関数はエラー
Nz関数は余計に空欄が発生してしまい、うまく表示できない状態です。
該当のソースコード
AccessVBA
1Private Sub todays_Click() 2 3 Dim strSQL As String 4 strSQL = "INSERT INTO 本日の予想と結果(" & _ 5 "日付け,安値予想,高値予想,安値結果,高値結果,差,勢い) " & _ 6 "SELECT T1.日付け," & _ 7 "ISNULL((Cint(T2.安値*10*0.99) / 10),(Cint(T3.安値*10*0.99) / 10))) AS 安値予想, " & _ 8 "(Cint(T2.高値*10*1.01) / 10) AS 高値予想, " & _ 9 "T1.安値 AS 安値結果, " & _ 10 "T1.高値 AS 高値結果, " & _ 11 "(T1.高値 - T1.安値) AS 差, " & _ 12 "SWITCH(" & _ 13 " 差 >= 3 , '高' " & _ 14 ",差 >= 2 , '中' " & _ 15 ",差 >= 1 , '並' " & _ 16 ",差 < 1 ,'低' " & _ 17 ") AS 勢い " & _ 18 "FROM (ドル円 AS T1 LEFT JOIN ドル円 AS T2 " & _ 19 "ON T1.日付け = (T2.日付け + 1)) " & _ 20 "LEFT JOIN ドル円 AS T3 " & _ 21 "ON T1.日付け = (T3.日付け + 3)" 22 23 CurrentDb.Execute (strSQL) 24 25End Sub
試したこと
ISNULL関数、Nz関数を使っての確認
検索をかけるも、他のDBでは使えるISNULL関数もACCESSでは使えない?という情報も。
書き方がわからず、何が正しいのかわからなくなったのでこちらで質問させていただきました。
こちらをうまく表示するにはACCESSのSQLではどのように書いたらよいでしょうか?
詳しい方いらっしゃいましたら、ご教示ください。
よろしくお願いいたします。
それと、結合するときに前日のデータを参照するのですが、
LEFT JOIN の部分で T1.日付け -1 ではなくて、+1をすると標的には正しい状態になるのですがこちらについてわかればこちらについても教えていただきたいです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー