はじめまして。よろしくお願いします。
ODBCを利用して、データベースをアクセスしようと思っています。
書籍等を覗いてみると、OpenDatabaseメソッドを使用して、
OpenRecordsetメソッドでレコードセットを作成する。
とかいてあります。
今回、僕が扱うデータベースは2つ(ODBC接続文字列のDATABASE
が2個指定するケース)ありまして、その場合の指定方法が分からず
悩んでいます。もちろん、2つのデータベースをSQLでレコードを作成
します。
どのような指定が必要なのでしょうか?
初心者の質問、また言葉足らずの面もあって申し訳ございませんが、
お気づきの方が居られましたらご教授ください。
No.5ベストアンサー
- 回答日時:
なるほど、売上データの一覧を出したいんだけど、
その明細の担当者や商品名などのマスタ(定数)データは他のDBですよ、というわけですね。
いくつか方法はありますが・・・
いちばん簡単なのは、たとえば
「担当者名抽出関数」や「商品名抽出関数」などを作成して、
引数にコードを指定すれば、名称を戻り値として返す構造にしておきます。
で、売上明細を1レコードづつ描画していく際に、
その関数の戻り値を設定していくやり方。
このやり方がいちばん簡単ですが、同時使用ユーザー数が多かったり、
ネットワークがヘボで遅かったりすると、レスポンスに難ありです。
各名称の抽出関数ではかならずレコードセットオブジェクトを開放してください。
もうひとつは・・・
Accessのmdbを1つワークテーブルとして作成しておき、
売上明細のテーブルと各名称のマスタテーブルをリンクさせておくこと。
こうすれば、そのAccessMDBに貼られたリンクテーブルは同一DB上として
扱うことが出来ます。
このやり方の問題点は、MDBのリンクを使用しているので、環境に依存する、
ということです。フォルダ構造などが変わると、
リンクも再度貼りなおしになるため、メンテナンスに気を使います。
私なら・・・クラ/サバ構造であることを前提にすれば、前者かな。
外していたらごめんなさい。
No.4
- 回答日時:
経験者に格上げ。
何だかコーディングするよりも、設計の問題って気がして、
あなたがちょっと気の毒。
2つDBがあって、その都度両方を参照して画面に出力するというのは
できますけど、
パフォーマンスを考えたら、ひとつのDBに格納すべきです。
それで、2つのテーブルを結合するSQLを一個書けば画面に出力したい
レコードを取得することができるかと思います。(***1)
本題。DBが分かれているなら、2回SQLを発行するしかないですよ。
マスターDBを検索して、出力させる
部店コード、部店名、[個人コード1]、個人名、商品コード、商品名
のデータを表示させる。
次に[個人コード1]に対応するデータを条件(Where句)で指定して、
それに対応する
部店コード、個人コード、商品コード、日別の売上高、売上数量
を売上明細DBより取得する。
DBが二つあるのはメインをサブという位置付けだと思いますが(うそかも)、
メインの情報をサブにバッチ等でコピーするということができれば、
(***1)のように出来ます。
No.3
- 回答日時:
ひょっとして「同じDBにある2つのテーブルに接続したい」ということですか?
でも接続文字列が2つあるんですよねぇ・・・?
まったく違うDBにあるテーブルのデータを結合するには、
SQL一発で行うのは不可能だと思いますが・・・
MDBをつかって、MDBにその2つのDBのテーブルをリンクしておけば、
そのMDBを開けば、可能ですが。
ただ、結合した結果を格納するのはどこになるんでしょうか?
ただ処理に必要なだけであれば問題にはなりませんが・・・。
DBの状況や、具体的に何をしたいのか(仕様面で)を
可能な限り教えていただければもう少し細かいアドバイスが出来るんですが・・・
No.2
- 回答日時:
>2つのレコードを結合する方法が分かりません。
>結合して1つのレコードを作成するには、どのようにすれば良いのでしょう?
>よろしくお願いします。
..すいません、さっぱり書いている内容がわかりません。
結合するといえば「2つのテーブルを結合する」なんて言い方が
あります。
私の回答は「DBオブジェクトを結合することは出来ない」と言う意味で
書いたのであって、レコードを結合するという意味で書いたのではありません。
あなたの書いているソースコードを見せてください。
それでどこが分からないのか書いてもらえれば
ほかの方もアドバイスできると思います。
この回答への補足
回答有難うございます。
おっしゃっている意味は理解していましたが、
私の文章だと分かりづらかったですねm(__)m
ちょっと質問内容をやりたいことに変えてみます。
環境的にはDBが2つあります。
1つはマスターDBとでもいいましょうか。部店コード、部店名、個人コード、
個人名、商品コード、商品名等がいくつかのテーブルに分けて収録してあります。
もう1つは売上明細DBとでもいいますか。そのなかには、部店コード、
個人コード、商品コード、日別の売上高、売上数量等がいくつかのテーブルに
分けて収録してあります。
仕様としては、売上高別にそれぞれの名称を付加して、画面に表示させたいのです。
以上がやりたいことになります。
(上記の説明はあくまで例としてあげていますが本来の仕様も大きくかけ離れて
はいません。)
上記の項目が一つのDBで収録してあれば、分かるのですが、DBが2つの場合、
良い方法が思いつきません。効率の良い方法があれば教えて下さい。
No.1
- 回答日時:
2つのDBをひとつのオブジェクトで指定するってできるんですかね?
できないんではないですか?
私ならDBごとにオブジェクトを作成して、それぞれのオブジェクトに
対して、レコードを作成しますけど、それではだめなのかな?
この回答への補足
回答有難うございます。やはり、出来ないのですかね。
申し訳ないのですが、もう少しお付き合いください。
zerosixさんの案も考えましたが、2つのレコードを結合する方法が
分かりません。
結合して1つのレコードを作成するには、どのようにすれば良いのでしょう?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データがあれば○○なければのSQL
-
ACCESSのクエリ、SQLに変数を使...
-
VBAでテーブル名とカラム名を動...
-
アクセスで定数を利用したい。
-
ACCESS VBAでテーブル内の特定...
-
重複した複数のレコードを1レ...
-
ACCESS DCOUNTの抽出条件について
-
別のaccessファイルからデータ...
-
SQLServer→Access インポート
-
Access2010のレポートで出来る...
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
Excelシート上のマクロを登録し...
-
エクセルVBAで、MsgBox やInput...
-
CloseとDisposeの違い
-
switch の範囲指定
-
DoEventsがやはり分からない
-
アクセスVBAのMe!と[ ]
-
VBA エンターキーでイベントに...
-
VBAでループ内で使う変数名を可...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データがあれば○○なければのSQL
-
ACCESS DCOUNTの抽出条件について
-
ACCESS VBAでテーブル内の特定...
-
Access vbaで重複レコードの削...
-
【access】複数のフィールドの...
-
SQLServer→Access インポート
-
ACCESSで実行時エラー3008
-
Accessで縦と横を入れ替えたい
-
抽出条件でデータ型が一致しま...
-
Access から Excelのシートをイ...
-
重複した複数のレコードを1レ...
-
VBAでテーブル名とカラム名を動...
-
別のaccessファイルからデータ...
-
ACCESSのクエリ、SQLに変数を使...
-
VB.NET2003でOraclの情報を取得...
-
こんなSQLの書き方はダメですか?
-
DAOでSQLServerに接続し、LeftJ...
-
アクセスで連続データをテーブ...
-
access追加クエリーでform入力...
-
Access BetweenとLikeの組み合...
おすすめ情報