• 締切済み

C# 孫データとのリレーションシップ

親データと子データは親のID、1個に対して子に構成した親データ用変数に対して無限のリレーションシップを構成させた場合、問題なく連動し、親データと子データは保管、削除、新規を行えたのですが これに、子データの1つのIDに対する、無限の孫データのリレーションシップを構成したところ 親データの保管に、連動して子、孫データの保管はできたのですが、新規を行うと、子および孫データのデータグリッドが初期状態の、ブランクになりません また連結されてた親データの削除もできません孫データを連結させた場合どのようにしたらよいのでしょうか        リレーションシップ    親 ID(1)-------子 親ID用変数(∞)  の場合問題なし    親 ID(1)-------子 親ID用変数(∞)-------孫 子用変数(子 1に対して∞)

みんなの回答

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>親データの保管に、連動して子、孫データの保管はできたのですが、新規を行うと、子および孫データのデータグリッドが初期状態の、ブランクになりません また連結されてた親データの削除もできません孫データを連結させた場合どのようにしたらよいのでしょうか 理想的には、リレーションシップを設定したら、自動的に自分の思うとおりの動作をやって欲しいものですよね。 でも、さすがにそこまで賢く推測して動作するプログラムが自動的に作成されるわけではありません。 自分の希望する動作を洗い出して、そういうふうに動作するように、C#のプログラムを記述します。 場合によっては、提供されているコントロールをカスタマイズする必要があるかもしれません。 そして、その場合は.NetFrameworkで提供されているコントロールのコードを調べて、どう修正すればいいかを考える必要もあるでしょう。

関連するQ&A

  • Access リレーションシップ データ型について

    リレーションシップとクエリ内部結合の違いについて リレーションシップとクエリ内部結合(リレーションシップ)の違いは参照結合性や連鎖更新、連鎖消去設定の差だけでしょうか? データ型のオートナンバーは一度使用した番号はレコードデータを消去しても、二度と使えないのでしょうか? 任意の番号に指定しようすると、オートナンバー型のIDフィールドに連結されているため編集できません となります。

  • リレーションシップ

    VB2005の DataSet.xsdファイルで、 (親テーブル)tokuisaki.tokuisakicodeフィールドと、 (子テーブル)uriage.uriagesakicodeフィールドとで、 リレーションシップを設定しましたが、 (1)制約の選択で「外部キー制約のみ」にすると、 tokuisaki.tokuisakicodeにデータがあるにもかかわらず ForeignKeyConstraintの例外が発生します。 (2)制約の選択で「リレーションシップのみ」にすると、 例外が発生しません。 (1)では、マスタにデータがあるのにどうしてエラーが発生 するかわかりません。  どなたか、わかるかたがいましたら教えてください。

  • リレーションシップと外部キー制約について

    ■最終的にやりたいこと ・なるべくコード(SELECT文など)を見ずに、「DB」「テーブル定義者」「ER図」等からテーブル間の関係性を把握したい ■具体例 ・投稿一覧。「userテーブル」「postテーブル」 ・「postテーブル」の「user_id」カラムは、「userテーブル」の「id」カラムに対応 ※簡易な場合はある程度想像は付くのですが、ちょっと複雑な構成になると途端に苦労するので、何か良い方法はないかと思い、質問しました ■質問 ◆「リレーションシップを組む」際、「外部キー制約」はかけるのでしょうか? 例えば、上記「投稿一覧」DBを構築する際では、どうするのでしょうか? 1.普通、「外部キー制約」をかける 2.普通、「外部キー制約」をかけない 3.どちらでも良い ◆「外部キー制約」は何の為にかけるのでしょうか? ・「SELECT&JOIN」でデータ取得出来るのであれば、「外部キー制約」と「リレーションシップ構築」に関係性はないと思うのですが、そういう認識で合っているでしょうか? ・参照先データが削除されたら整合性がとれなくなる場合のみかけるものでしょうか? ◆「リレーションシップを確認」する目的で、「外部キー制約」をかけても良いのでしょうか? ・「データ削除の整合性」ではなく、「リレーションシップを確認」する目的で外部キー制約」をかけても良いのでしょうか? ◆「外部キー制約」以外に、「リレーションシップを確認」する方法はあるのでしょうか? ・コード(SELECT文など)を見ずに、テーブル間の「リレーションシップを確認」する方法としては、「外部キー制約」以外に何かあるのでしょうか? ・そもそも、「外部キー制約確認」=「リレーションシップ確認」という考えは正しいのでしょうか?

    • ベストアンサー
    • MySQL
  • Accessリレーションシップについて

    お世話になります。 Access2010 普段はクエリにて、いくつかのテーブルやクエリを紐づけているのですが リレーションシップの設定は今までやったことがありません。 ネットで調べて、 ・「参照整合性」にチェックを入れることにより、1対多の多側で1側に存在  しないIDで登録しようとするとエラーになる。   →間違ったデータが入力されるのを防ぐ。 ・多側でリレーションシップが設定されているフィールドに値を入力しない  ことは可能。但し、当該フィールドの「値要求」プロパティを"はい"に  した場合は、入力しないとエラーになる。 ・「フィールドの連鎖更新」にチェックを入れると、1側で変更したものが  多側でも自動的に変更される。 ・「レコードの連鎖削除」にチェックを入れると、1側で削除した場合、  多側で該当するデータをもつレコードが自動的に削除される。 上記については実際に試してみて動きを確認しました。 ※上記の認識違いや、もっと大事なことがあればご指摘、ご教示頂けると  幸いです。 今までは、こっちのテーブルで削除したらこっちのテーブルでも削除 みたいなことをやってたので、便利だとは思うのですが。。 以下のテーブルでリレーションシップの設定を行ったとします。 売上テーブル  ID 商品 担当者コード  1 AAAAA  3  2 BBBBB  1  3 AAAAA  1  4 CCCCC  2  5 CCCCC  3 担当者テーブル 担当者コード 担当者名  1     担当者A  2     担当者B  3     担当者C 売上テーブルの担当者コードと、担当者テーブルの 担当者コードでリレーションの設定を行い、「参照整合性」及び 「レコードの連鎖削除」にチェックを入れたとします。 例えばフォーム上にリストボックスを設置し ID 商品 担当者名 を表示し、リストボックス上で選択されたレコードを、削除ボタンを 押したら、そのレコードが削除されるプログラムを作成します。 ※選択されたレコードのIDを取得し削除クエリで削除。 リストボックスでID:5のレコードを選択し、削除ボタンを押した場合 売上テーブルのID:5のレコードを削除しても、担当者テーブルから 担当者コード:3のレコードは削除されない・・という認識でよろしい でしょうか。 ※要するに、1対多の多側で削除されても1側には影響無し。 同様にリストボックスでID:5のレコードを選択し、削除ボタンを押したときに 担当者コード:3を取得し、まずは担当者テーブルで担当者コード:3の レコードを削除すると、併せて売上テーブルのID:1及びID:5が削除 される。 要するに、上記のケースで「レコードの連鎖削除」の設定を行うと 本来削除すべきID:5以外のレコード(ID:1)まで削除されてしまう ことになる?? ※そもそも例がちょっと悪かったかもしれません。。 何が言いたいかというと、「フィールドの連鎖更新」「レコードの 連鎖削除」は、よーく考えて設定しないと意図しないところまで 更新されたり削除されてしまうのかなと。。なので、設定することに よって、プログラムの作りも変わってきてしまうことになるので しょうか。 理解不足で質問自体もモヤモヤしたものになってしまいましたが、 ご教示のほど、宜しくお願い致します。

  • PHPとjQueryでツリー

    はじめまして。プログラムを独学で学んでいる者です。 今回初めて開発をしてみたのですが、どうしてもうまくいかないため こちらに投稿した次第です。 やりたいことは以下の通りです。 PHPとJQueryツリー構造 (完成図) 親 ■ツリー(1)  |  ■親データ(2)  | |  |  ∟■子データ(3)  |    |  |     ∟■孫データ(4)  |       |  |        ∟■孫2データ(5)  |  ■親データ  | |  |  ∟■子1データ  |  ■親データ  | |  |  ∟■子1データ  | |  |  | |   ∟■孫1データ  | |  |  ∟■子2データ  |  ■親データ  | |  |  ∟■子1データ  |    |  |     ∟■孫1データ  |       |  |        ∟■孫2データ  |  ■親データ 表示部分で親データの表示をだしつつ、子データのSQLをとばして子データの表示をだしつつ、孫データのSQLをとばす。 これを繰り返したい。 (1)まず親データのSQLをとばす。 (2)親データを一件取得したら、表示する。その親SQLで得られた結果をもとに子SQLをとばす。 (3)子データがあれば表示。(なければ2件目の親データを取得。) 子SQLで得られた結果をもとに、さらに子SQLを飛ばす。 (4)そこに結果があれば孫データとして表示。(なければ2件目の親データを取得) 得られた結果をもとに子SQLを飛ばす。 (5)結果があれば次の孫データとして表示。 結果が存在しなければ、親データに戻り・・・・繰り返し上記のように処理する。 自分で試行錯誤し、phpとjQueryでなんとか上図のように親--子--孫と出せるようになりました。 しかし、1件ごとに子・孫データが無いかSQLを飛ばして調べるので、非常に時間がかかります。 データが30件ほどあると表示するのに10分はかかります。 処理しきれずに途中で終わってしますこともシバシバ・・・・。 他の方法として考えたのが、親データがクリックされたら子SQLを飛ばして展開部分を表示するという方法です。 しかしクリックしたらメソッドを呼び出すという、phpの処理を分割することはできないとネットに乗っていました。 (私の調べ方に問題があったのかもしれませんが・・・) <ul> <li id=id>親データ   <ul>     <li id=id2>子データ      <ul>      <li id=id3>孫データ      </ul>  </ul> <li id=id>親データ2 ・ ・ ・ ↑のような構造で「<li id=id>親データ」がクリックされたときに、phpの子SQLをなげる仕組みなどは 可能なのでしょうか? それとも地道にSQLを投げて1件ずつ確認する方法しかないのでしょうか? プロの方の意見等、知恵をお借りしたいです。 ご教授よろしくお願い致します。

    • 締切済み
    • PHP
  • ACCESS2003 サブフォームのデータ

    こんにちは。宜しくお願い致します。 ACCESS2003でDBを作成しています。 メインフォームの中にサブフォームを作っています。 それぞれのID(オートナンバー)をリレーションシップとして設定し、連動しています。 メインフォームにデータを追加する際、サブフォームにデータを入力せずに、 次のメインフォームにデータを入れた場合、 サブフォームのオートナンバーが働かず、のちのちデータを入れた際にIDが違うため情報がずれてしまいます。 例えば、 メインフォームのID1~9のサブフォームには何も書き込まずメインフォームにだけデータを入力します。 その後、メインフォームのID10にあるサブフォームにデータを書き込むと、立ち上げなおしたときに、そのサブフォームへの入力したデータがID1のデータとして出てきてしまいます。 恐らく簡単なことだとは思うのですが、なにぶん初心者なものでさっぱり分かりません。 お分かりになる方、是非ともご教授お願いいたします。

  • 2次元配列の使い方

    Access 2013 vba メイン画面に、2つのサブフォーム(共に帳票)があり 親→子→孫 となっています。 この時、親、子、孫のレコードを取得して ある書類を作成しエクセルに出力しようとしています。 この場合、親のデータは普通に変数Aに入れて 子のデータは一次元配列B()に入れ 孫のデータは一次元配列C(0)~C(3)に入れたものを、更に子用の一次元配列B1()~B4()に入れるように作りにしようと考えています。 この場合、 子の画面で次の2レコード目に進んだ時、子画面用のB1...B4の配列変数に入れている孫のC(0)~C(3)の配列の中身は、子画面の一レコードと二レコード目では同じものになるのでしょうか。 もし、同じものになるのであれば、この方法は使えないと思っていますが。。。 他に何か良い方法はありますでしょうか。 Accessで、クラスを作って、それを配列変数に入れるとか・・・ よろしくお願いします。

  • アクセス 運用後のデータ移行について

    アクセスでシステムを運用中です。システムに変更が生じファイル構成も変更になります。現システムとは別に変更を行い、テスト後に現システムのデータのみを移行する予定です。(ファイル構成のみを現システムも同様に変更するものとする)  このような場合、どんな方法がより簡単にできるでしょうか?アクセスは2000、WindowsMEです。  今まで変更が生じた場合、両方のデータベースを開き、各テーブルを開いて全てコピー&貼り付けで行ってきました。しかし、データが多くなるにつれ、コピー&貼り付け時にエラーが発生するようになりました。  ファイルメニューのエクスポートで行うと、リレーションシップを設定しているために、リレーションシップを削除しないとエラーとなりできません。できれぱ、リレーションシップ等も触らないでできる方法があれば教えていただきたいのです。  現システムを直接変更することは、変更量が多く運用との問題でできません。よろしくお願いします。m(__)m

  • 祖母が、1歳の孫に土地を贈与することはできるでしょうか?

    祖母が、1歳の孫に土地を贈与することはできるでしょうか? できる場合、その贈与された土地を、その孫の親(祖母の子)が、 孫に代わって、代理として、賃貸に貸し出し収益を得る契約を結ぶことは可能でしょうか?

  • リレーションシップを含んだクエリについて

    環境:WinXP Pro、Access2002 下記のようなテーブル構成で売上管理を作っています。 ----------------------- T_売上情報 ・売上ID ・売上日 ・顧客名 ----------------------- T_売上明細 ・明細ID ・売上ID(T_売上情報の売上IDと1対∞でリレーションシップ) ・商品名 ・単価 ----------------------- (クエリ) T_売上情報.売上ID:T_売上情報.売上日:T_売上情報.顧客名:T_売上明細.明細ID:T_売上明細.商品名:T_売上明細.単価 ※各フィールドの集計を「グループ」にし、一売上毎の合計金額を求めています。 上記のように選択クエリを設計し実行すると、「T_売上情報」と「T_売上明細」の情報がひも付けされた 結果が出てくると思いますが、例えばある売上IDに1件も売上明細のレコードが無い場合は このクエリでは表示されませんが、これを表示するようにすることは可能でしょうか?

専門家に質問してみよう