• ’t Was gezellig bij Els

    ’t Was gezellig bij Els en Wim, we zouden dat meer moeten doen.

    ⁂

  • ’t Is eigenlijk schaamtelijk. Ik

    ’t Is eigenlijk schaamtelijk. Ik zit hier bij Els, en de enige die ik ken zijn Els en Wim en Sandra natuurlijk. En voor de rest zijn het allemaal mensen die elkaar al honderd jaar kennen en al sinds de kleuterschool beste vrienden zijn.

    Dan maar uit armoe de computer bovengehaald. En nog wat databindings gelegd op allerlei dingen.

    ⁂

  • Hehe. “TV outlet”, daar zullen

    Hehe. “TV outlet”, daar zullen ze bij VTM content mee zijn 🙂

    Arabiya TV hires Arnett

    Reporter Peter Arnett has not been short of job offers after he was fired from NBC. He has since been hired by British tabloid The Mirror and the Belgian TV outlet VTM. Now he is hired by the Dubai-based Arabic TV channel Al Arabiya, one of the competitors of the more famous al Jazeera.

    This is a quite interesting case of fact copying fiction. Here’s a comic strip predicting that Arnett would seek a job opening with al Jazeera (dated 4/1/03). That’s about as close as it gets. [Secular Blasphemy]

    ⁂

  • Juit terug van de Taaiberg.

    Juit terug van de Taaiberg. De Ronde van Vlaanderen. Serieus de moeite waard.

    ⁂

  • VoilĂ . Ik ga gaan slapen.

    VoilĂ . Ik ga gaan slapen. Ik ben geradbraakt.

    ⁂

  • Bob Monkhouse’s favoriete boek is

    Bob Monkhouse’s favoriete boek is His Dark Materials van Philip Pullman. Nog zo’n achtingstijger.

    ⁂

  • Aaaargh! Case sensitivity in databases!

    Aaaargh! Case sensitivity in databases! Hoe is dat in godsnaam mogelijk?!

    We zijn juist terug van bij mijn moeder (mijn vader zat weer ergens ginderachter, Ljubjana deze keer, tsss), en ik dacht, I’ll give this datab binding lark another go.

    En what do you know? Het is onnoemelijk onnoemelijk veel gemakkelijker dan ik dacht. Gegeven een combobox cbPublisher voor een lijst uitgevers, een datatable tblBook waarin het huidige boek zit en een datatable tblPublishers met alle uitgevers:

    //de combobox een datasource geven
    cbPublisher.DataSource=tblPublishers;

    //displaymember van een combobox met datasource is wat getoond wordt
    cbPublisher.DisplayMember=”publisher_name”;

    //daarmee overeenkomend: valuemember, ’t zelfde als value in een (html-)<option>
    cbPublisher.ValueMember=”publisher_ID”;

    //hey presto! selectedvalue verbinden met book_publisher_id uit tblBook
    cbPublisher.DataBindings.Add(“SelectedValue”, tblBook, “book_publisher_ID”);

    En dat is het. Dat is Ă lles! Werkt direkt van de eerste keer, werkt perfect, doet wat het moet doen, prachtig. Sweet Jesus!

    Enfin ja, alles, een groot woord. Ik heb dan nog een goeie drie kwartier zitten zoeken waarom het niet wou werken als ik er een tweede combobox aan toe wou voegen:

    cbCover.DataSource=tblCovers;
    cbCover.DisplayMember=”cover_type”;
    cbCover.ValueMember=”cover_ID”;
    cbCover.DataBindings.Add(“SelectedValue”, tblBooks, “book_cover_ID”);

    Zucht, driedubbel zucht. Vieze fouten, in de zin van “Could not bind to the new value member”, en dan misleidende dingen over het internet verspreid vinden, bah.

    Die brol is verdomme case sensitive!! Nu ja, figures eigenlijk wel: die dataset (eum, DataSet eigenlijk dus 🙂 is geen database maar een XML-dinges, en XML is nu eenmaal case sensitive. Het was dus gewoon dat cover_ID moest vervangen worden door cover_id. En nu werkt het gelijk een lierken:

    Morgen doe ik de rest van die databound controls.

    ⁂

  • Laurence Llewellyn-Bowen’s favoriete boek is Frankenstein, de man stijgt in mijn achting.

    ⁂

  • Waar een beetje rust en

    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.

    ⁂

  • Leve Astor Piazzolla!

    Leve Astor Piazzolla!

    ⁂

  • Een oudje maar een goedje:

    Een oudje maar een goedje:

    L’histoire suivante est vĂ©ridique (ceux qui veulent vĂ©rifier peuvent s’adresser aux affaires maritimes canadiennes, l’incident s’est passĂ© en Octobre 1995). 

    Transcription d’une communication radio entre un bateau de la US Navy et les autoritĂ©s canadiennes au large de Newfoundland. 

    -AmĂ©ricains: Veuillez vous dĂ©router de 15 degrĂ©s Nord pour Ă©viter une collision. A vous. 

    -Canadiens: Veuillez plutĂŽt vous dĂ©router de 15 degrĂ©s Sud pour Ă©viter une collision. A vous. 

    -AmĂ©ricains: Ici le capitaine d’un navire des forces navales amĂ©ricaines. Je rĂ©pĂšte : Veuillez modifier votre course. A vous. 

    -Canadiens: Non, veuillez dĂ©router, je vous prie. A vous. 

    -AmĂ©ricains: ICI C’EST LE PORTE AVIONS USS LINCOLN, LE SECOND NAVIRE EN IMPORTANCE DE LA FLOTTE NAVALE DES ETATS- UNIS D’AMERIQUE. NOUS SOMMES ACCOMPAGNE PAR 3 DESTROYERS, 3 CROISEURS ET UN NOMBRE IMPORTANT DE NAVIRES D’ESCORTE. JE VOUS DEMANDE DE DEVIER DE VOTRE ROUTE DE 15 DEGRES NORD OU DES MESURES CONTRAIGNANTES VONT ETRE PRISES POUR ASSURER LA SECURITE DE NOTRE NAVIRE. A VOUS. 

    -Canadiens: Ici, c’est un phare. A vous.

    -Américains: silence.

    ⁂

  • Ik zie juist op CNN

    Ik zie juist op CNN dat de Amerikanen zeggen dat “substantial numbers of US troops” in “central BAghdad” zouden zijn, en dat de mensen dat zouden zien “rond de middag”.

    Het is nu 12u27 in Bagdad, en ik hoop van harte dat de Amerikanen gelijk hebben. No way dat ik hoop dat er alsnog guerillatoestanden van komen, gewoon om te bewijzen dat de VS verkeerd waren. Oorlog is vies, en hoe sneller het gedaan is , hoe beter.

    ⁂

  • Microsoft Infopath: I didn’t get

    Microsoft Infopath: I didn’t get it.

    Now I do.

    Miljaar, weer een goed ding van de mannen van Redmond.

    Maar nu naar bed, morgen C#, ik moet er fris op staan, die datasets met relaties en alles moeten er echt door morgen.

    ⁂

  • Johnny English. Nog zo’n film

    Johnny English. Nog zo’n film die ik nooit zou gaan bekijken.

    ⁂

  • Q&A sessie over de toekomst

    Q&A sessie over de toekomst van C#, met Anders hemzelf. Serieus interessant. Dingen als:

    Q: Will C#/etc replace VBA in Office anytime soon?

    A: C# won?t replace VBA in Office – VBA will be supported in Office for a long time. However, we will introduce a product that we are calling ?Visual Studio .NET Tools for Office.? This will let you write Office solutions using both C# and VB.NET. We are super excited about this product, and will be posting the Beta on MSDN.COM very soon.

    ⁂