- ベストアンサー
oo4oでデータベース接続
VBでoo4oを使ってデータベースに接続、 コンボボックスでテーブル名を指定してコマンドボタンを押すとフレキシブルグリッドに選択されたテーブルの内容を表示させるというプログラムを作っているのですが… ・どうやってコンボボックスに全テーブル名を入れればいいのか ・テーブルの内容をフレキシブルグリッドに表示させるにはどういう風に記述すればいいのか この二点がわかりません。 教えていただけないでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
おつかれさまです、 以下のような感じでどーでしょうか 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
その他の回答 (3)
- takataka111
- ベストアンサー率46% (23/50)
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]) と指定すればよいのです。 がんばってください。
お礼
ありがとうございます。 なんとかエラーが無くなりテーブル名をコンボボックスに入れる事ができました! あとはフレキシブルグリッドなんですが… これはもう少し自力で頑張ってみようと思います(^^; 本当に助かりました。また今度お尋ねする事もあると思いますので、その時は是非またよろしくお願いしますm(__)m
- BlueRay
- ベストアンサー率45% (204/453)
横から、失礼します。 >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 にするのが良いでしょう。 こんな感じで如何でしょうか。
お礼
ありがとうございます。 さっそく試してみますね! USER_NAMESやTABLE_NAME等知らない用語が多くて… 少しずつ意味を覚えていこうと思います(^^)
- takataka111
- ベストアンサー率46% (23/50)
どこでどのようなエラーが出ますか?(どこの行で落ちますか?) セットすべきdatabase等の変数は定義しないといけませんよ あとコンボボックスcomboboxは自分の名前に置き換えないといけません 基本的にこれだけではコンパイルは通りません あくまで抜粋したものですから ちなみにdatabaseの宣言は以下のように書きます。 Global database As Object
お礼
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を扱う現場に行く事になってしまったので、付け焼き刃でも少しは理解しておこうと思ったのですが、やはり難しいです(苦笑) どうかお力添え宜しくお願いします。
お礼
早速の回答ありがとうございます。 試してみたのですが、エラーが出てうまくいきません。 上のソースで、IDやパスの他に僕が書き換えるべき場所を教えてくださると嬉しいのですが…(レベルが低くてすみません(^^;;