• ベストアンサー

oo4oでデータベース接続

VBでoo4oを使ってデータベースに接続、 コンボボックスでテーブル名を指定してコマンドボタンを押すとフレキシブルグリッドに選択されたテーブルの内容を表示させるというプログラムを作っているのですが… ・どうやってコンボボックスに全テーブル名を入れればいいのか ・テーブルの内容をフレキシブルグリッドに表示させるにはどういう風に記述すればいいのか この二点がわかりません。 教えていただけないでしょうか。

  • mrkk
  • お礼率94% (204/216)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

おつかれさまです、 以下のような感じでどーでしょうか sql = "SELECT ITEM FROM COMBOTABLE" Set session = CreateObject("OracleInProcServer.XOraSession") Set database = session.DbOpenDatabase("DBNAME", "ID" & "/" & "PASS", 0&) Set dynaset = database.dbcreatedynaset(sql, 0&) If dynaset.BOF = True And dynaset.EOF = True And   dynaset.RecordCount = 0 Then MsgBox "NoData" Else i = 1 Do Until dynaset.EOF If i > 1 Then combobox.AddItem CStr(dynaset![ITEM]) Else End If i = i + 1 dynaset.MoveNext Loop End If

mrkk
質問者

お礼

早速の回答ありがとうございます。 試してみたのですが、エラーが出てうまくいきません。 上のソースで、IDやパスの他に僕が書き換えるべき場所を教えてくださると嬉しいのですが…(レベルが低くてすみません(^^;;

その他の回答 (3)

回答No.4

ITEMとは下記SQL文で抽出フィールドに指定した           ↓ここのこと sql = "SELECT ITEM FROM COMBOTABLE" そちらの環境(データベース)でコンボに 表示させたいテーブルのフィールド名を指定する 必要があります。 つまり COMBOテーブル INDEX COMBOFIEL_DNAME ------------------------- 1      りんご 2      ばなな 3      みかん このようなテーブルがあったとするとSQL文は sql = "SELECT COMBOFIEL_DNAME FROM COMBOテーブル" となり combobox.AddItem CStr(dynaset![COMBOFIEL_DNAME]) と指定すればよいのです。 がんばってください。

mrkk
質問者

お礼

ありがとうございます。 なんとかエラーが無くなりテーブル名をコンボボックスに入れる事ができました! あとはフレキシブルグリッドなんですが… これはもう少し自力で頑張ってみようと思います(^^; 本当に助かりました。また今度お尋ねする事もあると思いますので、その時は是非またよろしくお願いしますm(__)m

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.3

横から、失礼します。 >sql = "SELECT ITEM FROM COMBOTABLE" これは、あくまで記述サンプルだと思うので (ITEMと言うカラム名のあるテーブルは有りませんよね?) と言うことで >sql = "SELECT * FROM USER_TABLES" と書いて、全テーブル取得は構わないと思いますが テーブル名の取得のみであれば、 sql = "SELECT TABLE_NAME FROM USER_TABLES" の方がいいと思いますよ。 >combobox.AddItem CStr(dynaset![ITEM]) これのITEMはカラム名なので、上記のテーブル一覧からであれば ITEM → TABLE_NAME にするのが良いでしょう。 こんな感じで如何でしょうか。

mrkk
質問者

お礼

ありがとうございます。 さっそく試してみますね! USER_NAMESやTABLE_NAME等知らない用語が多くて… 少しずつ意味を覚えていこうと思います(^^)

回答No.2

どこでどのようなエラーが出ますか?(どこの行で落ちますか?) セットすべきdatabase等の変数は定義しないといけませんよ あとコンボボックスcomboboxは自分の名前に置き換えないといけません 基本的にこれだけではコンパイルは通りません あくまで抜粋したものですから ちなみにdatabaseの宣言は以下のように書きます。 Global database As Object

mrkk
質問者

お礼

combobox.AddItem CStr(dynaset![ITEM])の一文でエラーが出ます。 「フィールド'ITEM'は見つかりません」と出ます。ITEMの部分を変えればいいのだと思ったのですが、どうすればいいかわからず… Set dynaset = database.dbcreatedynaset(sql, 0&) の部分でも引っかかったのですがこれは sql = "SELECT ITEM FROM COMBOTABLE"を sql = "SELECT * FROM USER_TABLES" に変えたら抜けました(まずいでしょうか…) 来週月曜日にoracle+VBを扱う現場に行く事になってしまったので、付け焼き刃でも少しは理解しておこうと思ったのですが、やはり難しいです(苦笑) どうかお力添え宜しくお願いします。

関連するQ&A

  • データ型について(oo4o)

    OraSession型ってバージョンによって 使えたり使えなかったりするんですか? 例えば下記のように記述してあるプログラムを Public OraSession As OraSession 'オラクルセッション用変数名 Oracle8i8.1.5では大丈夫だったのに、Oracle8i8.1.7にしたら Object型にしないと駄目だったんです。 OraSessionというデータ型は避けたほうがいいのでしょうか。 ちなみにVB5.0のプログラムをVB6.0でコンパイルしようと して起きた問題です。 VBとoo4oのバージョンの問題でもあるんでしょうか。

  • 該当件数を表示させたい。

    VB6でプログラムを作っています。コンボボックスで内容を選んでコマンドボタンを押すと、データベース(Access2002)にある同じ内容のものの件数が表示されるには、どのようなソースを書けばいいですか?

  • oo4o+ACCESS(VBA)で出来ますか?

    VB6とORACLE9i(oo4o)で開発しているものがあります。 これをAccess(VBAとoo4oを使用して)でも同じように「Dynaset」などを使用してOracleのデータを加工することは可能でしょうか? また、VBでは、一覧を出したいときは、SPREADなどを使用して開発しておりますが、Accessを使用した場合同様なことは出来るのでしょうか? 可能な場合Accessでは、モジュールから直接フォーム上にデータを表示することは、できますでしょうか?一度テーブルなどに落としてからという手間が必要になるのですか?どうぞ、宜しくお願い致します。

  • 助けてください!!データベースになると思うのですが!

    VB6を使い、データベースを作らなければならなくなりました。  仕様は、ローカルのファイルサーバを使い20人ほどでデータを共有し使うというものです。プログラムは、商品名をコンボボックスに入れておき、選択すると在庫状況や金額がわかるようにしたいのが一つです。まだあるのですがとりあえずこれだけでも教えてください。  ちなみにデータベースは初心者です!!  参考ページとかでもいいので教えてください。お願いします。

  • Oracle12cとのoo4o接続

    サーバー上のDBが「Oracle 12c(12.2)」です。 クライアントは「Windows7」で「Oracle Client 11.2.0.4」がインストールされている場合、クライアント上のプログラムから、サーバー上のOracleデータベースに「oo4o」で接続できますでしょうか?

  • VBのOO4OでSQL文

    VBのフレキシブルグリッドにオラクルからデータを取って表示させているのですが、読み終わったら、今度はcloseしないといけない・・・とよく見るのですが、 どうやって記述したらよいかわかりません。。 ヘルプを参考に試してみたのですが、どうもうまくいきません。 レスいただけませんでしょうか? よろしくお願いいたします。

  • oo4o接続でのNVL関数について

    度々、同じような質問をしてしまいますが、 ご存知の方がいらっしゃいましたら、 ご教授願います。 現在、以下の環境で開発を行っています。 OS:Windows2000Professional 言語:VB6sp6 サーバ:Oracle8i 接続方法:oo4o 8.1.7.3.15(パッチあて済み) NVL関数にて、数字属性の項目を、 Null値なら、ZEROに置き換えるようSQLを発行しているのですが、 プログラムで計算に使おうとすると、 Null値が入ったままで落ちてしまいます。 実際プログラムで編集しているSQLを、 SQLPLUSで発行してみると正しく動作しているのですが。。 ”oo4o接続だと、NVL関数が正しく使えない” というような情報ってありますか? 正しく使う方法はありますか?

  • vbデータベースのコンボボックスの連動

    お世話様です。 VBでデータベースを作っています。 Accessのテーブルからコンボボックスで、レコードを 読み込んでるのですが、1つ目のコンボボックスで 選択した際に、他のコンボボックスも連動するようにするにはどうすればいいでしょうか?? たとえば  コンボボックスであるレコードを選択。 他のコンボボックスでは、先のコンボボックス で絞り込まれたレコードのみ選択できるようにする。 それに伴い他のフィールドも連動するということです。 どうぞよろしくお願いいたします。

  • oo4oのリファレンスが見たいのですが・・。

    初歩的な質問かもしれませんが・・。 oo4o(Oracle Objects for OLE)のリファレンスを 読みたいのですが、何を見ればいいのでしょう? MSDN?オラクルのマニュアル? どちらも見てみたのですが、みつかりませんでした。 探し方が悪いのでしょうか? 簡単なリファレンスなら手元にあるのですが・・。 「このメソッドの引数はSQL命令&オプションで・・」 というところで記述が止まっていて、「オプションには どんな値が指定できるのか」まで突っ込んだ資料がなく て困っている状態です。 よろしくお願いいたします。

  • 7.3.4から10gへのバージョンアップ時のoo4o使用アプリに関して

    現在Oracle 7.3.4でDBが組んであり、VB6にてoo4oにて接続しているアプリケーションがあります。 このデータベース及びクライアントをOracle10gにバージョンアップすると、当然oo4oのバージョンも新しくなるかと思われるのですが、この時、アプリ側では以前のままにて動作出来ますでしょうか? それとも何らかの対策が必要でしょうか?

専門家に質問してみよう