- PR -

1つの画面上にある別々のFormviewのデータ

1
投稿者投稿内容
ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 2008-08-08 09:03
お世話になります。

1つの画面上にある別々のFormviewのデータを連結させたいです。

各々のFormviewの関係を親子フォームの様な感じにしたいのです。

よくある注文テーブルと注文詳細テーブルにリレーションを設定し、

その入力フォームをwebアプリケーションにて行いたいのです。

親FormのIDを子Formに取得させたいのですが、方法がわかりません。

そもそも、このような内容が可能なのでしょうか?

ACCESSやWINDOWSアプリケーション等では可能なようなのですが・・・

宜しくお願いします。

どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-08-08 12:55
親Form(というのはなんか違うものを指してるように見えちゃうけど)のIDはまずどこで指定しますか?
まったく指定せずに最初からデータをだすことは難しいんじゃないかと思いますけど。
どこかで指定したものを利用しているなら、単にその同じデータを使えばいいだけじゃないですかね。

k-yamamoto
会議室デビュー日: 2008/08/08
投稿数: 2
お住まい・勤務地: 岡山
投稿日時: 2008-08-08 13:19
>親FormのIDを子Formに取得させたいのですが、方法がわかりません。
親FormとはFormViewのことですかね?
親FormViewにバインドされたデータ(DBのテーブル?)のIDに対する
データを子FormViewにバインドしたいってこと?
ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 2008-08-08 13:55
説明が下手で申し訳ありません。

どっとねっとふぁん様、ありがとうございます。

IDは新規入力をした際にできるIDENTITYの値です。
(返答の内容が違うようでしたら申し訳ございません。)


k-yamamoto様、ありがとうございます。

親Form、子FormともにFormViewのことです。

親フォームで入力した際にできるID(IDENTITY)の値のみを
子フォームのフィールドに代入したいのです。


説明不足で申し訳ありませんでした。

今回行いたい内容は新規入力の際のことです。

よくACCESSやWINDOWSアプリケーションなどである、
フォームの中にサブフォームを入れて親子関係にする様な感じにしたいです。
これですと、親フォームに新規で入力するとIDが自動で取得され、
子フォームにもリンクフィールドで同じIDが取得されます。

この様な内容が無理っぽいので、
親フォームで入力後に一度データを追加(保存)して、
IDENTITYを取得した後に、
子フォームにそのIDENTITYの値を代入するしかないのかなぁと思いました。

宜しくお願いします。


どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-08-08 14:57
画面上の入力時は親子(?)同時に入力してもらっていいんじゃないですかね。
実際の追加時に親を先に追加し、そこで作成されるIDを取得し、その後子のほうを追加、といった形になればいいと思います。
と、言うのは簡単だけど、データバインドと組み合わせてこのように動くようにするのはちょっと面倒そうだな。
ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 2008-08-08 15:19
どっとねっとふぁん様 ありがとうございます。

仰るとおり、親を先に登録した後に
子へIDを渡してあげたいのですが、コードの記述がわかりません。

色々調べてみて、
「SCOPE_IDENTITY」を使用すればよいのかなぁと思って
ストアドを作成して試したのですが、IDがNULL扱いになってしまいました。

リレーションシップを設定した2つのテーブルを1つの画面にて、
同時に入力する場合はみなさまどのようにされているのでしょうか?
k-yamamoto
会議室デビュー日: 2008/08/08
投稿数: 2
お住まい・勤務地: 岡山
投稿日時: 2008-08-09 13:47
要件や利用するフレームワークやらライブラリにもよると思いますが、
私が親子(親子が1対1の関係)構成のテーブルを使い、なおかつ両方のテーブルを同時に入力させる
場合であれば、トランザクションを束ねるのが面倒なのでフラットなデータテーブルを用意すると思います。

その上でObjectDataSourceなどを利用してFormViewとバインドします。
この方法だと、ObjectDataSourceのデータ操作処理をコーディングしなければいけませんので、
若干面倒ですが、、、

もし親を先に追加して、その後に子を追加でよいのであれば、FormViewのDataKeyに
親テーブルのIDを指定しておく方法もありますね。

データソースに何を使うか(SqlDataSourceなど?)など環境に左右される部分が大きいです、、、

編集加筆:フラットなデータテーブル=複数のテーブルを結合したビューのようなもの
     これで、FormViewは1つ、バインドするデータテーブルも1つとなります。

[ メッセージ編集済み 編集者: k-yamamoto 編集日時 2008-08-11 09:04 ]
1

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