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 .....
then change the CmdString generation to use the sqlQuery attribute value - if a value is entered
not forgetting to change the Column2Display List<Of String> ...
which we use to generate the table rows ....
The net result is if we use the following xml request .... contained in say <OrderDetails.xml>
[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 ....
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]
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.
then the additions of 4 lines of code sets up the default values
and extended the cmdString to query the database
and I get
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]
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
by typing -> SQL2Excel CustomerLayout.xml
... Well - here's one solution..... download and unpack the zip file , read the SetupReadme.txt and you're on your way
[This assumes you havethe 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
this produces the following
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
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
at the the command prompt type 'SQL2Excel myLayout.xml' if you want to use the executable 'SQL2Excel.exe' or
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]
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 thingsOpen 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
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 ....
... 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
In C#
[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]
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?]
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.
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
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
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.
Type is LineBreak - we just use a blank paragraph entry w:p to place us on a new line
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.
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
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.
[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
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.
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.
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'
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
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 ....
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
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 !!!
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.
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 !!
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
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
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 !!
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
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
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:
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
SQLServer2005 - 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.
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