[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/05/18(Thu) 11:03
投稿者名:clement
Eメール:
URL :
タイトル:
クエリの存在チェック
初めて投稿させて頂きます。
困っているのでよろしくお願いします。
使っているのはVB6とAccess2003です。
Access内にはレポートを作ってありそのレポートを印刷するプログラムを
組んでいます。
レポートはVB6のプログラム内で作成したクエリテーブルを参照させています。

obj.CurrentDb.CreateQueryDef "CARD1", "SQL文"
でクエリを作成させているのですが作る前にCARD1という
クエリがあったら削除するというプログラムを組みたい
のですがクエリの存在チェックの仕方がわかりません。
削除はobj.CurrentDb.QueryDefs.Delete ("CARD1")を使っています。
初心者で申し訳ありませんがご教授のほうどうかよろしくお願いします

投稿時間:2006/05/18(Thu) 13:37
投稿者名:いな
Eメール:
URL :
タイトル:
Re: クエリの存在チェック
> クエリがあったら削除するというプログラムを組みたい
> のですがクエリの存在チェックの仕方がわかりません。

「exists」というキーワードを参考にすれば、
既に存在するレコードか否かのチェックは出来ます。

hhttp://www11.plala.or.jp/studyhall/access/sql03.html

投稿時間:2006/05/18(Thu) 16:22
投稿者名:clement
Eメール:
URL :
タイトル:
Re^2: クエリの存在チェック
> > クエリがあったら削除するというプログラムを組みたい
> > のですがクエリの存在チェックの仕方がわかりません。
>
> 「exists」というキーワードを参考にすれば、
> 既に存在するレコードか否かのチェックは出来ます。
>
早速のご返答ありがとうございます。
「exists」を使えばSQLで既に存在するレコードかどうかチェックできる
という事はわかったのですがCARD.mdbの中にCARDというテーブルが作ってあり
そこから抽出して作ったクエリの存在チェックをする事はできないでしょうか?
そのクエリをレポートが参照するようにしてあるのですが
度々申し訳ありませんがご教授お願いします。

Private Sub cmdPrint_Click()
    Dim obj As New Access.Application

    Set obj = GetObject(App.Path & "\テーブル名")
    'ここでCARD1というクエリが存在するかしないかを判断しあれば削除したい
    'obj.CurrentDb.QueryDefs.Delete "CARD1"
    Dim Result As Integer
    Result = MsgBox("印刷します。よろしいですか?", vbYesNo)
    If Result = vbYes Then
        'CARD.mdbに新規にクエリ作成
        obj.CurrentDb.CreateQueryDef "クエリ名", "SQL文"
        'レポート印刷
        obj.DoCmd.OpenReport "レポート名", acViewNormal
        obj.Quit
        Set obj = Nothing
    End If
End Sub
現在は上記のようなプログラムになっています。
よろしくお願いします。

投稿時間:2006/05/18(Thu) 23:10
投稿者名:だい
Eメール:dee_bassist@hotmail.com
URL :
タイトル:
Re^3: クエリの存在チェック
QueryDefsコレクションを列挙して、
その名前のクエリがあるかどうかを判定する関数を作成するのが
いいと思います。
ご参考。
hhttp://www.7key.jp/program/accapi/existq.html
または、
On Error Resume Nextで
クエリが存在しない場合のQueryDefs.Deleteのエラーを
無視するようにしてもいいかもしれません。

投稿時間:2006/05/19(Fri) 09:29
投稿者名:clement
Eメール:
URL :
タイトル:
Re^4: クエリの存在チェック
で、できましたーー!!
だいさんありがとうございました!!
ほんとに助かりました。

投稿時間:2006/05/19(Fri) 10:32
投稿者名:clement
Eメール:
URL :
タイトル:
Re^5: クエリの存在チェック
削除はできるようになったのですが
印刷の時にacViewNormalを指定しているのに
「キャンセル」「開く」「詳細」というAccessのダイアログが出る
のはなぜでしょうか?

投稿時間:2006/05/22(Mon) 16:23
投稿者名:clement
Eメール:
URL :
タイトル:
解決
> 削除はできるようになったのですが
> 印刷の時にacViewNormalを指定しているのに
> 「キャンセル」「開く」「詳細」というAccessのダイアログが出る
> のはなぜでしょうか?

自己解決しました。
どうやらAccess2003の時の参照設定でMicrosoft Access 11.0 Object Library
に設定したのが原因のようです。
Access2000を入れてMicrosoft Access 9.0 Object Libraryに設定するとAccessは
開かなくなりました。バージョンの違いだったようです。
お騒がせして申し訳ありませんでした。
また情報を提供してくださった方々ありがとうございました。