Mick Lohan's profileThe 20 second commutePhotosBlogLists Tools Help

Blog


    January 27

    Exporting a Multi-Table Query from SQL to Excel

    The story so far - we can filter and sort a database table and select columns to export to Excel.

    Ok , that's not bad .... but its not that great either ...  what if you want to use a general query that combines fields from various tables?

    Funny enough , this didn't take much to implement either ...   just a slight extension to the schema .....

    image

    then change the CmdString generation to use the sqlQuery attribute value - if a value is entered

    image

    not forgetting to change the Column2Display List<Of String> ...

    image

    which we use to generate the table rows ....

    image

    The net result is if we use the following xml request .... contained in say <OrderDetails.xml> image

    [Notice how we use C0 -> C12 in our query - which we can then use as the required column names  in any order and only the ones we want]

    Then by entering the following at a command prompt [or better still - create a shortcut ...]

    C:\SQL2Excel OrderDetails.xml

    we get ....

    image

    Download the latest version and have even more fun !!

    Jonathan Aneja  a PM on the VB Team [these lads are really pulling out all the stops] has written a great article entitled XML Programming in Visual Basic 9.0 in the February 2008 edition of MSDN Magazine. Covers the subject very well in just 3 pages

    Slan [traditional Irish salutation - here's wishing you well]

    January 25

    Exporting Sql Table Data to Excel use Linq to XML with Filtering

    There I was sitting back all smug and happy with my routine until someone pointed out

    • what about if you try and export a large file - wouldn't you need to filter it ?
    • and sorting wouldn't be bad either
    • and while you're at it are you sure it can handle null values ? [Well spotted Avner]

    Oh dear , back to the drawing board .....

    It turned out that sorting and filtering was easy to include by including 2 extra attributes in the Tabledetails schema - a 'Where' attribute and an 'OrderBy' attribute where the user can either enter appropriate values or leave blank in which case the Where attribute defaults = '1=1' and the 'OrderBy' defaults to the Name value in the first Column i.e. CustomerID in this case.

    image

    then the additions of 4 lines of code sets up the default values

    image

    and extended the cmdString to query the database

    image

    and I get

    clip_image002

     

    To sort out the last issue - took several cups of coffee - Internet chat with a fellow nerd - it's true what they say - a problem shared is a problem halved.  - the solution ended up as being a simple cast of the appropriate attribute to string - if the attribute is null a blank value is placed in that cell.

    Ok - so what have we got now ?

    Ability to export columns from a filtered table taken from a database on your server into an excel spreadsheet

    [that should keep that bean-counter happy - just place the SQL2Excel.exe in his windows folder - set up an xml file containing the particular TableDetails amended to suit his query in his documents folder - create a shortcut with a command line of 'SQL2Excel  <YourLayout.xml>'  and as they say over here in Connemara - YOU'RE AWAY FOR SLATES [Cryptic translation : the house you're building is weather sealed and the only job left is to place the slates on the felt]

    Download the latest version and have some fun !!

    [I reserve the right to extend this app to allow the inclusion of a SQL Query to allow cross table querying - watch this space]

    January 21

    Dynamically Export SQL Data to Excel using VB9 and LINQ to XML (Literally)

    Beth Massi  a PM on the VB Team has been posting some great content on her blog. One in particular caught my eye - Quickly Import and Export Excel Data with LINQ to XML - as I was involved in a project where I needed to do just that.

    So , Beth's routine works great , but the lazy Irish Man in me took hold and I said to myself  - as we're in the

    AGE of DECLARATIVE PROGRAMMING

    Wouldn't it be grand if you could use this XElement ....     ... to produce this Excel Sheet

    clip_image001[5]

    by typing  ->  SQL2Excel CustomerLayout.xml

    clip_image001[7]

    ... Well - here's one solution.....  download and unpack the zip file , read the SetupReadme.txt  and you're on your way

    [This assumes you have  the Northwind database loaded on a local SqlExpress server]

    So , how does this program work ?  It works by carrying out the following Steps

        • Step 1 : Access the file detailing the required layout
        • Step 2 : Uses the new XElement type to store the xml fragment contained in that file
        • Step 3 : Gets the Data using the 'Select .. for XML' functionality  that SQL Server has had since SQL version 2000
        • Step 4 : Converts the XML returned in Step 3 to a format that Excel understands

    In Step 4 we use Linq to XML and Expression holes to create an XElement - like so

      image

    this produces the following

      image

    The only crib [Irishmen always complain - must be the weather] I have is that this must be saved to a file because the process.start expects to be passed a file - I wonder is there someway to pass the in memory object direct to excel .........

     

    So , what do you have to do to produce a different report ?

    • Create a new text file named say 'myLayout.xml' in your MyDocuments folder
    • Copy the contents of  'LayoutTemplate.xml'  into this file which should now contain
      image
    • Enter  appropriate values for your particular Database and Table ,  changing the value of DataSource should you wish to use a remote server
    • Enter a value for Name , Heading  and Width for each required field
    • Save the file and either
      1. at the the command prompt type 'SQL2Excel  myLayout.xml'  if you want to use the executable 'SQL2Excel.exe' or
      2. Set the Command Line Argument in the Debug tab of the Project properties to myLayout.xml

    My thanks to the VB team  for continuing to make programming a pure joy and in particular I'd like to  give a call out to Avner Aharomi who has helped to make VB Literals a reality. However , every now and then you come across a GEM of a book that really gets it where a new topic is concerned - that book in this case is LINQ in Action. It's available right now as an eBook for a measly $27.50 and compliments any good Tablet PC - you could almost say (and I will) that this is what the Tablet PC was made for.

    [Please read Module1.txt for an explanation of how this solution works and read Jim's Book for the complete story]

    September 04

    Open XML Training

      image Now I know I linked to a few sites wherein you could gleam various nuggets on the Dark art that is Open XML  - how ever, might I crave your indulgence and point you to the definitive source of all things Open XML 

    This is Webcasting at it's best - ideal Tablet PC material - sit back in the armchair , relax  and let Doug Mahugh and Chris Predeek take you on a gentle voyage of discovery.

    Of course , there's an ulterior motive at work here. If you guys do your homework on this I won't have to try and explain Open XML.

    In the midst of all this ODF v OOXML dogfight it's nice to come across Dennis Hamilton's blog posting.  A plea for reasonable debate which will most likely fall on deaf ears. Still , there's hope ... if the lads in Northern Ireland could bury the Hatchet ... I hear
    Martin McGuinness Sinn Fein and Jeffrey Donaldson DUP are over in IRAQ trying to talk some sense into the local lads there - Now who would have credited that happening ....
     


    Meet the two ladies who manned the Open XML stand at TechEd in Orlando this year .

    Stephanie Krieger a Microsoft Office MVP and the master of document production. Stephanie is the author of the Office 2007 documents bible: Advanced Microsoft Office Documents 2007 Edition Inside Out.  This is the book you need if you want to learn tons of cool tips and tricks for advanced document generation. Stephanie included Office Open XML and VBA code samples.

    Erika Ehrli is the main force behind the MSDN Office Developer Center and a virtual wikipedia of knowledge on all things Office. Check out Interactive Developer Map for Office 2007.This tool is absolutely terrific ... you install it once and it's self-updating. When you open the map, you can click on any development technology for a page of links with information on working in that specific technology ... it's very, very nifty, totally free, and an invaluable resource
    September 01

    VBA -> Open XML Part II (cont) - Displaying a Dynamic Table

    Meet Jay Schmelzer - he'll be delivering 2 sessions at TechEd Developers  in Barcelona 5-9 Nov 2007  and I'm not going to miss either one. Jay is one of those rare breeds - a speaker who can keep you totally captivated throughout a session , so much so  that the session is over in what appears to be a mere matter of minutes. Here you see him , in his natural habitat , in that great TechEd innovation - The TLC  ZONE - ready to answer any and every question that a VB nerd could lay on him.

    In the background on the left you have his able sidekick Chris Smith sharing the goodness that is VB's unique features when it comes to handling XML with LINQ

    I can personally vouch for the fact that when any of these Microsoft guys or gals give you their card and say 'contact me if you have any further questions' they deliver BIG TIME.

    Without their help (among others) I would not have been able to offer my take on producing dynamic report using Open XML  and VB9

    Wouldn't it be grand if you could use this XML snippet ....     ... to produce this Word Document ....

       image image
    ... Well - here's one solution.....  download and unpack the zip file , read the SetupReadme.txt  and you're on your way.
     

     Being a very lazy West of Ireland guy , I never like having to do the same thing over and over again - after all, that's what programming is all about - code once, use many times. The snippet above contains 3 types of Sections (document sections if you will) - one produces the Report Title , then there's a line break section and finally there's the the table section - if you need any more types you just add to the case statement in the code (Line 81 in Module1.vb) - again extend once, use many times. With a little thinking (preferable on a hilltop over looking a stretch of water with a gentle westerly breeze in your face - and your mind full of the great ideas disseminated by a podcast from Dot Net Rocks that you've just listened to on your MP3 player) you'd be saying to yourself - All I have to do is change the Title , the SQL Query and the Column Captions and Widths and indicate if I want subtotals  and I'd have a new report - but then you' ld say - Couldn't I just add a root element say <Printout> and then a 2nd element like the one above with the new details - save it off to a file and then call the file from my program [next installment] - then to produce further reports all I'd have to do is edit the xml file that is external to the program with Notepad.

    Don't you just love it when a plan comes together ...

    this is all made possible by the fact that the Office team produced their Open XML solution and the VB/C# teams collaborated on LINQ to XML - of course the VB guys just had to make it easier by extending the VB implementation with their XML literals and 'Expression holes'. A simple example should show this

      In VB

    image
    In C#
     image

    [One of the most important issues in programming - is to be able to return to your code after say 6 months - and understand instantly it's intent - I would suggest that when it comes to Open XML  VB is the winner  - I know - I'm totally biased - but 10 years of using this technique with VB6 and VBA has converted me to the easy life - I do most of my coding in XML - isn't declarative  programming great]

    This blog will mainly concern itself with the VB LINQ implementation and maybe a few words about Open XML but fear not an infinitely better source of Open XML knowledge is available in Wouter van Vugt's excellent free book  Open XML The Markup Explained.

    By this stage I'm hoping that you've downloaded the zip file and have the program opened showing the Module1.vb code and the line numbers turned on [Tools - Options - Text Editor - All Languages - General - Display - Line Numbers]

    This module has 3 parts to it [isn't that like something out of Julius Caesar's Gallic Wars - Gaul is divided into 3 parts - boy did I not GROK Latin]

    1. Sub Main - test harness - calls the other 2 functions and Displays (hopefully) the resultant word document [you do have Word 2007 or Word 2000/XP/2003 with OpenXml extensions raring to go - don't you?]
    2. CreateDocument function - black box that takes in the required filename and the Main xml document and produces the document - takes care of all the plumbing and uses the Microsoft SDK for Open XML - takes care of all the relationship issues etc - and produces the zip packaged docx file.
    3. GetDocumentXML  function - which I'll now attempt to elaborate on

    On line 46 we define an XElement variable [Printout] which contains the XML Snippet for our report - notice that there are no quotes around the XML and that in VS2008 the variable type is INFERRED from the data to the right of the equal sign. [This variable could equally be populated from an external file - Next Installment]

    Next on line 66 we set up our main XElement [docXML] which we'll attach directly to the root of our XDocument - like HTML Open XML uses a body element - the namespace used to interpret this is defined as w  [see imports statement line 6]

    On Line 69 we set up an XElement [Xel] as a temporary container to hold the XML elements we will generate for each section type

    Now we're ready to start - this LINQ to XML really replaces XSLT - see Bill Burrows - Linq to XML videos and XLinq Portal for more info

    With XLINQ we can easily traverse thru' the various sections of the XML snippet using the FOR EACH statement on line 72 - note how we address the various section elements - see traversing XML in XLinq overview

    Let's take each section in turn

    1. Type is Text - we place the element value in the w:t element using an expression hole with the variable section.value.ToString  [notice the familiarity this brings to old ASP programmers]  and we set up the style to use within the w:pPr element again using an expression hole with the variable section.@Style as this time it's an attribute within the section element.
    2. Type is LineBreak - we just use a blank paragraph entry w:p to place us on a new line
    3. Type is Table -  Line 85 - the main theme for this blog
      • 1st off we've set up a temporary XElement [GridData] to hold the dynamic table data - this will be generated using an SQL Query later [Next Installment] - notice the attributes run form C1 to C6 - this was used to conserve memory - but it also turned out to be very useful as you'll see anon.
      • next we determine the number of rows in our table - you've got to admit that the syntax is cool - full intellisense is available detailing all the options and that's even cooler
      • we assign a value to MinimumNoRows and if the number of Rows [3] is less than this value  [10] we set up a list of integers [4,5,6,7,8,9,10] so that we can iterate thru' the list later on to programmatically produce a blank row for each entry
      • of course to produce a blank row we need to produce a blank cell [<w:tc><w:p/></w:tc>] for each column - which we do in line 103
      • the table look [line 107] depends on whether we have a header row and/or a Total row and is assigned accordingly
      • If the attribute TotalRow on the table is set = "Y"
        • we iterate thru' each column and check whether the SubTotal attribute is set = "Y" .
          • if it is
            • we use the AGGREGATE function to sum up the values in the columns - summing an in memory object - awesome. Notice that the item.attribute needs a "Column Name" parameter which we supply by concatenating "C" with the indexed position of the column [sometimes you just strike lucky]
          •   otherwise
            • we add a blank cell [<w:tc><w:p/></w:tc>].
          • On completion we add a blank paragraph
        • otherwise
          • we set the total row to a blank paragraph
      • On Line 131 with the preliminaries out the way we start to put our table XElement together. Notice that the root of the table element is w:tbl
        • We set the style and look for the table using the w:tblPr element using expression holes to apply the style attribute [line 46] and the tableLook variable we calculated [Line 107]
        • we set up the Column Widths using the w:tblGrid element using an expression hole to apply the column width attribute within a LINQ FROM ... SELECT statement - itself within an expression hole.
        • similarly we set up the Column headers or captions using the column caption attribute.
        • then the piece de resistance - the grid data - a double  FROM ... SELECT  loop - notice the IIf function - if the attribute / column cell value is blank use a blank paragraph otherwise use the value within a w:t element which is inside a w:r element which is within a w:p element [refer back to the example at the start - how many lines of C# code would this take]
        • we set a row for each blank row by enclosing the Cells  list within a w:tr  element - if there are no entries in the BlankRows list we get none
        • lastly we apply the TotalRow element which is either a row containing totals plus a blank paragraph or a blank paragraph

    at the end of each iteration the Xel  is added as an element to docXML.

    After the last section is traversed the resultant docXML is used to create the documentxml  which is returned to the main function. The document is created and displayed.

    The End result - we've converted / transformed an XML Snippet into a WordprocessingML document without using a single line of incomprehensible XSLT.

     Fin.

    August 10

    Microsoft Announces Imagine Cup 2007 Winners

     

    Thailand team named software design champions

     

    IC WW FINALS DAY 6 030

    The following are the top three finalists

    Software Design

    • First place: Thailand — Team 3KC Returns/Project LiveBook!
    • Second place: Korea — Team En#605/Project Finger Code
    • Third place: Jamaica — Team ICAD/Project CADI

    But Ireland were in the last 6  -- Well done lads - some achievement

     

    IC WW FINALS DAY 6 042

    But wait .... what's this ....  2nd place for IRELAND

    in Web Development

    • First place: France — Team APB
    • Second place: Ireland — Team Red Dawn
      • Mohammed Al-Tahs, Marouf Azad
    • Third place: China — Team Frontfree Studio-Web

    Go Ireland GO

    Liam Cronin sends this dispatch

    Last report from Seoul, South Korea from the Imagine cup finals, where we have great news to report on both Ireland teams...

    Team Red Dawn from Dublin Institute of Technology, have finished second in the Web development competition. This was an amazing achievement to finish second in the world, from the 155 teams who entered the competition. Attached are some happy photos of Mohammed and Marouf accepting their Imagine cup trophies and cheque for $4,000 USD earlier today...

    Team InGest from NUI Maynooth have finished in the top 6 of the BT Innovation Accelerator, so they are now one step closer to turning their software solution, around sign language into a business reality.

    IC WW FINALS DAY 6 044

    VBA -> Open XML Part II - Displaying a Dynamic Table

    Manifest v1 [Partial Post (think Partial Class)- Explanation to Follow next week]

    Do you need to produce a table along the lines of the image to left using Open XML ? - then download the Code , unpack the zip file , read the SetupReadme.txt and you're well on your way
    August 09

    Ireland into the Semi-Finals of the IMAGINE CUP

    When Liam Cronin (Microsoft) took up the Challenge last October to get an Irish Entry ready for the Imagine Cup you would have got very long odds on even getting an Irish Team to compete let alone be in with a chance to win.

    But Liam with his tenacious Tipperary approach [We Galwegians always feared their hurlers] - took up the challenge - fired up the enthusiasm of Students all round the country - wherever there was an IT College , Liam would be there. - whittled the numbers down to 10 teams - organized a brilliant Irish Final along with his Colleague Deborah Hayes - nail biting finish - with  
    Maynooth College taking 1st place.

    But listen to this - Ireland are in the FINAL 6 - this from a country that never took part in this competition before

    The final outcome to be decided before 500 people ...

    The announcement for the teams will be between 2pm & 6:30pm Tokyo time tomorrow supposedly, so Liam said to expect news around 11am Irish time.

    Watch the nail biting count down to the final 12 on day 3 over at Channel 8

    August 06

    Moving from VBA to Open XML Part I

    image First of all I have to be straight and OUT myself as a dyed in the wool VB6 developer. Using VB6 , SQL 2000 and Office 2003 [VBA] as basic ingredients - I was able to produce a 15000 line program that interpreted pure XML files and reacted according to their contents. Word produces all the necessary printouts [no need to provide printer support etc - all done by word] - see example on the left , EXCEL produces PIVOT TABLE reports [one of the best kept secrets of the Microsoft toolkit] and of course OUTLOOK takes care of all email communications, T-SQL queries [placed in nodes in the XML files - handle the business rules and can be tested independently using query analyzer.

    Using this simple technique within a short period of time - we were able to service 3 vertical markets [old Irish proverb - don't put all your eggs into one basket - probably a reflection on our road network] - as the coding is all done declaratively - UI nodes at the top - business rules next - then printouts - nothing hidden in subroutines - you can quickly hone in on any problem area - no need for recompilation - support provided over the Internet using pcAnywhere - customers spread geographically across Europe - no need for large office or high Staff numbers.

    In other words I was like a PIG in S**T - happy out - the one fly in the ointment was the marshalling from VB6 to Office using VBA [bit slow] and the fact that it would be nice to take advantage of all the other Goodies in the Microsoft Toolkit that comes with the MSDN subscription.Dot Net 1 , 1.1 and 2 came along but they really didn't provide a good fit for our idiosyncratically programming technique. 

    But then along came OPEN XML ......
    IMG_0459 Doug Mahugh - the eminent and much traveled gentleman on the left introduced me [Tech-ED 2006 Barcelona] to a WHOLE NEW WORLD - the ability to produce office documents using just XML and on the server as well - independently of the Office programs.

    Hence , at long last ,the subject of this blog - how do I [start to] produce the printout below.

     This post will just concern itself with producing a word document with just the header 'Store Delivery Manifest'
    image
    • Open XML documents are made up of a number of XML files in a ZIP package. Check out Open XML Developer for detailed explanations
    • If your going to use WORD you might as well take full advantage of the object model - I.e. all that lovely styling and theming. So in tried and trusted VB fashion I created a Word document with a table and picked a nice appealing theme [Green is Good] - saved the document - tagged a .zip extension to the end of the name - and extracted the STYLE.XML and THEME1.XML  from the ZIP PACKAGE. I then picked a convenient area to store these 2 files - My Documents folder
    • Downloaded and installed the basic ingredients required
    • Fired up VS 2008 and created a new VB console app - added a reference to  Microsoft.Office.DocumentFormat.OpenXml   - then added the following imports statements
    • Within Module1.vb I created the following helper function

        Public Function CreateDocument(ByRef FileName As String, _
                                          ByVal DocumentXML As XDocument) As Boolean
               Dim Dir = My.Computer.FileSystem.SpecialDirectories.MyDocuments + "\"
               Dim StyleFile = Dir + "styles.xml"
               Dim ThemeFile = Dir + "Theme1.xml"
               FileName = Dir + FileName
               Try
                   ' Create the package
                   Dim wordDoc = WordprocessingDocument.Create(FileName, _
                                               WordprocessingDocumentType.Document)
                   Using (wordDoc)
                       Dim mainPart = wordDoc.AddMainDocumentPart
                       Dim stream = mainPart.GetStream
                       Dim utf8encoder1 = New UTF8Encoding()
                       Dim buf() = utf8encoder1.GetBytes(DocumentXML.ToString)
                       stream.Write(buf, 0, buf.Length)

                       Dim themepart = mainPart.AddNewPart(Of ThemePart)()
                       stream = New FileStream(ThemeFile, FileMode.Open)
                       themepart.FeedData(stream)

                       Dim stylepart = mainPart.AddNewPart(Of StyleDefinitionsPart)()
                       stream = New FileStream(StyleFile, FileMode.Open)
                       stylepart.FeedData(stream)
                   End Using
               Catch ex As Exception
                   Return 0
               End Try
               Return -1
           End Function

        [Note: This function is an extension of the code detailed in  How to: Create an Office Open XML Package by Using the Open XML Object Model and used How to: Replace a Part in an Office Open XML Package by Using the Open XML Object Model to determine how to add a ThemePart. It tool a little bit of trial and error to determine that a StylePart is accessed as a StyleDefinitionsPart. This copying ,pasting and extending process has being named as Cognitive Cut and Paste by Jesse Liberty - Senior Program Manager - Silverlight . Check out Programming .NET 3.5 by Alex Horovitz, Jesse Liberty]

         

    • Within Sub Main I then created the following test harness

        Sub Main()
                Dim DocumentXML = _
                <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
                <w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
                    <w:body>
                        <w:p>
                            <w:pPr>
                                <w:pStyle w:val="Title"/>
                            </w:pPr>
                            <w:r>
                                <w:t>Stores Delivery Manifest</w:t>
                            </w:r>
                        </w:p>
                    </w:body>
                </w:document>

                Dim FileName = "Manifest.docx"
                If CreateDocument(FileName, DocumentXML) Then
                    Console.WriteLine("File Created")
                    Process.Start(FileName)
                Else
                    Console.WriteLine("Somethings wrong ")
                End If
                Console.ReadLine()
            End Sub

        [Note: extensive use of the new feature in VB9 - TYPE INFERENCE  and full intellisense on the xml literal]

    • Running this program produces

         

        as per DocumentXML - note by using a Style file I achieved a clean look in my Documentxml  variable

         

    • Try it out !!!
    • So a start has been made - now if those OPEN XML lads weren't so busy with all this ISO shenanigans - I could maybe  get some answers  to help me continue ....  

         

    MTUG Leader Summit

    Community Meeting 012 The Microsoft Technology User Group is an association of technology users groups from around Ireland and Northern Ireland that run events related to Microsoft technologies.

    The leaders of this ever expanding group got together last Friday (3rd August) to plan and co-ordinate their events for the coming season (Sept 2007 - June 2008). With the upcoming launches of  Visual Studio 2008 (Orcas) , SQL Server 2008 (Katmai) and last but not least Windows Server 2008 (Longhorn) - it's a great time to be a technologist (IT Pro / Developer) - Oh and by the way that fantastic event that I missed this year - The IMTC Conference is penciled in for May 2008 - and it promises to be even bigger and better

    Community Meeting 029 Clare Dillon ( Microsoft Developer and Platform Group - Summit Organizer) ,Niall Flanagan MVP SQL Server and Akim Boukhelif (head of the MVP Program for UK and Ireland).

    Akim gave us a fascinating talk on the MVP program - but more importantly he's going to put us in touch with the CODE CAMP organizers in the UK - a great way to get immersed in new technology. Now that the IT Colleges are on board ( Imagine Cup ) - we intend to run our own camps at a venue near you

    Niall spoke on what getting to the MVP summit this year meant to him - in particular the fact that he got to meet the people developing the Microsoft product stack.

    For us lesser mortals TechEd Europe 2007 5-9 Nov 2007 gets us access to some of the same people. Clare pointed me in this direction a few years ago and it really is true. I find it so useful I go to both Tech-Ed Europe and Tech-Ed USA each year. It's like having your own research department. For small software companies it's a no-brainer !!!
     
    June 21

    Mike Hernandez comes to Galway

    IMG_0711 Mike Hernandez was in Galway on Monday Night to address GAMTUG User Group on Visual Studio Tools for Office

    Talk was very well received – positive feedback from all participants – Hadn’t realized that Mike was the guy who wrote the definitive book on Database design  Database Design for Mere Mortals – his grasp of this subject just kept bubbling to the surface – he could have gone on for another hour and no one would have complained – demos were very good
    While in Galway he met with the staff of  GMIT's Computing Department who are in the process of incorporating .Net technology into their courses.

    June 19

    Towards a better GOOGLE experience

    IMG_0402 What do you reckon the 2 eminent gentlemen on the left (Richard Campbell and Carl Franklin) have to do with the title of this piece ?

    Well they provide one of the most essential services in this industry - enabling the info channel - on their .Net Rocks show.  2 Hours a week that could save you 20. This is what the RSS button was created for !!

    In a recent show on Discoverability they got Dan Appleman to explain how he has enhanced Google Search to find information and answers that already exist from authoritative sources.

    This solution Rocks !!!
    June 15

    Rob Burke is leaving ..

    [Formerly attached to the Microsoft Ireland Developer and Platform Group]

    The theme of this Year's Tech-ED in Orlando was Make your Mark.

    Rob- you've certainly done that and more  in the few short years that I and my colleagues in MTUG have known you. Your ancestors must have come from Ireland as you have that wonderful gift of the gab and the ability to get your message across in the most effective manner. Your talks were always enjoyable and the content right up to date. You have the amazing ability to make an hour long talk seem to last only 10 minutes.

    I will always remember the way you made me overcome my natural shyness and  reluctance to ask questions at that SQL Panel  talk at Tech-ED 2005 in Amsterdam - your action saved my company an estimated 40 hrs of work and that was only the start ...  Also that magic bicycle tour of BARCELONA at Tech-ED Europe 2006

    As we say in the west 'Slainte is Saol'   long life and health to both yourself and Siofra 

    I'm sorry I missed your last outing for MSDN Ireland at the IMTC Conference but I will certainly treasure and place in my hall of fame Rob's Lap of Honour

    Meet the Trainers

    One of the Best features of Tech-ED is the hands on labs where you can try out all the latest versions of Software under the expert guidance of dedicated trainers such as Shawn Cicoria [extreme left] and his Colleagues.

    These guys volunteer their time to help us lesser mortals scale the Information mountain  - so when next you go to Tech-ED be sure to chat to them.

    Even if you didn't get to TECH-ED you can still access the manuals for these labs and all the breakout sessions for $195 from this site
    June 14

    Talk about luck ...

    There I was , minding my own business at Party with Palermo 2007 when low and behold my name was pulled out of the Hat and I won a copy of Infragistics NetAdvantage for .Net 2007 Vol 1 - a $995  value prize.

    The two ladies on the left presented me with the prize at the Sponsor's reception at Tech-ED .

    I've been playing with it since I got back on Monday and ventured to try out  NetAdvantage for WPF  - Fantastic Code samples !!
    Man ! I've just got to buy this .....

        and here's the guy to help you when you get stuck !!

    The big problem that developers (like me) are faced with is we're Aesthetically challenged and afraid to admit it. What Infragistics bring to the table with their WPF suite is plenty of examples that help to point us in the right direction.

    Download the trial version and check out the cool carousel controls and the Datagrid especially the cell input text box. Is this cool or what !!
      Walking back I came across the New Horizon Stand

    These ladies wanted to say a quick hello to Liam back in Dublin and wish MTUG well with their 2nd Annual Conference which Horizon helped to sponsor for the 2nd year running
    June 07

    Hello Maarten - Windows Mobile Calling

    Hi Mick,

    As promised, here are a few words around Windows Mobile and our meeting this morning. You can find my blog on www.dotnetfordevices.com. Looking forward to staying in touch with you.

      Cheers, Maarten

     

    IMG_1848 I love to be part of Tech Ed. It is a great conference to speak about Windows Mobile development and to learn about lots of other technologies. When not attending sessions I staff the Windows Mobile .NET Compact Framework booth, where I met Mick Lohan this morning. Mick had a real challenge for me. Develop a typical “Hello, world” application, but make sure you are not faking. Instead of writing “Hello, world”, we decided on something else that, as far as I know, has never done before on a Windows Mobile device. I wrote a “Hello, MTUG” application. It only took 5 minutes. In that time we also debated using C#, VB.NET or C++, all three languages that can be used to develop Windows Mobile applications from within the same development environment, of course: Visual Studio. Here is at least a screen shot of the application, since Mick moved on at Tech Ed I have even extended the application a little bit.
       

     

    This is already looking like it could be a killer application. Of course it is still in beta, and as you can see I still have some display issues with the browser control, you can’t really read the whole webpage, but I am definitely working on that. Just visit www.dotnetfordevices.com to find out when the great little application will be available for sale. I am not committing to a time frame yet, but the product will most likely be renamed from “Hello World beta1” to “Hello World 2008”. If you want to go through the trouble of coding it yourself, here is all the source code that matters:

    private void button1_Click(object sender , 

                                                   EventArgs e)

    {

        label1.Text= "Hello, MTUG";

       webBrowser1.Navigate(new Uri 

                    ("http://www.mtug.ie));

    }

                                               hellomtug

     

    Maarten Struys

     

     

     

    www.dotnetfordevices.com

    June 06

    I hope to know less by the end of the week

    There's an old saying [we Irish have plenty of old sayings - it's the rain you see - remember the scene in Paint your Wagon - the lads sitting around in their tents in the pouring rain  ]

    "The more you know - the more you know you don't know "

      If you remember your maths 101  - on the curve the more you don't know will  increase exponentially (you thought computer terms were bad ... ) to a point where  the amount you do know will be insignificant and can therefore be disregarded from the equation - Almost like the fly stopping the train ...

    This conference is going a long way in helping me achieve this aim - the TLC area with the Interactive Theaters particularly - The Demo Stations one on one with the guys responsible - as you would say AWESOME

    But I'd like to give a shout out to Culminis and INETA - for the great series of birds of a feather sessions last night - I got to two sessions

    1. SQL Server 2005 - the cost of Concurrency (Kalen Delaney) - great insight into how the hint NO LOCK  really does what it says on the box - I promise to use it sparingly from now on.
    2. What's Up in Scripting for Administrators - I didn't think Scripting Guy  existed - fantastic lively discussion on that powerful programmer's tool - Notepad

    But I need your input to help me achieve my goal - the more we interact with each other- the greater the transfer of knowledge which leads me to the real reason I'm writing this ....

      Support Your Local  Community Group

    Come  along to the INETA and Culminis stands and let's start the process

     BTW: the counter on my pedometer now reads 33699 and it's only wendnesday morning

    June 04

    D-DAY the Keynote

    The clock has started ....   let learning begin ... if you're not here check out the simulcasts
     
    June 03

    The Long Journey Out

    Murphy's Law kicks in ....
     
    There we were , you see , doing grand - Checked into Shannon at 6:00 am - Plane left at 9:20 am - no problem with customs  - Into Newark at 11:00 am - early - plenty ot time - Orlando flight not until 2:05 -boarding at 1:30 at Gate 125
    OR SO OUR SHANNON TICKETS SAID .....
     
    Little did we know that Flights continually change gates - there we were at C125 at 1:00pm - there was a big crowd waiting - cabin crew as well- so we naturally assumed that they were all on the same flight - show's how wrong you can be. At 2:10 I asked the Lady at the check-in desk at the gate - to be told the flight had gone.
     
    As Mark Twain said "Some people think there's not much difference between Man and Jackasses - I don't think that's fair to the jackass"
     
    To cut a long story short the staff at Continental came to our rescue - mind you there was some reference made to a bar and Irishmen ..
     
    Thanks to Steve we got onto the 3:00 pm flight which then changed to 4:30 - then changed from gate 90 to ...  - Arnold allocated us fantastic seats - legroom to spare - the flight eventually left at 6:00 pm - who was sitting beside us but Shawn Cicoria - he'll be manning the Hands on Labs Stations at POD 1 - got some excellent tutoring on WF ...
     
    but the best part of all was Martin Woodward landed 5 minutes after us - and so off we all went to Orlando - funny how things always come right at the end - it was great talking to Shawn - if we had caught the 2:00 we'd never have met .... 
     
     
     off to register and pick up up my Tech-ED Bag  then off to DAYTONA