Waar een beetje rust en een klaar hoofd allemaal niet goed voor zijn: die DataSet-historie met meer tabellen, ‘t is eigenlijk toch niet zo ingewikkeld.

OleDbDataAdapter da;
DataSet dsBook=
new DataSet(“Book”);

da=
new OleDbDataAdapter(“select * from tblBooks where book_id=”+ID.ToString(),cnnBooks);
da.Fill(dsBook,”tblBooks”);
da=
new
OleDbDataAdapter(“select * from tblPublishers”,cnnBooks);
da.Fill(dsBook,”tblPublishers”);
richTextBox2.Text=””;
foreach (DataTable dt in
dsBook.Tables)
{
   richTextBox2.Text+=”table: “+dt.TableName+”\n”;
   foreach (DataColumn dc in
dt.Columns) 
   {
      richTextBox2.Text+=”\tcolumn: “+dc.ColumnName+”\n”;
   }
}

En dat geeft een proper lijste van tabellen en velden:

table: tblBooks
    column: book_ID
    column: book_title
    column: book_genre_id
    column: book_pages
    column: book_cover_ID
    column: book_year
    column: book_publisher_ID
    column: book_price
[…]
table: tblPublishers
    column: publisher_id
    column: publisher_name

En dan is ‘t nog een kwestie van daar een relatie aan toe te voegen:

dsBook.Relations.Add(“BookPublisher”,
    dsBook.Tables[“tblBooks”].Columns[“book_publisher_ID”],
    dsBook.Tables[“tblPublishers”].Columns[“publisher_id”],
    false);

En dat geeft proper schoon het volgende schema:

<?xml version=”1.0″ encoding=”utf-16″?>
<xs:schema id=”Book” xmlns=”” xmlns:xs=”http://www.w3.org/2001/XMLSchema” xmlns:msdata=”urn:schemas-microsoft-com:xml-msdata”>
   <xs:element name=”Book” msdata:IsDataSet=”true” msdata:Locale=”nl-BE”>
      <xs:complexType>
         <xs:choice maxOccurs=”unbounded”>
            <xs:element name=”tblBooks”>
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name=”book_ID” type=”xs:int” minOccurs=”0″ />
                     <xs:element name=”book_title” type=”xs:string” minOccurs=”0″ />
                     <xs:element name=”book_genre_id” type=”xs:int” minOccurs=”0″ />
                     <xs:element name=”book_pages” type=”xs:int” minOccurs=”0″ />
                     <xs:element name=”book_cover_ID” type=”xs:int” minOccurs=”0″ />
                     <xs:element name=”book_year” type=”xs:int” minOccurs=”0″ />
                     <xs:element name=”book_publisher_ID” type=”xs:int” minOccurs=”0″ />
                     <xs:element name=”book_price” type=”xs:double” minOccurs=”0″ />
                     […]
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
            <xs:element name=”tblPublishers”>
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name=”publisher_id” type=”xs:int” minOccurs=”0″ />
                     <xs:element name=”publisher_name” type=”xs:string” minOccurs=”0″ />
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
         </xs:choice>
      </xs:complexType>
   </xs:element>
   <xs:annotation>
      <xs:appinfo>
         <msdata:Relationship name=”BookPublisher” msdata:parent=”tblBooks” 
               msdata:child=”tblPublishers” msdata:parentkey=”book_publisher_ID”
               msdata:childkey=”publisher_id” />
      </xs:appinfo>
   </xs:annotation>
</xs:schema>

Wijs! Enfin, nu zijn de kinderen terug van het zwembad. Na het eten ga ik nog eens verder kijken om die zooi in controls te krijgen en te wijzigen.