tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル別のDataSourceにクエリーをCloneする方法
記事No12144
投稿日: 2008/04/29(Tue) 12:04
投稿者石田専太郎
下のようにobjCnnAにある"Query1"クエリーをobjCnnBにCloneしようとしましたが、失敗しました。 2行目では当然エラーが発生しますので、Resume Nextで3行目を実行しましたが、うまくゆきません。 Cloneする方法を教えてください。
objRstA.Open "Query1", objCnnA, adOpenStatic, adLockOptimistic, adCmdStoredProc  
objRstB.Open "Query1", objCnnB, adOpenStatic, adLockOptimistic, adCmdStoredProc    
Set objRstB = objRstA.Clone

[ツリー表示へ]
タイトルRe: 別のDataSourceにクエリーをCloneする方法
記事No12145
投稿日: 2008/04/29(Tue) 15:44
投稿者魔界の仮面弁士
> 下のようにobjCnnAにある"Query1"クエリーをobjCnnBにCloneしようとしましたが、
Recordset.Clone メソッドは、データのコピー(複製)を作る物ではなく、
同じデータに対する別のカーソルセットを作るだけですが、その点は大丈夫ですよね?


> 失敗しました。
これだけで状況を想像するのは厳しいです。どのように失敗したのでしょうか?

エラーが出るような場合は、その内容を正確に転記しておいてください。
期待動作しない場合は、期待していた結果と実際の結果を記述してください。


> objRstB.Open "Query1", objCnnB, adOpenStatic, adLockOptimistic, adCmdStoredProc    
この行は、どのような結果を期待して用意された物でしょうか?

というのも、その次にある
> Set objRstB = objRstA.Clone
という 1 行では、
 (1) objRstB が参照していた Recordset があれば、それを破棄。
 (2) objRstA のクローンを作成。
 (3) objRstB に、2 で作成されたクローンを参照させる。
という 3 段階の処理が行われるため、それ以前に objRstB を操作するのが
無意味なように思えるので…。


> Resume Nextで3行目を実行しましたが、うまくゆきません。
Resume ステートメントを使う前には、On Error ステートメントが必要ですよ。

[ツリー表示へ]
タイトルRe^2: 別のDataSourceにクエリーをCloneする方法
記事No12146
投稿日: 2008/04/29(Tue) 16:59
投稿者石田専太郎
魔界の仮面弁士様 早速のご回答有難うございます。

> Recordset.Clone メソッドは、データのコピー(複製)を作る物ではなく、
> 同じデータに対する別のカーソルセットを作るだけですが、その点は大丈夫ですよね?
Recordset.Clone に対する私の理解が浅かったと思います。申し訳ありません。
てっきり別のDBに同じクエリーを作成できるものと思っていました。

私がやりたかったことは Accessで提供されている CopyObjectメソッドのように、別のADO.DBにコンパイル済みクエリーをコピーすることです。何か方法があると思うのですが、お教え願います。

[ツリー表示へ]
タイトルRe^3: 別のDataSourceにクエリーをCloneする方法
記事No12147
投稿日: 2008/04/29(Tue) 17:48
投稿者魔界の仮面弁士
> 別のADO.DBにコンパイル済みクエリーをコピーすることです。

選択クエリやアクションクエリ自体は、CREATE VIEW や CREATE PROCEDURE を用いて
 SQL = "CREATE VIEW ViewName AS SELECT * FROM TableName"
 Con.Execute SQL
のようにして ADO から生成できますが……データベースが異なれば、
そこに含まれるテーブル定義も異なるのですから、クエリのコピーは無意味かと。

# コピー元のクエリ内容を知りたいなら、ADOX や DAO の利用を検討してみてください。

[ツリー表示へ]
タイトルRe^4: 別のDataSourceにクエリーをCloneする方法
記事No12149
投稿日: 2008/04/30(Wed) 11:36
投稿者石田専太郎
> # コピー元のクエリ内容を知りたいなら、ADOX や DAO の利用を検討してみてください。
DAOでコピー元のクエリ内容を得る方法が見つかりました。
教えて頂き有難うございます。

[ツリー表示へ]