tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルShapeコマンドのparent-commandについて
記事No15101
投稿日: 2011/01/30(Sun) 20:02
投稿者wanko
先日 MSHFlexGrid について質問させていただいた wanko ともうします
前回の結論でRecordsetによるMSHFlexGridの構築にいたったわけですが、現在次のような問題にて躓いております。

まずは下を見ていただけますでしょうか?

'Connection---------------------------------------------------

cnShape.Provider = "MSDataShape"
cnShape.Open "Data Provider=MSDAORA;Data Source=qq;User ID=qq;Password=qq;"


'親、子それぞれのSQL-----------------------------

ParentSQL="SELECT A.aaa,B.bbb,C.ccc,D.ddd," & _
                  "E.eee,F.fff " & _
          "FROM (SELECT  G.aaa,NVL(H.hhh,0) AS hhh " & _
                "FROM TABLE_G@DB1 G,TABLE_H@DB1 H " & _
                "WHERE G.xxx=H.xxx(+)) A," & _
                "TABLE_B@DB1 B,TABLE_C@DB1 C,TABLE_D@DB1 D," & _
                "TABLE_E@DB1 E,TABLE_F@RIS F " & _
          "WHERE A.zzz=B.zzz AND A.sss=C.sss AND " & _
                "A.www=D.www AND A.vvv=E.vvv AND " & _
                "A.nnn=F.nnn"

*ただしAlias Aは各リレーションを満たすColumnを記述してあるものとする
*DB1はOracle9.2

ChildSQL="SELECT I.aaa,J.jjj " & _
         "FROM TABLE_I@DB1 I,TABLE_J@DB1 " & _
         "WHERE I.uuu=J.uuu " & _
         "ORDER BY I.kkk ASC"

ShapeSQL = "SHAPE (" & ParentSQL & ") " & _
           "Append((" & ChildSQL & ")  as NAME_A " & _
           "RELATE aaa=aaa"

'Recordset----------------------------------------------------

rsShape.Open ShapeSQL, cnShape, adOpenStatic, adLockBatchOptimistic

'--------------------------------------------------------------

*ParentSQL、ChildSQLともにDataEnvironmentにて正常に作成することができます。
*MSHFlexGridにも正常に表示されます

さて、これを実行すると、コマンドエラーとなります
実際のメッセージは職場に忘れてきたためここでは具体的な記述はできませんが、
コマンドもしくはコマンドの13行目付近に..."SELECT A.aaa,B.bbb,C.ccc,D.ddd,"
とエラー箇所を指摘してきます。
前述したようにDataEnvironmentからMSHFlexGridを作成することは可能です。
これはいったいどのようなエラーなのでしょうか?

実際のメッセージが示せない状況での質問申し訳ありませんが、ご存知の方いらっしゃいましたらご教示よろしくお願いします

[ツリー表示へ]
タイトルRe: Shapeコマンドのparent-commandについて
記事No15102
投稿日: 2011/01/31(Mon) 10:24
投稿者魔界の仮面弁士
> ShapeSQL = "SHAPE (" & ParentSQL & ") " & _
>            "Append((" & ChildSQL & ")  as NAME_A " & _
>            "RELATE aaa=aaa"

プロバイダコマンドを指定する場合は、
  "(" & ParentSQL & ")"
ではなく、
  "{" & ParentSQL & "}"
ですよ。
http://support.microsoft.com/kb/185425/


より詳しい構文を調べたいのであれば、
MDAC SDK (ado260.chm) 内の ADO プログラマーズガイドの第9章、
『正式な Shape 文法』の項を参照してみてください。

No.15090 で提示したオンライン版にも同項目がありますが、そちらは
肝心な文法表が欠落してしまっているので、詳細はローカル版をご覧ください。

[ツリー表示へ]
タイトルRe^2: Shapeコマンドのparent-commandについて
記事No15104
投稿日: 2011/01/31(Mon) 13:03
投稿者wanko
この括弧・・・そうだったのですか
なんとも間抜けで申し訳ありません
今夜試してみます

[ツリー表示へ]