1.クエリを使わずにSQL文で制御する方法
とりあえずDAOを使う
こんな感じに宣言
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim MQ As QueryDef
Set DB = CurrentDb
strSQL = strSQL & “SELECT ・・・
とりあえずVB6系では 結合代入 .= += とかが使えないので回りくどく書くしかない。 → strSQL = strSQL &
クエリ内では、ROUNDが使えないらしい。ビルドの一覧には出るのに結果は全く反映しないので注意!!
しかたなく、INT で対応。+0.99は少数第2で切り上げるための処置。
WHEREの()がくどいので削除したら、条件が適用されなくなったのでクエリで自動で作成されたカッコは消さない方がいい。
計算式がはいったカラムで整列やWHERE句を書くとパラメータクエリになってしまう。
開くときにいちいちパラメータが足りません、1を入力してください」とか聞いてくるのでそれを回避する方法
2.SQL文の実行で聞いてくる場合
Set MyQuery = DB.CreateQueryDef(“”) ‘クエリをセット
strSQL = “PARAMETERS [カラム名] TEXT;”‘SQL文の先頭に書く
コメントアウトする → ‘Set RS = DB.OpenRecordset(strSQL) これでは開けないので。
代わりにこの文を
With MyQuery ‘SQL文にパラメータを渡してから実行
.SQL = strSQL
.Parameters(0) = 1 ‘0はパラメータのインデックス、値1を入れる
Set RS = .OpenRecordset() ‘クエリ実行
End With