Книга: Обработка баз данных на Visual Basic®.NET

Бизнес-ситуация 10.1: подготовка XML-файлов для бизнес-партнеров

Бизнес-ситуация 10.1: подготовка XML-файлов для бизнес-партнеров

Компания Jones Novelty обменивается информацией с помощью электронных средств передачи данных со многими своими поставщиками и партнерами. Развитие этой тенденции, вероятно, приведет к тому, что компании придется спустя какое-то время применить качественно новое решение, например систему Microsoft BizTalk Server. В настоящее время Брэд Джонс стремится удовлетворить текущие потребности и сохранить конкурентоспособность, применяя XML для передачи транзакций. Для этого будут использованы уже описанные возможности XML и ряд других, которые описываются далее. Следует отметить, что многие требования можно удовлетворить даже без использования "мощных и тяжеловесных" платформ, инструментов и технологий, например XSLT.

Сначала следует организовать отправку XML-файла с перечнем товаров на складах. Для этого должны быть посланы сведения из всех полей таблицы tblInventory, за исключением поля WholesalePrice. Хотя это можно организовать с помощью простого запроса, который включает все поля, кроме WholesalePrice, в данном примере используется способ на основе XML-свойств. Для создаваемого XML-файл существует еще одно требование: в него необходимо включить XSD-схему с описанием всех полей как элементов, за исключением поля ID, которое передается с помощью атрибута.

Для создания этого приложения выполните перечисленные ниже действия.

1. Запустите интегрированную среду разработки Visual Studio .NET и создайте новый проект Visual Basic Windows Application. Для этого в диалоговом окне New Project (Новый проект) выберите тип проекта Visual Basic Project в области Project Types (Типы проектов), а затем шаблон Windows Application (Приложение Windows) в области Templates (Шаблоны).

2. Назовите проект BusinessCaseIO.

3. Укажите путь к файлам проекта.

4. Увеличьте размер формы Form1.

5. В окне свойств Properties укажите значение frmPrepareXML для свойства (Name) и значение Prepare XML для свойства Text формы Form1.

6. В верхнем левом углу формы создайте кнопку, перетаскивая ее из панели элементов управления.

7. В окне свойств Properties укажите значение btnInventory для свойства (Name) и значение Create Inventory XML для свойства Text этой кнопки.

В верхней части файла введите следующий код:

Imports System
Imports System.Data
Imports System.Data.SqlClient

Затем в определении класса формы frmPrepareXML введите приведенный ниже код.

Dim en As New SqlConnection _
 ("data source=localhost;initial catalog=Novelty;user>

Private Sub btnInventory_Click(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles btnlnventory.Click
 Dim dsInventory As New DataSet()
 Dim daInventory As New SqlDataAdapter _
  ("select * from tblInventory ", en)
 daInventory.Fill(dsInventory, "tblInventory")
 ' Сохранение поля ID как XML-атрибута, а не элемента
 dsInventory.Tables("tblInventory").Columns("ID").ColumnMapping = _
  MappingType.Attribute
 ' Сокрытие поля WholesalePrice в сохраненном XML-файле
 dslnventory.Tables("tbllnventory").Columns _
  ("WholesalePrice").ColumnMapping = MappingType.Hidden
 ' Сохранение данных в XML-файле, включая встроенную схему.
 dsInventory.WriteXml("..Inventory.xml", XmlWriteMode.WriteSchema)
End Sub

После вставки данных в объект DataSet для формирования XML-файла используются следующие два выражение. Первое выражение указывает на то, что поле ID следует сохранить как XML-атрибут:

dsInventory.Tables("tblInventory").Columns("ID").ColumnMapping = _
 MappingType.Attribute

Второе выражение указывает на сокрытие поля WholesalePrice в сохраненном XML-файле:

dslnventory.Tables("tbllnventory").Columns _
 ("WholesalePrice").ColumnMapping = MappingType.Hidden

Наконец, во время сохранения данных используется второй параметр метода WriteXML, который указывает на необходимость включения XSD-схемы вместе с данными. Полученный в результате XML-файл показан в листинге 10.8.

Листинг 10.8. Пример сохранения таблицы tblInventory в виде XML-файла

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
 <xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="NewDataSet" msdata:IsDataSet="true">
   <xs:complexType>
    <xs:choice maxOccurs="unbounded">
     <xs:element name="tblInventory">
      <xs:complexType>
       <xs:sequence>
        <xs:element name="ProductName" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
        <xs:element name="RetailPrice" type="xs:decimal" minOccurs="0" msdata:Ordinal="3" />
        <xs:element name="Description" type="xs:string" minOccurs="0" msdata:Ordinal="4" />
       </xs:sequence>
       <xs:attribute name="ID" type="xs:int" />
       <xs:attribute name="WholesalePrice" type="xs:decimal" use="prohibited" />
      </xs:complexType>
     </xs:element>
    </xs:choice>
   </xs:complexType>
  </xs:element>
 </xs:schema>
 <tblInventory>
  <ProductName>Rubber Chicken</ProductName>
  <RetailPrice>2.99</RetailPrice>
  <Description>The quintessential rubber chicken.</Description>
  </tblInventory>
  <tblInventory>
   <ProductName>Joy Buzzer</ProductName>
   <RetailPrice>9.99</RetailPrice>
   <Description>They will get a real shock out of this.</Description>
  </tblInventory>
  <tblInventory>
   <ProductName>Seltzer Bottle</ProductName>
   <RetailPrice>15.24</RetailPrice>
   <Description>Seltzer sold separately.</Description>
  </tblInventory>
  <tblInventory>
   <ProductName>Ant Farm</ProductName>
   <RetailPrice>14.99</RetailPrice>
   <Description>Watch ants where they live and breed.</Description>
  </tblInventory>
  <tblInventory>
   <ProductName>Wind-Up Robot</ProductName>
   <RetailPrice>29.99</RetailPrice>
   <Description>Giant robot: attack toybox!</Description>
  </tblInventory>
  <tblInventory>
   <ProductName>Rubber Eyeballs</ProductName>
   <RetailPrice>0.99</RetailPrice>
   <Description>Peek-a-boo!</Description>
  </tblInventory>
  <tblInventory>
   <ProductName>Doggy Mess</ProductName>
   <RetailPrice>1.99</RetailPrice>
   <Description>Yechhh!</Description>
 </tblInventory>
 <tblInventory>
  <ProductName>Mini-Camera</ProductName>
  <RetailPrice>9.99</RetailPrice>
  <Description>For future spies!</Description>
 </tblInventory>
 <tblInventory>
  <ProductName>Glow Worms</ProductName>
  <RetailPrice>1.99</RetailPrice>
  <Description>Makes them easy to find</Description>
 </tblInventory>
 <tblInventory>
  <ProductName>Insect Pops</ProductName>
  <RetailPrice>0.99</RetailPrice>
  <Description>Special treats</Description>
 </tblInventory>
 <tblInventory>
  <ProductName>Alien Alarm Clock</ProductName>
  <RetailPrice>45.99</RetailPrice>
  <Description>Do you know what time it is out there?</Description>
  </tblInventory>
  <tblInventory>
   <ProductName>Cinnamon Toothpicks</ProductName>
   <RetailPrice>1.99</RetailPrice>
   <Description>Really wakes up your mouth</Description>
  </tblInventory>
 </NewDataSet>

Для составления ведомости на выдачу заработной платы сотрудникам компании нужно создать код сохранения информации о сотрудниках в формате XML для каждого отдела. Для этого разработчик базы данных должен включить в форму frmPrepareXML вторую кнопку btnEmployees и вставить в код класса формы frmPrepareXML код из листинга 10.9.

Листинг 10.9. Код сохранения данных из таблиц tblEmployee и tblDepartment в XML-файле

Private Sub btnEmployees_Click (ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles btnEmployees.Click
 Dim dsEmployees As New DataSet()
 Dim daEmployees As New SqlDataAdapter _
  ("select * from tblEmployee", en)
 Dim daDepartments As New SqlDataAdapter _
  ("select * from tblDepartment", en)
 daDepartments.Fill(dsEmployees,"tblDepartment")
 daEmployees.Fill(dsEmployees, "tblEmployee")
 ' Определение отношения между таблицами.
 dsEmployees.Relations.Add("DepartmentEmployees", _
  dsEmployees.Tables("tblDepartment").Columns("ID"), _
  dsEmployees.Tables("tblEmployee").Columns("DepartmentID"))
 ' Сохранение данных в XML-файле.
 dsEmployees.WriteXml("..Employees.xml")
End Sub

В этом коде для сохранения данных из таблиц tblDepartment и tblEmployee в XML-файле используются предлагаемые по умолчанию параметры объекта DataSet. Полученный в результате XML-файл Employees.xml показан в листинге 10.10.

Листинг 10.10. XML-файл Employees. xml, полученный в результате сохранения данных из таблиц tblDepartment и tblEmployee

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
 <tblDepartment>
  <ID>1</ID>
  <DepartmentName>Administration</DepartmentName>
 </tblDepartment>
 <tblDepartment>
  <ID>2</ID>
  <DepartmentName>Engineering</DepartmentName>
 </tblDepartment>
 <tblDepartment>
  <ID>3</ID>
  <DepartmentName>Sales</DepartmentName>
 </tblDepartment>
 <tblDepartment>
  <ID>4</ID>
  <DepartmentName>Marketing</DepartmentName>
 </tblDepartment>
 <tblEmployee>
  <ID>1</ID>
  <FirstName>Carole</FirstName>
  <LastName>Vermeren</LastName>
  <DepartmentID>2</DepartmentID>
  <Salary>222</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>2</ID>
  <FirstName>Cathy</FirstName>
  <LastName>Johnson</LastName>
  <DepartmentID>2</DepartmentID>
  <Salary>13000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>3</ID>
  <FirstName>Eric</FirstName>
  <LastName>Haglund</LastName>
  <DepartmentID>4</DepartmentID>
  <Salary>12000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>4</ID>
  <FirstName>Julie</FirstName>
  <LastName>Ryan</LastName>
  <DepartmentID>1</DepartmentID>
  <Salary>4000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>5</ID>
  <FirstName>Richard</FirstName>
  <LastName>Halpin</LastName>
  <DepartmentID>2</DepartmentID>
  <Salary>10000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>6</ID>
  <FirstName>Kathleen</FirstName>
  <LastName>Johnson</LastName>
  <DepartmentID>3</DepartmentID>
  <Salary>18000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>7</ID>
  <FirstName>Sorel</FirstName>
  <LastName>Polito</LastName>
  <DepartmentID>4</DepartmentID>
  <Salary>28000</Salary>
  </tblEmployee>
 <tblEmployee>
  <ID>8</ID>
  <FirstName>Sorel</FirstName>
  <LastName>Terman</LastName>
  <DepartmentID>1</DepartmentID>
  <Salary>8000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>9</ID>
  <FirstName>Randy</FirstName>
  <LastName>Hobaica</LastName>
  <DepartmentID>2</DepartmentID>
  <Salary>18000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>10</ID>
  <FirstName>Matthew</FirstName>
  <LastName>Haglund</LastName>
  <DepartmentID>3</DepartmentID>
  <Salary>30000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>11</ID>
  <FirstName>Cathy</FirstName>
  <LastName>Vermeren</LastName>
  <DepartmentID>4</DepartmentID>
  <Salary>0</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>12</ID>
  <FirstName>Brad</FirstName>
  <LastName>Townsend</LastName>
  <DepartmentID>2</DepartmentID>
  <Salary>12000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>13</ID>
  <FirstName>Jennifer</FirstName>
  <LastName>Eves</LastName>
  <DepartmentID>2</DepartmentID>
  <Salary>26000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>14</ID>
  <FirstName>Steve</FirstName>
  <LastName>Marshall</LastName>
  <DepartmentID>3</DepartmentID>
  <Salary>42000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>15</ID>
  <FirstName>Laura</FirstName>
  <LastName>Davidson</LastName>
  <DepartmentID>4</DepartmentID>
  <Salary>60000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>16</ID>
  <FirstName>Angela</FirstName>
  <LastName>Stefanac</LastName>
  <DepartmentID>2</DepartmentID>
  <Salary>16000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>17</ID>
  <FirstName>Marjorie</FirstName>
  <LastName>Bassett</LastName>
  <DepartmentID>2</DepartmentID>
  <Salary>34000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>18</ID>
  <FirstName>Joe</FirstName>
  <LastName>Chideya</LastName>
  <DepartmentID>3</DepartmentID>
  <Salary>54000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>19</ID>
  <FirstName>Katie</FirstName>
  <LastName>Chideya</LastName>
  <DepartmentID>4</DepartmentID>
  <Salary>76000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>20</ID>
  <FirstName>Terri</FirstName>
  <LastName>Allen</LastName>
  <DepartmentID>1</DepartmentID>
  <Salary>20000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>21</ID>
  <FirstName>Mike</FirstName>
  <LastName>Doberstein</LastName>
  <DepartmentID>2</DepartmentID>
  <Salary>42000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>22</ID>
  <FirstName>Terri</FirstName>
  <LastName>Woodruff</LastName>
  <DepartmentID>3</DepartmentID>
  <Salary>66000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>23</ID>
  <FirstName>Cathy</FirstName>
  <LastName>Rosenthal</LastName>
  <DepartmentID>4</DepartmentID>
  <Salary>0</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>24</ID>
  <FirstName>Margaret</FirstName>
  <LastName>Eves</LastName>
  <DepartmentID>1</DepartmentID>
  <Salary>24000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>25</ID>
  <FirstName>Mikki</FirstName>
  <LastName>Lemay</LastName>
  <DepartmentID>2</DepartmentID>
  <Salary>50000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>26</ID>
  <FirstName>Randy</FirstName>
  <LastName>Nelson</LastName>
  <DepartmentID>3</DepartmentID>
  <Salary>78000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>27</ID>
  <FirstName>Kathleen</FirstName>
  <LastName>Husbands</LastName>
  <DepartmentID>4</DepartmentID>
  <Salary>108000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>28</ID>
  <FirstName>Kathleen</FirstName>
  <LastName>Eberman</LastName>
  <DepartmentID>1</DepartmentID>
  <Salary>28000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>29</ID>
  <FirstName>Richard</FirstName>
  <LastName>Rosenthal</LastName>
  <DepartmentID>2</DepartmentID>
  <Salary>58000</Salary>
 </tblEmployee>
 <tblEmployee>
  <ID>30</ID>
  <FirstName>Mike</FirstName>
  <LastName>Woodruff</LastName>
  <DepartmentID>3</DepartmentID>
  <Salary>90000</Salary>
 </tblEmployee>
</NewDataSet>

К сожалению, данный XML-файл содержит список сотрудников, который не сгруппирован по отделам. Несмотря на созданное отношение между родительской таблицей tblDepartment и дочерней таблицей tblEmployee полученный XML-файл содержит данные отдельно для каждой таблицы. Для вложения дочерних элементов из таблицы tblEmployee в родительские элементы из таблицы tblDepartment нужно указать значение True для свойства Nested объекта-отношения Relation.

dsEmployees.Relations("DepartmentEmployees").Nested = True

После вставки этой строки кода перед строкой сохранения данных

dsInventory.WriteXml("..Inventory.xml", XmlWriteMode.WriteSchema)

будет получен XML-файл Employees.xml, показанный в листинге 10.11.

 Листинг 10.11. XML-файл Employees.xml с вложением дочерних элементов из таблицы tblEmployee в родительские элементы из таблицы tblDepartment

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
 <tblDepartment>
  <ID>1</ID>
  <DepartmentName>Administration</DepartmentName>
  <tblEmployee>
   <ID>2035</ID>
   <FirstName>Julie</FirstName>
   <LastName>Ryan</LastName>
   <DepartmentID>1</DepartmentID>
   <Salary>4000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2039</ID>
   <FirstName>Sorel</FirstName>
   <LastName>Terman</LastName>
   <DepartmentID>1</DepartmentID>
   <Salary>8000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2051</ID>
   <FirstName>Terri</FirstName>
   <LastName>Allen</LastName>
   <DepartmentID>1</DepartmentID>
   <Salary>20000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2055</ID>
   <FirstName>Margaret</FirstName>
   <LastName>Eves</LastName>
   <DepartmentID>1</DepartmentID>
   <Salary>24000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2059</ID>
   <FirstName>Kathleen</FirstName>
   <LastName>Eberman</LastName>
   <DepartmentID>1</DepartmentID>
   <Salary>28000</Salary>
  </tblEmployee>
 </tblDepartment>
 <tblDepartment>
  <ID>2</ID>
  <DepartmentName>Engineering</DepartmentName>
  <tblEmployee>
   <ID>2032</ID>
   <FirstName>Carole</FirstName>
   <LastName>Vermeren</LastName>
   <DepartmentID>2</DepartmentID>
   <Salary>222</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2033</ID>
   <FirstName>Cathy</FirstName>
   <LastName>Johnson</LastName>
   <DepartmentID>2</DepartmentID>
   <Salary>13000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2036</ID>
   <FirstName>Richard</FirstName>
   <LastName>Halpin</LastName>
   <DepartmentID>2</DepartmentID>
   <Salary>10000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2040</ID>
   <FirstName>Randy</FirstName>
   <LastName>Hobaica</LastName>
   <DepartmentID>2</DepartmentID>
   <Salary>18000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2043</ID>
   <FirstName>Brad</FirstName>
   <LastName>Townsend</LastName>
   <DepartmentID>2</DepartmentID>
   <Salary>12000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2044</ID>
   <FirstName>Jennifer</FirstName>
   <LastName>Eves</LastName>
   <DepartmentID>2</DepartmentID>
   <Salary>26000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>204V</ID>
   <FirstName>Angela</FirstName>
   <LastName>Stefanac</LastName>
   <DepartmentID>2</DepartmentID>
   <Salary>16000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2048</ID>
   <FirstName>Marjorie</FirstName>
   <LastName>Bassett</LastName>
   <DepartmentID>2</DepartmentID>
   <Salary>34000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2052</ID>
   <FirstName>Mike</FirstName>
   <LastName>Doberstein</LastName>
   <DepartmentID>2</DepartmentID>
   <Salary>42000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2056</ID>
   <FirstName>Mikki</FirstName>
   <LastName>Lemay</LastName>
   <DepartmentID>2</DepartmentID>
   <Salary>50000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2060</ID>
   <FirstName>Richard</FirstName>
   <LastName>Rosenthal</LastName>
   <DepartmentID>2</DepartmentID>
   <Salary>58000</Salary>
  </tblEmployee>
 </tblDepartment>
 <tblDepartment>
  <ID>3</ID>
  <DepartmentName>Sales</DepartmentName>
  <tblEmployee>
   <ID>2037</ID>
   <FirstName>Kathleen</FirstName>
   <LastName>Johnson</LastName>
   <DepartmentID>3</DepartmentID>
   <Salary>18000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2041</ID>
   <FirstName>Matthew</FirstName>
   <LastName>Haglund</LastName>
   <DepartmentID>3</DepartmentID>
   <Salary>30000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2045</ID>
   <FirstName>Steve</FirstName>
   <LastName>Marshall</LastName>
   <DepartmentID>3</DepartmentID>
   <Salary>42000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2049</ID>
   <FirstName>Joe</FirstName>
   <LastName>Chideya</LastName>
   <DepartmentID>3</DepartmentID>
   <Salary>54000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2053</ID>
   <FirstName>Terri</FirstName>
   <LastName>Woodruff</LastName>
   <DepartmentID>3</DepartmentID>
   <Salary>66000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2057</ID>
   <FirstName>Randy</FirstName>
   <LastName>Nelson</LastName>
   <DepartmentID>3</DepartmentID>
   <Salary>78000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2061</ID>
   <FirstName>Mike</FirstName>
   <LastName>Woodruff</LastName>
   <DepartmentID>3</DepartmentID>
   <Salary>90000</Salary>
  </tblEmployee>
 </tblDepartment>
 <tblDepartment>
  <ID>4</ID>
  <DepartmentName>Marketing</DepartmentName>
  <tblEmployee>
   <ID>2034</ID>
   <FirstName>Eric</FirstName>
   <LastName >Haglund</LastName>
   <DepartmentID>4</DepartmentID>
   <Salary>12000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2038</ID>
   <FirstName>Sorel</FirstName>
   <LastName>Polito</LastName>
   <DepartmentID>4</DepartmentID>
   <Salary>28000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2042</ID>
   <FirstName>Cathy</FirstName>
   <LastName>Vermeren</LastName>
   <DepartmentID>4</DepartmentID>
   <Salary>0</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2046</ID>
   <FirstName>Laura</FirstName>
   <LastName>Davidson</LastName>
   <DepartmentID>4</DepartmentID>
   <Salary>60000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2050</ID>
   <FirstName>Katie</FirstName>
   <LastName>Chideya</LastName>
   <DepartmentID>4</DepartmentID>
   <Salary>76000</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2054</ID>
   <FirstName>Cathy</FirstName>
   <LastName>Rosenthal</LastName>
   <DepartmentID>4</DepartmentID>
   <Salary>5555</Salary>
  </tblEmployee>
  <tblEmployee>
   <ID>2058</ID>
   <FirstName>Kathleen</FirstName>
   <LastName>Husbands</LastName>
   <DepartmentID>4</DepartmentID>
   <Salary>108000</Salary>
  </tblEmployee>
 </tblDepartment>
</NewDataSet>

Оглавление книги


Генерация: 1.666. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз