人に聞けない痔の悩み、これでスッキリ >>

XMLファイルからVB.NETのソースを出力するカスタムツール(データセットからクラスを作成するMSDataSetGeneratorのような)を作りたいのですが、どのようにすればよいでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

独自のGeneratorを作るのが良いですね。


もし、自動生成元になるXMLの形式が決まっているのであれば、
*.xml のカスタムツールに自分が作成したGeneratorを設定してあげれば
できます。

肝心な作り方ですが、CodeProjectにサンプルが公開されてました。

http://www.codeproject.com/dotnet/spinvoke.asp?d …
が参考になるかなと思います。
(英語ですが、コードが読めればわかるかと思います)

サンプルソースもダウンロードできるんで、ソースをご覧頂けたらと思います。
(的ちがいだったら、ごめんなさい)

参考URL:http://www.codeproject.com/dotnet/spinvoke.asp?d …
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qこの行は既に別のテーブルに属しています

以下のソースで、「この行は既に別のテーブルに属しています。」というエラーが出てしまいますが、対処方法がわかりません。

どのようにしたらよろしいでしょうか?
VS2003のVBです。

    Dim Table1 As DataTable = Me.DS1.Tables("データベース1")
    Dim Table2 As DataTable = Me.DS1.Tables("データベース2")
    Dim Row1 As DataRow
    Dim Row2 As DataRow
    Row1("データ1") = 1
    Row1("データ2") = 2
    Row1("データ3") = 3
    Row2("データ1") = 2
    Row2("データ2") = 3
    Row2("データ3") = 4

    Table2.Rows.Add(Row2) ←ここでエラー
    Table1.Rows.Add(Row1)

'System.ArgumentException' のハンドルされていない例外が system.windows.forms.dll で発生しました。

追加情報 : この行は既に別のテーブルに属しています。

以下のソースで、「この行は既に別のテーブルに属しています。」というエラーが出てしまいますが、対処方法がわかりません。

どのようにしたらよろしいでしょうか?
VS2003のVBです。

    Dim Table1 As DataTable = Me.DS1.Tables("データベース1")
    Dim Table2 As DataTable = Me.DS1.Tables("データベース2")
    Dim Row1 As DataRow
    Dim Row2 As DataRow
    Row1("データ1") = 1
    Row1("データ2") = 2
    Row1("データ3") = 3
    Row2("デ...続きを読む

Aベストアンサー

お世話になります。

> Dim Row1 As DataRow
> Row1("データ1") = 1
これは、実行時に例外(NullReferenceException)が発生するはずです。

> Row1("データ1") = 1
こちらを実行する前に、
Row2 = Table1.Rows(0) とか
Row2 = Table1.NewRow とかやってると仮定して、
2 つの DataTable のレイアウトが全く同じならば
DataTable.ImportRow メソッド
を使われてはいかがでしょうか。

Dim dt As DataTable = New DataTable
dt.Columns.Add("Field1", GetType(String))
dt.Columns.Add("Field2", GetType(String))
dt.Columns.Add("Field3", GetType(String))
dt.Rows.Add(New String() {"りんご", "みかん", "ばなな"})
dt.Rows.Add(New String() {"おかし", "ごはん", "おちゃ"})

Dim copyToDt As DataTable = dt.Clone()
For Each row As DataRow In dt.Rows
  If Convert.ToString(row("Field1")) = "おかし" Then
    copyToDt.ImportRow(row)
  End If
Next

参考URL:http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfSystemDataDataTableClassImportRowTopic.

お世話になります。

> Dim Row1 As DataRow
> Row1("データ1") = 1
これは、実行時に例外(NullReferenceException)が発生するはずです。

> Row1("データ1") = 1
こちらを実行する前に、
Row2 = Table1.Rows(0) とか
Row2 = Table1.NewRow とかやってると仮定して、
2 つの DataTable のレイアウトが全く同じならば
DataTable.ImportRow メソッド
を使われてはいかがでしょうか。

Dim dt As DataTable = New DataTable
dt.Columns.Add("Field1", GetType(String))
dt.Columns.Add("Field2",...続きを読む


人気Q&Aランキング