サブフォームのデータを条件により更新するフォームを作ってみた・・・




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(たぶん)