2016-03-25 12 views
0

在庫リストAppシステムのフォームから入力を受け付ける準備ができています。データセットの書き込み/読み込み方法

次回ユーザーがプログラムを開くときに再度読み込む準備ができたXMLファイルにテーブルのデータを保存したいと考えています。

私が使用しています現在のコードは

Dim entryno As Integer = 1 
IDColumn.Table.WriteXml("C:\Users\User\Documents\Stocklist\XML\" & entryno & ".xml") 
entryno += 1 

は何も作成されている...これですか?

私のデータセットは、 "StockdataDataSet.xsd" と呼ばれている

私datable "DataTable1" と呼ばれている

任意の提案は?

+0

を次のように設定データを作成することで、データセットがあることを変更してみましょう。 WriteXmlおよびDataTable.WriteXml for xmlに保存してからDataSet.ReadXmlを逆にします。xsdはxmlスキーマファイルの拡張子になります。データセットにブレークポイントを使用してデータが含まれているかどうかを確認し、その中のテーブルを調べて、ファイルの拡張子を.xmlに変更することをお勧めします。 –

+0

ありがとうございます。 –

+0

DataTable WriteXml()メソッドは、DataTableにnameプロパティがある場合にのみ機能します。 DataSetメソッドは、名前付き/なしで動作します。したがって、テーブルに名前を追加するか、DataSetメソッドを使用することができます。また、WriteSchemaオプションを使用することをお勧めします。これにより、ファイルの書き込み/読み込みのたびに同じタイプの列が作成されます。 – jdweng

答えて

1

ここでは、ハードコーディングされたデータを使用した非常に簡単な例を紹介しています。 Console.WriteLineに記述されている箇所にブレークポイントを置き、DataSetを調べます。

Dim fileName As String = IO.Path.Combine(
    AppDomain.CurrentDomain.BaseDirectory, "MyData.xml") 

Dim ds As New DataSet 
Dim dt As New DataTable With {.TableName = "Person"} 
dt.Columns.Add(New DataColumn With {.ColumnName = "FirstName", .DataType = GetType(String)}) 
dt.Columns.Add(New DataColumn With {.ColumnName = "MiddleName", .DataType = GetType(String)}) 
dt.Columns.Add(New DataColumn With {.ColumnName = "LastName", .DataType = GetType(String)}) 

dt.Rows.Add(New Object() {"Karen", "Ann", "Payne"}) 
dt.Rows.Add(New Object() {"Kevin", "S", "Gallagher"}) 
dt.Rows.Add(New Object() {"Mary", "D", "Jones"}) 

ds.Tables.Add(dt) 

ds.WriteXml(fileName) 
Console.WriteLine("place a break point here") 
ds.Clear() 
ds.ReadXml(fileName) 
Console.WriteLine("place a break point here") 

結果

<?xml version="1.0" standalone="yes"?> 
<NewDataSet> 
    <Person> 
    <FirstName>Karen</FirstName> 
    <MiddleName>Ann</MiddleName> 
    <LastName>Payne</LastName> 
    </Person> 
    <Person> 
    <FirstName>Kevin</FirstName> 
    <MiddleName>S</MiddleName> 
    <LastName>Gallagher</LastName> 
    </Person> 
    <Person> 
    <FirstName>Mary</FirstName> 
    <MiddleName>D</MiddleName> 
    <LastName>Jones</LastName> 
    </Person> 
</NewDataSet> 

注NewDataSetのデータセット名は、のは

Dim ds As New DataSet With {.DataSetName = "People"} 

結果

<?xml version="1.0" standalone="yes"?> 
<People> 
    <Person> 
    <FirstName>Karen</FirstName> 
    <MiddleName>Ann</MiddleName> 
    <LastName>Payne</LastName> 
    </Person> 
    <Person> 
    <FirstName>Kevin</FirstName> 
    <MiddleName>S</MiddleName> 
    <LastName>Gallagher</LastName> 
    </Person> 
    <Person> 
    <FirstName>Mary</FirstName> 
    <MiddleName>D</MiddleName> 
    <LastName>Jones</LastName> 
    </Person> 
</People> 
+0

興味深いサンプルデータ;) – dbasnett

+0

これはすべてフォームの読み込みに入りますか?私は、XMLの書き込みビットを除いて、まあまあだと思いますが、それらは保存関数に入るはずですか? –

+0

フォームロードでの読み込みに関しては、確かに。クラスを作成し、そこに読み書き操作を配置し、Form Loadから呼び出すこともできますし、ボタンのクリックやフォーム終了イベントを保存することもできますが、コードの大部分をクラスに書き込んでから、フォーム内のプライベートクラスとして、このクラスのメソッドを呼び出して作業を行います。 –

関連する問題