VC++からDBの連係したフィールドの参照方法

[戻る]
Takeshi 2002/05/01(水) 10:12:50
  Takeshiです、新規に質問します。

■動 作 環 境 : Windows2000
■開 発 環 境 :Visual C++6.0(MFC使用,ODBC接続)
■データベース:Access2000

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

  まず、Microsoft Access2000で作成したデータベースがあります。
このデータベースは2つのテーブルを持っています。
一つは、メインとなるテーブル(TBL1)で複数のフィールド(A,B,C)を持ちます。
もう一方は、サブ的なテーブル(TBL2)で一つのフィールド(D)を持ちます。
メインテーブル(TBL1)のフィールドの一つ(C)が、
サブ的テーブル(TBL2)のフィールド(D)を連係しています。
つまり、メインテーブル(TBL1)のフィールド(C)のデータ入力時には
サブ的テーブル(TBL2)のフィールド(D)から選択する訳です。

(例)

▼社員情報のテーブル

  名前(文字列)
  年齢(数値)
  趣味(趣味テーブルの趣味一覧より選択)

▼趣味のテーブル

  趣味一覧(文字列)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

  こういう前提があるとして、

社員_RS.Open
(CRecordset::snapshot,"select * from TBL_社員情報",CRecordset::readOnly);

  これで "TBL_社員情報" の持つ全フィールド(3つ)をレコードセット "社員_RS" として
  カプセル化します。

社員_RS.GetFieldValue("趣味",趣味_CString);

  そして "TBL_社員情報" のフィールド "趣味" の値を CString型のOBJ "趣味_CString" に
  取得するとします。



実行すると、残念ながら「これは無効なフィールド名である」となってエラーになります。

社員_RS.GetFieldValue("趣味一覧",趣味_CString);

としても駄目でした。こういう連係したDBの場合は
どのようにフィールド名を指定すれば良いのでしょうか?

宜しくお願い致します。

sugar 2002/05/01(水) 10:32:17
フィールド名が漢字っていうところに違和感を感じるのですが、大丈夫なのでしょうか。
CRecordset::GetFieldValue()は確か、フィールド名を指定しなくても
番号指定で取得できたと思いますが、それもだめですか?

Takeshi 2002/05/01(水) 10:47:37
  お世話になっております。

フィールド名はあえて説明を分かり易くする為に漢字にしただけで、
実際はアルファベットです。

つまり、フィールド名ではなく通番でも指定できるという事ですね?
一つ目なら "1" というような感じですね。
分かりました。試してみます。
ありがとうございました。

Takeshi 2002/05/01(水) 11:45:26
[[解決]]
  OKです!!

うまくフィールドを読み込めました。
ありがとうございました。

古いスレッドには追加発言できません。