- PR -

GetParentRowで親レコード取得する方法

1
投稿者投稿内容
ジルカ
会議室デビュー日: 2006/06/02
投稿数: 9
投稿日時: 2006-08-22 15:51
いつも拝見させいていただいております。

DataTable->GetParentRowで親レコードの取得方法を以下の方法で実現しようとしました
が取得できません。
(VB.NET 2005&SQL Server 2005)

--------------------------------------------------------------
@事前に次のテーブルを生成する
CREATE TABLE POST_TBL(
POST_NO INT NOT NULL,
POST_NAME NVARCHAR(50) NULL,
PRIMARY KEY(POST_NO)
);
INSERT INTO POST_TBL VALUES(1,"営業部");

CREATE TABLE USER_TBL(
USER_NO INT NOT NULL,
POST_NO INT NOT NULL,
USER_NAME NVARCHAR(50) NULL,
FOREIGN KEY(POST_NO) REFERENCES POST_TBL(POST_NO),
PRIMARY KEY(USER_NO)
);
INSERT INTO USER_TBL VALUES(1,1,'田中 太郎');

Aデータセット(DataSet1)に上記のテーブル情報を貼り付ける。
 ・user_tblDataTable,post_tblDataTableとAdapterが生成される
 ・リレーションの制約は、「リレーションシップのみ」とする
B親テーブルを取得する次のコードを実装
 Dim dataset As New DataSet1
Dim ds As DataSet1.user_tblDataTable
Dim da As New DataSet1TableAdapters.user_tblTableAdapter
Dim row As System.Data.DataRow

ds = dataset.Tables(dataset.user_tbl.TableName)
da.Fill(ds)

row = ds(0).GetParentRow(ds.ParentRelations(0).RelationName)
--------------------------------------------------------------

期待する結果として、最後のrowにpost_tblのレコードが入ると思うのですが。
どうしてもNothingになります。

どなたか、このような事例でご存知の方、ご教授ください。

以上。

[ メッセージ編集済み 編集者: ジルカ 編集日時 2006-08-22 16:00 ]
ジルカ
会議室デビュー日: 2006/06/02
投稿数: 9
投稿日時: 2006-08-23 12:08
自己回答です。

どうやら使い方を間違えていたようです。
Dim dataset As New DataSet1
Dim da1 As New DataSet1TableAdapters.USER_TBLTableAdapter
Dim da2 As New DataSet1TableAdapters.POST_TBLTableAdapter
Dim row As System.Data.DataRow

da1.Fill(dataset.Tables(dataset.USER_TBL.TableName))
da2.Fill(dataset.Tables(dataset.POST_TBL.TableName))

row = dataset.Tables(dataset.USER_TBL.TableName).Rows(0).GetParentRow(dataset.Relations(0))

上記のコードに変更したら期待する値を取得することができました。
GetParentRowを呼ぶと、自動的に親テーブルをSELECTすると思ってました。
どうやら、あらかじめdatasetに値をセットしなければいけようです。
(解釈あってますでしょうか。。。)



[ メッセージ編集済み 編集者: ジルカ 編集日時 2006-08-23 12:08 ]
1

スキルアップ/キャリアアップ(JOB@IT)