サブフォームのデータを条件により更新するフォームを作ってみた・・・
Dim cat As New ADOX.Catalog
Dim cmd As New ADODB.Command
Dim obj As AccessObject
Dim sql As String
cat.ActiveConnection = CurrentProject.Connection
For Each obj In CurrentData.AllQueries
If obj.Name = "tmp" Then
cat.Views.Delete "tmp"
Exit For
End If
Next
(中略)
① sql = "select * from database1"
(中略)
cmd.CommandText = sql
cat.Views.Append "tmp", cmd
subform1.SourceObject = "query.tmp"
Set cat = Nothing
という風に、元のクエリを削除→クエリを作成でつくってみた。
なんか無駄な動作が多いと思いつつもしろうとの手習い状態なわけで、
これ以外思いつかんかった・・・。
そしてなんか動いた。。
select文は。
ところが、
クロス集計クエリを作ろうとしたらしょっぱなのクエリ削除でエラー・・・。
なんのエラーかわからない、というか理解できないけど削除できない。。。
ちなみに①のsql文を↓こんな感じに。(クエリに直貼りしたら動く)
② sql = "transform sum(f1) as f select f2 from tbl1 group by f2 pivot f3"
調べてみると、
クロス集計クエリはViewsコレクションに含まれないらしいですよ。
なので削除でエラーが発生した、と。
途方にくれつつ、大したことではなかったので放って置くことにしたのだが、
ふと?
そもそも削除しなけりゃいいんじゃん。という・・・
で、一切合切を捨て去り、こんな感じ。
CurrentDb.QueryDefs("tmp").sql = sql
Me.subform1.SourceObject = "query.tmp"
最初のと比べるとかなりスッキリ、というかなんで削除なんだ、と。
これでクロス集計もOK(たぶん)