アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めまして。
VBの学習として、VisualBasic認定試験の公式サイトのサンプル問題(1級の2問目、personaldata)と、その模範解答に沿って
アプリケーションを作っています。
http://www.sikaku.gr.jp/js/vb/ind/about/sample/

この模範解答のエラーとして、
「Form2でOKを押した時点で、Form1にある全てのDataGridViewのデータが上書きされてしまう」
といった点があります。

この問題を回避したく、以下の点に悩んでおります。
どなたか宜しくお願いします。

①Form1で宣言し、かつ読み込んだXMLファイルのデータが書き込まれているDataSetを、Form2で呼び出す方法を教えてください。(Form1で、Publicで宣言したのですが上手くいきませんでした・・)

②Datasetで指定したセルのみをXMLファイルに書き込む方法を教えてください。

A 回答 (1件)

質問内容の理解に苦しみます。



>①Form1で宣言し、かつ読み込んだXMLファイルのデータが書き込まれているDataSetを、Form2で呼び出す方法を教えてください。
この内容のとおりなら、模範解答のままだと思うのですが。
模範解答、Form2_Load()で、親のFrom1クラスのDataSet型のメンバ変数を自身のForm2クラスのメンバ変数に代入していますよね?
> dgrMain = frmMain.dgrPerson

Form2クラス内ならForm2_Loadイベントが終わった時点で自由にアクセスできるはずです。btnOK_Click()で書き込みしてますし、質問の意図が読み取れません


>②Datasetで指定したセルのみをXMLファイルに書き込む方法を教えてください。
既にあるXMLファイルの指定した特定の要素だけを更新するという意味なら難易度は格段に上がります。このレベルのVB学習中なら非常に難しいと感じるかもしれません。詳しくはDocument Object Modelや、SAXなどを検索してください

sample.xml内にある、特定の要素だけをファイルに書き出す場合
例:<name>大島 美加</name>
この場合は、DataSetのスキーマを分析してファイルに書き出すかDataGridにバインドしたものを利用すれば比較的簡単です。(スキーマについては割愛)

dim strElement as string = dsPerson.Tables(0).Columns.Item(dgrPerson.CurrentCell.ColumnNumber).ColumnName
DataSetから、現在選択中の列の名前を以上のように取得できるので
StreamWriterなり好きな方法でファイルに書けば良いかと。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!