Google isn’t as good as I thought……

December 22, 2005 / Comments Off on Google isn’t as good as I thought……

Well you know if you need anything from the web, you use Google, at least until now…….  ( GoogGle is a Kind of Search GOD…. If you don’t know the Hyperlink, ask GOD ) I was looking for a product named Checkpoint. This product is manufactured by OABSOFT. It is a nice TomTom Navigator add on that warns you when you are near a Speed camera.So I started my google session and typed the magic words…..

No link whatsoever to the real thing. ( GOD didn’t know the answer this time ) If you follow the links you will not end up at the site where you can download the stuff. But I knew it really existed so I tried MSN search for a change….

BINGO, first entry is what i was looking for……. And even more interesting, MSN search has two different links, while google hast the same link twice…. and also I wonder why GOOGLE didn’t find it cause what I was looking for was almost the link name. Just adding some dots would have made the link almost complete….

Usually when you don’t find what you need, you will retype the search prhase… And this is exactly what google wants, tuning all GooGle users so they will type stuff that GooGle can find. I Guess it should be the other way around. I type styff and GooGle should find it. Until now I thougt some things just couldn’t be found. But from now on I will try MSN search in that case and is MSN consistently outperforms GooGle I think I will switch….

[Added]

Later I noticed a nice lookup option +Site builder and the option "links to" : so I typed http://bloggingabout.net/blogs/wellink/ and Bingo MSN found two. When I entered this same search in GooGle … Nothing…. Even searching on http://bloggingabout.net/blogs/wellink/ gives me my own blog in MSN ( I don’t look in "links to") and nothing in GooGle

 

Supereasy way of putting stuff into the GAC

December 22, 2005 / Comments Off on Supereasy way of putting stuff into the GAC

 

As a bizTalk consultant you have to use the GAC a lot, I used to start a VS2003 commandprompt and browse to the folder containg the file and then use gacutil, or just drag the file into the WindowsAssembly folder. There is an easier way of doing things. How about Right click on a file and have the option Add to GAC……

Have a read here of how to do this. (just adding some registry entries)

Sorting with the BizTalk Mapper part II (Multi-Level Sort XSLT)

December 8, 2005 / Comments Off on Sorting with the BizTalk Mapper part II (Multi-Level Sort XSLT)

As I explained in a previous post (see here) it is possible to sort nodes with the BizTalk mapper. However the example in that post is only one level deep and we have to sort that level. What if there are multiple levels and we need to sort every level. Wel the trick is you have to use a For-Each for every repeating node. Besides that you will have to create the nodes yourself in the scripting functoid. Below is a sample of a script I used to sort multiple levels in the BizTalk mapper.

<xsl:for-each select="ns0:Level3/ns0:Level4">
   <Level4 xmlns="
http://www.BizTalkSamples/multilevelsort">
   <xsl:for-each select="ns0:Level5">
      <xsl:sort select="ns0:ID" data-type="text" order="ascending"/>
      <Level5>
      <xsl:copy-of select="ns0:ID"/>
      <xsl:copy-of select="ns0:Node1"/>
      <xsl:copy-of select="ns0:Node2"/>
      <xsl:copy-of select="ns0:Node3"/>
      <xsl:copy-of select="ns0:Node4"/>
      <xsl:copy-of select="ns0:etc."/>
      <xsl:copy-of select="ns0:etc."/>
      <xsl:for-each select="ns0:Level6">
        <xsl:sort select="ns0:ID" data-type="text" order="ascending"/>
        <Level6>
        <xsl:copy-of select="ns0:ID"/>
        <xsl:copy-of select="ns0:Node1"/>
        <xsl:copy-of select="ns0:Node2"/>
        <xsl:copy-of select="ns0:Node3"/>
        <xsl:copy-of select="ns0:Node4"/>
        <xsl:copy-of select="ns0:etc."/>
        <xsl:copy-of select="ns0:etc."/>
        </Level6>
     </xsl:for-each>
     </Level5>
     </xsl:for-each>
   </Level4>
</xsl:for-each>

In the previous post I could do with a copy of Select = "." to select the current node and all its childeren. With a multilevel sort however, this will not work, cause selecting "."  will select the (unsorted) childeren. I am quite new to XSLT and I couldn’t find a good example of a XSLT multi-level sort on the internet. Hope this sample will help somebody…

 

Things you should know about UpdateGrams and the SQL Adapter !!

December 1, 2005 / Comments Off on Things you should know about UpdateGrams and the SQL Adapter !!

For lotsa people this won’t be too interesting but if you are a BizTalker and have regular interaction with a SQL Server keep on reading.

First I wish to thank Richard Seroter who had an excellent post about the SQL adapter.(see here). (Don’t know why i havent seen his blog before this guy is posting interesting stuff). Via Richards Blog you automatically also end up at Stephen Kaufman’s Blog, cause he has an excellent article about the at-identity.

Whenever I used the SQL adapter I hated it that the SQL adapter would generate an Orchestration and a Schema. Cause whenever I used the SQL Adapter Schema Wizard I  don’t want the port in a NEW orchestration but in my CURRENT orchestration. This is where Richards Excellent article comes in (see here) . Just define a Project called ‘SQL Something Base’, and define all your SQL generated schemas in that project make the ports of the orchestrations public and presto. Use it wherever you like. I really like the idea. Also whenever a table should change you dont have to go over the process of copying the Multipart Message and Ports.

The Second part of his post talks about the possibillity to make a Update / Insert / Delete for a table with an UpdateGram. But when i tried this it wouldn’t work as expected. So i messed around a littlebit and i think i have found the answer to a good Working Update / Insert / Delete. Lots of it is copied from Richards original idea but still here we go. If you don’t know updategrams read this first.

I have a table in SQL, and the table looks like this :

CREATE TABLE [dbo].[Customers] (
   [CustomerID] [int] IDENTITY (1, 1) NOT NULL ,
   
 [CompanyName] [nvarchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    [ContactName] [nvarchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [ContactTitle] [nvarchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [Address] [nvarchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [City] [nvarchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [Region] [nvarchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [PostalCode] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [Country] [nvarchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [Phone] [nvarchar] (24) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [Fax] [nvarchar] (24) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]

So when I run the SQL Adapter schema Wizard i get a UpdateGram looking like this. ( well not exactly, note the field updg:id)

So what about the updg:id. Well have a read of this article about the use of id in an updategram. Then you can use the trick as described by Stephen Kaufman to create the id Attribute. In short the updg:id is used to tell SQL wich before block belongs to wich after blok. And this is where Richard Seroters article was wrong. It used the key of the record for the ID. But that makes it impossible to update the same record twice in the same run. So I followed all of his steps but my map looks a littlebit different. have a look at it.

I use the iteration to generate a unique key for me. So now I can update the same record in one document. The second page looks like this :

notice the ID field is not maopped because it is a identity.

I know I had to steal and borrow a lot, and i didn’t invented it myself. I wanted to tell you about my findings and hope you like it.

 

 

  • Recent Posts
  • Recent Comments
  • Archives
  • Categories
  • Meta