2016-09-09 1 views
0
Set db = CurrentDb 
Set qdf = db.CreateQueryDef("Unique_Address1_qry", strSQL) 
Application.RefreshDatabaseWindow 

strSQL = "SELECT field1 AS field1, field2 as field2 " & vbCrLf & _ 
"'" & strScenario & "'" & "AS Scenario, " & vbCrLf & _ 
"FROM table_tbl " & vbCrLf & _ 
"GROUP BY field1,....; " 

strScenarioは「[フィールド2]/2 + 3」 結果のような計算式が含まれて言うアサーションfiedがごとのレコード、「[フィールド2]/2 + 3」で計算の仕組みを示している。アクセスダイナミッククエリの作成は

+0

変数の前後に一重引用符を削除しますか? ''は返すリテラルテキスト文字列であることをクエリに伝えています。 –

答えて

1

クエリ実際にはにパラメータを設定する必要がありますが、​​はリテラルとして引用されています。また、「field2」の後にカンマがなく、​​の後ろにスペースがありません。

それはより次のようになります。

strSQL = "SELECT field1 AS field1, field2 as field2, " & _ 
    strScenario & " AS Scenario FROM table_tbl GROUP BY field1,....; " 

メモあなたは、単にあなたの割り当て後Debug.Print strSQLを置くと、イミディエイトウィンドウでそれを見て、構築SQLの結果を見ることができます。

+0

私は単純な公式を使用するとうまくいきますが、IIF([SumOfVolume]> = 5; [SumOfLDM] * 1750; 0)のようなものを使い始めると問題になります。 isseを作成するIIF関数ですか? – Dirk

+1

@Dirk - 直前のウィンドウで結果を確認します。それはMS Accessのための有効なSQLですか?この場合、 ' - 'はステートメントを終了します - '、'でなければなりません。疑問がある場合は、Access SQLデザイナにコピーして実行してください。 Accessは構文エラーがどこにあるかを知らせます。 – Comintern

+0

私は変更しました。 IIFステートメントの場合は1,2、1.2の場合は動作します。 Thxは助けをたくさんしています。 :-) – Dirk

2

私は@Cominternが言ったことを繰り返すつもりはないが、私はあなたに釣り竿を与えることができます:

  • 場所にブレークポイント(F9)すぐstrSQL =割り当てを次の行に。
  • コードを実行します。 即時ペイン、およびタイプ育てる
  • 実行がブレークポイントに到達し、+ 押しCtrlキー G:文字列値

    ?strSQL 
    

この意志の出力を(?が速記ですPrint)、あなた自身を検査し、クリップボードにコピーし、新しいクエリに貼り付けて実行しようとすることができます。あなたのコードは、有効なSQLクエリを生成するまで

次にあなたが、もう一度?strSQLを試してみてください、修正strSQL =割り当てに戻って現在の行を移動し、コードを修正&繰り返しをすすぐことができます - あなたは、ブレークポイントを削除しにF5を打つことができます実行を再開し、作業コードを持っています。


人に魚を与える、彼はその日のために食べますよ。男に釣り竿を与え、彼は残りの人生で食べる。

+1

本当です。このためのリンク:[VBAコードをデバッグする方法](http://www.cpearson.com/excel/DebuggingVBA。aspx)と[VBAで動的SQLをデバッグする方法](http://stackoverflow.com/questions/418960/managing-and-debugging-sql-queries-in-ms-access/1099570#1099570) – Andre

関連する問題