![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
VB.NET2005で家計簿を作っています。
データの保存はXMLで行いたいと考えています。
DataSetにshishutuテーブルとShopテーブルをつくり、shishutuテーブルにはShopテーブルの主キーのデータを格納することで二つのテーブルを連携したいと考えています。
そこでデータ入力時に自動的に主キーを入力したいと思うのですが、Accessのようにオートナンバー型などがないので、一意のデータをどのように入れたらいいか悩んでいます。
Rows.Countでは、データを削除するとデータが重なるなど不具合も出てくるのではないかと思っています。
そこで
1. いつ、どの時点で
2. どのようなプロパティを参照にして
3. 一意のデータを作ればよいか?
についてやもしくは「そもそもXMLでは主キーを自動的に入れることは不向きで別に良い方法がある」などのご意見を伺いたいと思います。
なにか良い知恵がありましたらよろしくお願いします。
No.1ベストアンサー
- 回答日時:
お世話になります。
XML というか、DataSet 内の
DataTable の AutoIncrement 列の作成方法ですよね。
こんな形で出来ると思います。
下の Button2 のコードを実行すると、
ID 列に 自動採番された値が入っていることが
確認できます。
■Dataset1.xsd (XML ビューで表示)
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="Dataset1" targetNamespace="http://tempuri.org/Dataset1.xsd" elementFormDefault="qualified"
attributeFormDefault="qualified" xmlns="http://tempuri.org/Dataset1.xsd" xmlns:mstns="http://tempuri.org/Dataset1.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="Dataset1" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="element1">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:ReadOnly="true" msdata:AutoIncrement="true" type="xs:int" />
<xs:element name="NAME" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:key name="Dataset1Key1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:element1" />
<xs:field xpath="mstns:ID" />
</xs:key>
</xs:element>
</xs:schema>
■使う側(Form 等)
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim ds As Dataset1 = New Dataset1
Dim element1 As Dataset1.element1DataTable = ds.element1
element1.Addelement1Row("aaa")
element1.Addelement1Row("bbb")
element1.Addelement1Row("ccc")
element1.Addelement1Row("ddd")
element1.Addelement1Row("eee")
For Each row As Dataset1.element1Row In element1.Rows
Console.WriteLine("ID:" & Convert.ToString(row.ID))
Console.WriteLine("NAME:" & Convert.ToString(row.NAME))
Next
End Sub
ありがとうございます。
現在テスト出来る状況ではないので試していませんが、まさしく私がイメージしていたものです。
自分でコードを書かなくてはならないと思い込んでいましたが、こんな便利なプロパティがあったとは知りませんでした。
本当に助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Excel(エクセル) Excel同士のデータの突合 3 2023/08/07 16:34
- Excel(エクセル) Power Query でのデータの一括修正について 2 2022/05/10 02:00
- システム 帳票出力を行う単体テストのテストデータが作成できません 2 2023/08/26 21:26
- IT・エンジニアリング 帳票出力を行う単体テストのテストデータが作成できません 2 2023/08/26 21:25
- Excel(エクセル) Excel ドロップダウンリスト(入力規則)に関してです データの入力規則で元データ79000行のド 3 2023/07/17 10:06
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XMLSchemaのデータ型をインポー...
-
東芝のDynabookなのですがアン...
-
XML、XSLTの適応エラー(IEから...
-
VB.NETで最後フォのフォ...
-
XMLでホームページ
-
人気上位サイトがTransitional...
-
Access VBAでXMLが読み込めない
-
CPUの考え方を教えてください ...
-
同じタグ名の項目取得
-
昔Winnyってありましたけど、あ...
-
xmlはどんな用途で使われている
-
ノードとは
-
MSXML で Windows-31J のキャラ...
-
onClick 属性が適用できない
-
C#初心者です。HtmlAgilityPack...
-
HTTPステータス 404 - There is...
-
element of surprise
-
XSLで、XMLの空タグを制御したい。
-
TreeViewで複数ノードの選択は...
-
バッチファイルでテキストファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
順不同・任意のタグ
-
計算問題が分かりません… どな...
-
XMLSchemaのデータ型をインポー...
-
PHPでXMLデータ生成、スキーマ...
-
XMLで主キーを自動的に入力する...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
XMLで要素が記述された順番に意...
-
昔Winnyってありましたけど、あ...
-
UTF-8でエンコーディングとはど...
-
バッチファイルでテキストファ...
-
ルート要素ノードが2個ある場合?
-
Excel-VBAでXMLの複数ノードの...
-
XML、XSLTの適応エラー(IEから...
-
SNMP リンクダウンとノードダ...
-
同じタグ名の項目取得
-
コンテキストメニュークリック...
-
あるノードリストに、特定の名...
-
2分探索木の高さを求めるプロ...
-
VBSでxmlの値を書き換えたい
おすすめ情報