- - PR -
.netを利用して、親レベルの部門と子レベル(グループ)のデータを一緒に更新させる方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-05-29 18:52
初心者です。
分かる方教えてください。 「最下階層反映」というチェックボックスにチェックを入れたら、事業部コー ドに選択された値が事業部(親レベル)の場合はその下の部、グループ(子レ ベル)まで同じものに更新するというものです。 サイトマスターー事業部コード、住所や電話番号のデータが入っている 部門マスターー事業部コード、事業部FLAG、部門名称、親レベルのデータが 入っている) 「部門コード」が入力されたとき、表示ボタンを押すとデータが「サイトマス タ」からSQL文で取得し、表示されるのだが、 そのSQL文はこのように書きました Dim parameters As ParameterCollection Dim oraReader As OracleDataReader parameters = New ParameterCollection parameters.Add("jigyo_cdv", OracleDbType.Varchar2, 6, Me.wincrlBumon.txtCode.Text, ParameterDirection.Input) oraReader = m_FormData.getSite(parameters) strSQL = "SELECT SITE_NOV, " & vbCrLf strSQL &= " YUBIN_NOV, " & vbCrLf strSQL &= " JYUSYO1_NMV, " & vbCrLf strSQL &= " JYUSYO2_NMV, " & vbCrLf strSQL &= " EJYUSYO1_NMV, " & vbCrLf strSQL &= " EJYUSYO2_NMV, " & vbCrLf strSQL &= " TEL_NOV, " & vbCrLf strSQL &= " FAX_NOV " & vbCrLf strSQL &= "FROM M_SITE " & vbCrLf strSQL &= "WHERE JIGYO_CDV= :jigyo_cdv " Return Me.ExecuteQuery(strSQL, parameter) それから表示されたデータの更新と削除を行う。 更新はまず、子レベルのデータを変数に入れて、まず削除してから、親レベ ルのデータをinsertしたいが、具体的にどうすればよいかよく分からない。 更新の文はこのようにしたが、 strSQL = "INSERT INTO M_SITE (JIGYO_CDV ,SITE_NOV, YUBIN_NOV, JYUSYO1 _NMV, JYUSYO2_NMV, " & vbCrLf strSQL &= "EJYUSYO1_NMV,EJYUSYO2_NMV,TEL_NOV, FAX_NOV,KOSIN_YMD) " & vbCrLf strSQL &= "VALUES( :jigyo_cdv , :site_nov, :yubin_nov, :jyusyo1_nmv, :jyusyo2_nmv," & vbCrLf strSQL &=":ejyusyo2_nmv, :ejyusyo1_nmv, :tel_nov, :fax_nov,SYSDATE)" & vbCrLf それから、何が必要か、どのようにコーディングするかはよくわからないが、 子レベルに反映する際、以下の文のようになるのですか?それともほかになん か使うんですか? strSQL &= "where Level" & strLevel & "=:JIGYO_CDV" 教えてください。 | ||||
|
投稿日時: 2006-05-30 22:38
たぶん、わかるんだけど、書いてあることがわからない。こういう理解で良いのかなぁ?
追加で知りたいこと。 1.使用しているデータベースと、そのマイナーまで含めたバージョン番号 OracleDataReader 使っているから Oracle なんだろうけど、一応。 2.どの様にして、階層データを作っているのか おそらく、部門マスタの「親レベルのデータ」がどこかにリンクしているんだろうけれど、それがどこか。 3.変更するものは何か 使用者は何を変更し、それをどの様に変更したいのか。または、「最下階層反映」にチェックしたとき、使用者が変更した何を、子階層に伝搬したいのか。 変更対象は、どのテーブルの、どのカラムか。 今わかる範囲での回答。 1: 部門マスタの「親レベルのデータ」が、部門マスタの「事業部コード」を外部キーにしていると仮定します。 削除については、外部キーを宣言するときに、delete cascade を宣言します。 そうすれば、親を削除するだけで子を全部消してくれます。 Oracle で階層問い合わせをするには、、、やっぱり忘れた。START WITH 句は階層問い合わせで何を最上位層とするかの指定だなぁ。CONNECTED BY は、なんだっけ?SQL リファレンスに、「階層問い合わせ」のようなトピックがあるので確認してください。 更新は、副問い合わせで、最上位から階層問い合わせにより、所属するこの事業部コードだけを検索すればいいでしょう。 その事業部コードに含まれる事業部コードを持ったレコードだけ、更新するように、UPDATE 文を組み立てます。 2: DataTable 内の変更を、VB.NET のコードでガリガリ書けば、データベースに対する更新も削除も、DataAdapter.Update メソッドで1行のみを対象に行えます。 [ メッセージ編集済み 編集者: Jitta 編集日時 2006-05-30 22:39 ] [ メッセージ編集済み 編集者: Jitta 編集日時 2006-05-30 22:42 ] |
1