次の方法で共有


データ セクション

適用先: Access 2013、Office 2013

データ セクションは、行セットのデータ、および保留中の更新、挿入、または削除を定義します。 データ セクションには、行が含まれない場合と、1 つ以上の行が含まれる場合があります。 スキーマによって行が定義されている単一の行セットからのデータだけを含む場合もあります。 また、前述したとおり、データを含まない列は省略される場合があります。 属性やサブ要素がデータ セクションで使用されており、その構成体がスキーマ セクションで定義されていない場合、その構成体は自動的に無視されます。

String

テキスト データ内にある XML の予約文字は、適切な文字エンティティに置き換える必要があります。 たとえば、"Joe's Garage" という会社名の場合、一重引用符文字をエンティティに置き換える必要があります。 実際の行は次のようになります。

<z:row CompanyName="Joe&apos;s Garage"/> 

次の文字は XML で予約されており、文字エンティティ {',",&,,<>}に置き換える必要があります。

バイナリ

バイナリ データは、bin.hex 方式でエンコードされます。つまり、2 文字に 1 バイト (1/2 バイトにつき 1 文字) が割り当てられます。

DateTime

可変の VT_DATE 形式は、XML-Data データ型によって直接的にサポートされていません。 日付と時間の両方のコンポーネントを含む日付の正しい形式は、yyyy-mm-ddThh:mm:ss です。

XML で指定された日付形式の詳細については、「 W3C XMLData Note」を参照してください。

XML-Data の仕様で 2 つの等価なデータ型が定義されている場合 (i4 == int など)、ADO ではフレンドリ名で記述されますが、読み取りは両方に対して行われます。

保留中の変更の管理

Recordset は、イミディエイト更新モードまたはバッチ更新モードで開くことができます。 クライアント側カーソルを使用してバッチ更新モードで開かれた場合、 Recordset に対して加えられるすべての変更は、 UpdateBatch メソッドが呼び出されるまで保留状態となります。 Recordset が保存されると、保留中の変更も保存されます。 XML では、これらの変更は、urn:schemas-microsoft-com:rowset 内で定義された "update" 要素を使用して表されます。 さらに、行セットを更新できる場合は、行の定義で updatable プロパティが true に設定されている必要があります。 たとえば、Shippers テーブルに保留中の変更が含まれることを定義する場合、行の定義は次のようになります。

<s:ElementType name="row" content="eltOnly" updatable="true"> 
  <s:attribute type="ShipperID"/> 
  <s:attribute type="CompanyName"/> 
  <s:attribute type="Phone"/> 
  <s:extends type="rs:rowbase"/> 
</s:ElementType> 

これにより、ADO が更新可能な Recordset オブジェクトを作成できるよう、Persistence Provider に対し、データを公開するよう指示されます。

次のサンプル コードは、挿入、変更、および削除が、保存ファイルでどのように表現されるのかを示しています。

<rs:data> 
  <z:row ShipperID="2" CompanyName="United Package"  
    Phone="(503) 555-3199"/> 
<rs:update> 
  <rs:original> 
    <z:row ShipperID="3" CompanyName="Federal Shipping"  
      Phone="(503) 555-9931"/> 
  </rs:original> 
  <z:row Phone="(503) 552-7134"/> 
</rs:update> 
<rs:insert> 
  <z:row ShipperID="12" CompanyName="Lightning Shipping"  
    Phone="(505) 111-2222"/> 
  <z:row ShipperID="13" CompanyName="Thunder Overnight"  
    Phone="(505) 111-2222"/> 
  <z:row ShipperID="14" CompanyName="Blue Angel Air Delivery"  
    Phone="(505) 111-2222"/> 
</rs:insert> 
<rs:delete> 
  <z:row ShipperID="1" CompanyName="Speedy Express" Phone="(503) 555-9831"/> 
</rs:delete> 
</rs:data> 

更新は、必ず元の行データ全体の後に、変更された行のデータが続くという形式で表されます。 変更された行には、すべての列が含まれる場合と、実際に変更された列のみが含まれる場合があります。 前の例では、Shipper 2 の行が変更されていないのに対し、Shipper 3 では Phone 列の値だけが変更されているため、変更された行に含まれる列はこれだけです。 挿入行である Shippers 12、13、および 14 は、rs:insert タグの下でバッチ処理されます。 前の例では示されていませんが、削除行もバッチ処理される場合があります。