- PR -

VB6からAccess2003のクエリーを作成する方法

1
投稿者投稿内容
early
会議室デビュー日: 2005/08/26
投稿数: 5
投稿日時: 2006-07-04 11:11
タイトルどおりなんですが、動的にVB6からクエリーを作成したいのです。

WEb等で検索したのですが、
探し方が悪いのか情報を見つけることができませんでした。
もし、分かる方がおられましたら、ぜひご教授ください。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 11:34
引用:

earlyさんの書き込み (2006-07-04 11:11) より:

タイトルどおりなんですが、動的にVB6からクエリーを作成したいのです。
WEb等で検索したのですが、探し方が悪いのか情報を見つけることができませんでした。
もし、分かる方がおられましたら、ぜひご教授ください。


CREATE VIEW コマンドですね。

コマンドは Access と同じですから、"VB だから" とか考えなくて良いでしょう。
プロバイダは ADO でも DAO でも良いです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
early
会議室デビュー日: 2005/08/26
投稿数: 5
投稿日時: 2006-07-04 11:39
おおーー!!
早速のご回答ありがとうございます。
なるほど CREATE VIEW ですか!

これまでほとんどビュー等を使ったことが無かったので
初めて知りました。

じゃんぬねっとさん本当にありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 11:53
引用:

earlyさんの書き込み (2006-07-04 11:39) より:

これまでほとんどビュー等を使ったことが無かったので初めて知りました。


Acccess では、[クエリ] と呼んでいるものです。

引用:

じゃんぬねっとさん本当にありがとうございました。


ADO でも DAO でも良いので、解決されたら、フィードバックだけお願いします。(*_ _)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
early
会議室デビュー日: 2005/08/26
投稿数: 5
投稿日時: 2006-07-04 12:18
申し訳ございません。
早く回答していただきテンションが上がってしまいました。
フィードバックって言うのは実際に実行した内容をお書きすればいいんですかね。

一応、下記がVBより実行した処理です。
分かりにくかったらごめんなさい m(__)m

Public PBCnn As ADODB.Connection
Public PBRst As ADODB.Recordset

'***********************
'ADO接続処理
'***********************
strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test.mdb;Persist Security Info=False"
Set PBCnn = New ADODB.Connection
PBCnn.Open strCnn

'***********************
'ビューをあらかじめ削除
'***********************
PBCnn.Execute "Drop View test "

'***********************
'ビューを作成
'***********************
PBCnn.Execute "Create View test AS Select * From 出荷データ "


こんな感じです。
何か不足している情報があれば追加させていただきます。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 12:30
引用:

earlyさんの書き込み (2006-07-04 12:18) より:

フィードバックって言うのは実際に実行した内容をお書きすればいいんですかね。


はい、そのとおりです。
フィードバック、ありがとうございます。

引用:

Public PBCnn As ADODB.Connection
Public PBRst As ADODB.Recordset


ただの削除漏れかと思いますが、ADODB.Recordset は必要ないですよね?

それと、この 2 つのオブジェクトは、なぜ Public メンバなのでしょうか?
ローカル メンバの方が、参照カウントのデクリメントによる Terminate が発生するので安全だと思います。

引用:

こんな感じです。
何か不足している情報があれば追加させていただきます。


Close メソッドについても欲しかったのですが、
Connection などが Public メンバであるので、書けなかったみたいですね。(;^-^)

コード:

    Private Sub MosaMosaAA()
        Dim oConnection As ADODB.Connection
        Set oConnection = New ADODB.Connection

        Call oConnection.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Test.mdb;")

        ' Close メソッドを保証する
        On Error GoTo Finally
        Call oConnection.Execute("DROP VIEW Test")
        Call oConnection.Execute("CREATE VIEW Test1 AS SELECT * FROM [出荷データ]")
        On Error GoTo 0

    Finally:
        If Not oConnection Is Nothing Then
            If oConnection.State <> adStateClosed Then
                On Error Resume Next
                Call oConnection.Close
                On Error GoTo 0
            End If
        End If
    End Sub


ミニマム コードとしては、こんな感じだと思います。(検証はしていません)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
early
会議室デビュー日: 2005/08/26
投稿数: 5
投稿日時: 2006-07-04 13:16
なるほど、ミニマムコードを書くのも難しいですね。
エラー処理やパフォーマンス等の考慮をあまり行っておりませんでしたので、
勉強になります。

コード全体を見直さなければいけないかもです(^^;

1

スキルアップ/キャリアアップ(JOB@IT)