Es ist wieder mal an der Zeit, Neues zu berichten. Am 1. Juli war Canada Day (der Nationalfeiertag hier) was wir auch gleich für einen verlängerten Wochenendausflug nutzten. Wir starteten also Freitag Abend Richtung Calgary und kamen auch schon nach (für kanadische Verhältnisse) nur etwas mehr als 3 Stunden dort an. Und jetzt die schlechte Nachricht für alle die in Edmonton wohnen: ja, es ist wahr, Calgary ist die schönere Stadt. Das liegt wohl vor allem daran, dass es dort eine “richtige” Downtown mit vielen Hochhäusern, einer Fussgängerzone und netten Restaurants mit Garten gibt. Und es gibt hier sogar Hügel :-) Den grössten Reiz übt aber wahrscheinlich die Nähe zu den Rockies aus.<!–more–>

Dorthin waren wir auch am nächsten Tag unterwegs und nach einem kleinen Zwischenstopp in Canmore kamen wir dann in Banff an. Was für ein Unterschied zu Jasper. Es ist so als wolle man Sankt Moritz mit einem kleinen ruhigen Bergdörfchen vergleichen. Banff ist sehr schön, vor allem das riesige Schlosshotel ist beeindruckend. Aber im grossen und ganzen ziehe ich doch das kleine Bergdorf vor.

Aber wir waren noch auf einem sogenannten Trail Riding Ausflug, ein Ausritt zu Pferde durch die Wälder rund um Banff. Und es war sehr beeidruckend. Die Kinder können gar nicht mehr von etwas anderen schwärmen. Etwas, dass wir unbeding wiederholen müssen!

Danach fuhren wir über den Icefield Parkway zurück nach Edmonton um auch rechtzeitig zum Feuerwerk wieder in der Stadt zu sein. 

Leider mussten wir an diesem Tag gute Freunde von uns verabschieden, da die ganze Familie wieder zurück nach Deutschland geflogen ist. Der Abschied ging uns sehr nahe, da wir in den letzten Monaten viel miteinander unternommen haben und uns die Familie sehr ans Herzen gewachsen ist. Vor allem unseren Kindern fehlen die neuen Freunde. Ich hoffe ihr seid gut angekommen und grüsst Lindau von uns!

Abends gingen wir dann mit den Kindern nach Downtown wo dann um 11 Uhr die wirklich beeindruckende Feuerwerks-Show losging. Ja liebeSchweizer, da könnt ihr euch noch ein Stückchen abschneiden. Auch war die Maple-Leaf Dichte um einiges höher als die Schweizerkreuz-Dichte am 1. August.

Am gleichen Abend kam aber auch schon ein “Neuer” aus Deutschland hier in Edmonton an. Ein junger Kerl aus Bremen, der mit seinem Jahres-Visa hier in Edmonton mal sein Glück versuchen will. Diese Einstellung bewundere ich und ich hoffe ich kann ihm helfen, seinen Traum hier zu verwirklichen. Matthias ist ein sehr netter Kerl und ich glaube er hat hier noch eine richtig gute Zukunft. Lest mal sein blog unter http://findorff.org/blog/, da könnt ihr sehen dass es wirklich nicht so schwierig ist hier Fuss zu fassen. Etwas Mut natürlich vorausgesetzt.

Die Bilder unseres Ausflugs werde ich auf Picasa veröffentlichen und Euch dann die Links hier im Blog posten. Gebt mir noch kurz Zeit…

Damit schliesse ich den kurzen Zwischenbericht für diese Woche ab. Ich plane wieder ein bisschen mehr technische Blogs zu schreiben, dann aber wieder auf Englisch. Es wird da vor allem um meine Erfahrungen mit asp.net und .net 3.5 gehen. Trotzdem versuche ich Euch über Neugkeiten aus Edmonton auf dem Laufenden zu halten.

…ja, ich weiss ich sollte oefters was in den Blog schreiben! Aber um ehrlich zu sein: soviel Neues passiert im Moment nicht. Das ganz normale Leben haelt auch bei Neueinwandern irgendwann Einzug und alles geht in einem fast ganz normalen Trott weiter. Nicht dass es uns schon langweilig wird…

Ganz im Gegenteil: im Moment benutzen wir noch jedes freie Wochenende dazu, das Land besser kennen zu lernen. Wir waren in Jasper in den Rocky Mountains, ca. 4 Stunden von hier und konnten dort etwas Heimweh abstreifen. Ein sehr schoenes, idyllisch gelegenes Staedtchen mitten im Nationalpark. Waeren nicht die ganzen Schilder auf englisch koennte man meinen irgendwo in den Alpen gelandet zu sein. Dieser Ort wird sicher zu einem dauerhaften Ausflugsziel fuer uns. Sogar die Kinder waren begeistert, obwohl sie wandern mussten :-).  [more]

Wir haben auch die ganzen Parks hier in Edmonton durchstreift und davon gibt es hier endlos viele. Im Sommer ist es eine richtig lebenswerte Stadt. Allerdings warnt mich hier jeder dass das im Winter ganz anders wird. Mal sehen…

Die Kinder machen grossartige Fortschritte mit ihrem Englisch aber es geht auf die Sommerferien zu und ich hoffe, dass sie in den 8 Wochen nicht alles wieder vergessen.

Manchmal werde ich auch gefragt ob es denn gar nichts negatives ueber Kanada zu berichten gibt. Und natuerlich gibt es solche Sachen aber die uebersieht man meistens in der Euphorie endlich angekommen zu sein und es macht auch nicht so viel Spass ueber die schlechten Sachen zu berichten. Aber um der Sache gerecht zu werden, hier ein paar Dinge:

Gebaut wird schlecht. Wenn man die Bauqualitaet mit der unseren vergleicht, stehen einem die Haare zu Berge. Nach ein paar Wochen im neuen Haus sind uns so einige Sachen aufgefallen, die es so zu Hause nicht geben wuerde. Tueren und Fenster haben so gut wie keinen Anschlag oder Falz und es zieht wie Hechtsuppe. Mal sehen wie sich das im Winter auswirkt. Gebaut wird generell mit Spanplatten was das Ganze extrem hellhoerig macht. Und da es hier in dem Sinn keine Facharbeiter gibt (ausser importierte), laesst die Ausfuerung z.T. sehr zu wuenschen uebrig.

 

Die entspannte Haltung der Kanadier die man zum einen Teil bewundert kann einen Mitteleuropaeer aber auch zur Weissglut bringen. Termine werden hier relativ relaxed gesehen und wenn's nicht heute ist, dann ist es eben naechste Woche…

 

mehr negative Punkte fallen mir so auf die Schnelle nicht ein aber ich verspreche, dass ich mir naechstes Mal mehr Muehe mit "Canada Bashing" geben werde

Der naechste Bericht folgt dann nach dem grossen Feiertag (Canada Day) am 1. Juli. Dann werde ich ein bisschen ueber Calgary berichten

Wir sind zu Hause

29 Apr
2008

Wir haben jetzt ziemlich genau den ersten Monat hinter uns und kommen so langsam aber sicher zur Ruhe. In den letzten Wochen haben wir alles erledigt, was anfällt, wenn man nach Übersee zieht. Von Autokauf über Wohnungssuche, Behördengänge usw… [more]

Ja, es war ein ziemlicher Stress bis wir alles zusammen hatten und wir hatten noch nicht gerade viel Zeit uns die Umgebung anzusehen. Was aber gar nicht so ins Gewicht fiel, da wir letzte Woche einen kleinen Wintereinbruch mit 20 cm Schnee hatten - aber jeder hier versichert mir, dass es jetzt doch Frühling werden soll ;-)
Aber nun haben wir unser Auto (einen Dodge Journey, netter kleiner Familienvan), haben unser amerikanisches Häuschen gefunden (leider ohne Porch und rundherum wird noch gebaut), die Möbel ausgesucht und wir werden dort am 1. Mai einziehen und dann langsam aber sicher wird das normale Leben wieder bei uns einkehren.

All das war mit einer Menge Rennerei und Papierkrieg verbunden und um jedem, der auch mal hier her ziehen will, einige Leerläufe und Fehler zu ersparen, wollte ich hier kurz mal auflisten was denn so alles im Einzelnen zu tun ist:

  

Ankunft in Kanada

  1. Das wichtigste (nach dem Visum und der Arbeitserlaubnis) ist die SIN (Social Insurance Number), die Sozialversicherungsnummer. Ohne die können keine Löhne ausgezahlt werden und man kann auch nicht zum Arzt. Hier haben wir den Fehler gemacht, dass ganze per Post zu erledigen. Bitte macht dass nicht! Geht nach der Ankung mit all Euren Papieren zur kanadischen Regierungsvertretung (der Canada Place hier in Edmonton) und dort zur Abteilung “Services Canada”. Dort kann das Ganze innerhalb kurzer Zeit abgewickelt werden und ihr müsst nicht wie wir ewig auf diese blöde Nummer warten. Denn ohne die seid ihr hier aufgeschmissen
  2. Nachdem ihr die SIN habt, geht zur Health Care (in jeder Provinz etwas anders) und beantragt die Krankenversicherung für die ganze Familie.
  3. Am besten gleich auch noch ein Bankkonto mit Bank- und Kreditkarte eröffnen. Hier wird alles mit Karte gemacht, sogar Kleinsteinkäufe unter fünf Dollar werden mit der Karte bezahlt. Und bestellt euch gleich Schecks mit - auf Rechnung bekommt man hier als frischer Immigrant gar nichts, jeder will die Kreditkarte oder einen Scheck (für Miete usw…). Und beim Internetbanking sind sie ganz weit hinten…
  4. Gewöhnt euch daran, für alles und jeden irgendwelche security deposits zu hinterlegen, eine Art Sicherheit damit mGean auch ja nicht ohne zu bezahlen wieder abhaut

  

Autokauf

  1. So ziemlich das Erste was man hier braucht ist ein Auto. Da der ganze Autokauf in der Regel nicht so schnell geht sollte man sich die ersten 3 bis 4 Wochen ein Auto mieten.
  2. Von zu Hause sollte man unbedingt folgende Infos mitnehmen
    • eine amtlich beglaubigte Übersetzung des Führerscheins
    • eine Versicherungsbestätigung eurer Autoversicherung, damit man nachweisen kann, dass man in Europa auch unfallfrei mit dem Auto gefahren ist (auf Englisch)
    • eine Verkehrsregisterauszug des Verkehrsamt um nachzuweisen, dass man keine Unfälle oder Strafen hatte (auf Englisch)
  3. mit diesen Infos kann man eine relativ günstige Autoversicherung finden (unter 1500 $ / Jahr), ohne die Infos wird man als Führerscheinneuling eingestuft, was die Vollkasko für einen Neuwagen auf 2500 bis 3400 $ / Jahr bringen kann. Die Vorarbeit lohnt sich also!
  4. Danach muss man sich einen kanadischen Führerschein ausstellen lassen. Kopiert bitte euren originalen Führerschein, da dieser eingezogen wird und nicht mehr zurückgegeben wird. Ausserdem brauht ihr eine amtlich beglaubigte Übersetzung des Führerscheins. Ohne die läuft gar nichts… Als Fahrzeuglenker aus Mitteleuropa bekommt man die Drivers License anstandslos, dauerte bei mir gerade mal 20 Minuten.
  5. Danach muss man sich ein entsprechendes Auto aussuchen und, wie überall auf der Welt, sich vor Autoverkäufer in Acht nehmen und feilschen, feilschen, feilschen… Die Tageszeitungen sind zwar randvoll mit Neuwagen und Gebrauchtwagen, dort sind aber immer nur die Einstiegsmodelle drin, Geht man dann zum Autohändler unterscheiden sich die effektiven Preise der Autos (die auch sofort verfügbar sind) deutlich! Meist so gegen 30%. Neuwagen sind verglichen mit Europa relativ günstig, Gebrauchtwagen allerdings dann wieder relativ teuer. Wir haben uns für ein Leasing entschieden - wenn man das Auto bar kaufen kann spart man sich natürlich eine Menge Geld.
  6. Nachdem man dann den Vertrag unterschieben hat, die Versicherung abgeschlossen hat und einen kanadischen Führerschein hat, muss man sich zuerst eine Nummerntafel holen. Das geht dann aber relativ unkompliziert innerhalb von 10 Minuten.
  7. Erst dann kann man sich in seinen ersten kanadischen Wagen setzen und losdüsen - hier eine kleine Info: zumindest hier in Edmonton gibt es eine Menge mieserabler Autofahrer…

  

Unterkunft

  1. Bei der Suche nach einer neuen Wohnung oder Haus sollte man sich entsprechend Zeit lassen um die richtige Umgebung und die richtigen Schulen zu finden. Wir haben dafür 4 Wochen gebraucht. Da ein Hotelzimmer über so einen langen Zeitraum zu teuer und zu klein wäre, haben wir uns dazu entschlossen den ersten Monat in einer temporären, voll möblierten Wohnung unterzukommen.
  2. Hier in Kanada ist Kaufen einfacher als Mieten was die Suche nach einem Mietobjekt dementsprechend erschwert. Wer natürlich das entsprechende Kleingeld hat kann sich direkt an einen Makler wenden. Ein durschnittliches Haus mit 3 Schlafzimmern kostet hier in Edmonton ca. 350′000 $, die entsprechende Miete dafür ca. 1′700. Miete und Kauf sind etwas teurer als ich anfangs gedacht oder gehofft habe aber immer noch die billigsten wenn man es mit anderen Städten wie Vancouver oder Toronto vergleicht. Dort zahlt man für das Gleiche 50% mehr…
  3. Mit den Möbeln ist es hier so eine Sache… Sie sind extrem hässlich (zumindest was es den europäischen Geschmack angeht)! Der durschnittliche Kanadier findet es einfach geil, wenn die Inneneinrichtung im barocken Stil des 17. Jh gehalten ist :-( Und die Verarbeitung lässt stark zu wünschen übrig. Unsere Sache war’s nicht und da wir uns entschieden hatten, nicht alles nach Kanada zu verschiffen, mussten wir uns wieder auf IKEA zurückbesinnen. Am Ende ist es eine Frage des Geldes, wieviel man für die Übersiedlung ausgeben will aber wer zu Hause gute und schöne Möbel hat, sollte sie vielleicht mitbringen. Einen kleinen Vorgeschmack was kanadische Möbel betrifft findet ihr unter http://www.thebrick.com.
  4. Strom, Gas und Abwasser sind meist Sache des Mieters (zumindest wenn man ein Haus mietet) und auch die wollen alle zuerst mal ein security deposit…
  5. Für Telefon, Internet und Kabel gibt es mehrere Anbieter, will man allerdings alles aus einer Hand kann man hier in Edmonton nur zwischen Telus und Shaw wählen. Beide bieten relativ günstige Telefonanschlüsse an und für ca. 50 $ / Monat bekommt man 1000 Freiminuten nach Europa.

  

Verkehr

  1. Hauptverkehrsmittel hier in Nordamerika ist das Auto.
  2. Da meine Frau das Auto hat und ich mit dem Bus zur Arbeit fahre, weiss ich auch warum! Öffentlicher Verkehr ist zumindest hier eine Katastrophe aber mit etwas Gedult kommt man irgendwann auch an…

 

So, dass war diesmal ziemlich ausführlich, sollte aber doch noch jemand Fragen haben, meldet Euch einfach. wir helfen gerne weiter wo wir können.

An alle unsere Freunde und Bekannte: ab 1. Mai könnt ihr uns an folgende Adresse schreiben:

6108 Stinson Way

Edmonton, AB, T6R 0K2

Telefon kommt noch… Und Bilder vom Haus und vom Auto stelle ich auch nächstes Mal online.

Schöne Grüsse aus Edmonton

Die Familie Dobler

Nach der ersten ereignisreichen Woche hier in Edmonton hatte ich nun am Montag, dem 7. April meinen ersten Arbeitstag! Obwohl AD Williams noch mit dem Verlust von Reagan Williams zu kämpfen hat wurde ich sehr herzlich empfangen. Ganz kanadisch wurde ich zur ersten Tasse Kaffee eingeladen, bevor ich auch nur einen Streich gearbeitet habe. 

Am Vormittag ging die Vorstellungsrunde los und ich konnte mir nicht mal ein Zehntel der Namen merken - obwohl ich anscheinend allen bekannt war (”Oh, you’re the Austrian guy…”). Nach der ersten Sitzung mit meinem Chef Santiago Gomez und dem neuen Präsidenten Naseem Bashir wurde mir klar, dass hier wohl Arbeit für die nächsten 5 Jahre auf mich wartet ;-) bedeutet wohl, dass wir länger hier bleiben werden.

Danach bezog ich mein fensterloses Kämmerchen, in dem mir der Ausblick auf die Riverbank und den North Saskatchewan verwehrt bleibt. Aber ich habe mein eigenes Büro und muss mir nicht eines der Cubicles teilen - ich nehme daher an, dass es sich da wohl um ein Feature handelt…

Gleich beim Lunch wurde mir bewusst, dass in Kanada doch alles anders ist (und besser): ich liess wieder mal meine Jacke liegen inklusive iPod, Telefon, Schlüssel, … - aber anders als bei uns wartete die Jacke bei der Security des Gebäudes geduldig auf mich - nicht mal der iPod hat gefehlt.

 

In der Woche davor haben wir Edmonton von links nach rechts und von oben nach unten auf der Suche nach netten Häusern durchquert. Gefunden haben wir einiges, aber es war entweder heruntergekommen, zu teuer oder zu weit ausserhalb. Aber zumindest die Kinder haben sich für eine Schule entschieden, die “Rio Terrace”. Jetzt müssen wir nur noch was in der Nähe finden.

 

Grüsse aus Edmonton

Mike

Endlich angekommen

28 Mar
2008

Nach monatelangen Vorbereitungen, wochenlangem Stress, ein paar schlaflosen Nächten und 17 Stunden Flug kamen wir am 27.3.2008 um 23:00 Uhr endlich in unserer neuen Heimat Edmonton an [more]

Hundemüde von dem langen Flug konnten wir uns gerade noch aufraffen um unser Mietauto abzuholen und ins nächste Hotelbett zu fallen. Vorher mussten wir beim Mietauto jedoch noch ein Upgrade vornehmen, damit auch alle unsere 12 Koffer im Auto Platz hatten.

Noch nicht ganz ausgeschlafen, aber aufgeregt, unsere neue Heimat zu erkunden, sprangen wir am nächsten Morgen ins Auto und fuhren Richtung Downtown. Die Strecke vom Flughafen in die Stadt wirkte auf uns etwas ernüchternd, da wir durch die Industriezone Edmontons fuhren und Alberta selbst gerade erst aus dem Winterschlaf erwacht. Es bot sich uns daher ein etwas düsteres und graues Bild, dass meiner Frau dann schon etwas Angst machte.

Die Downtown selber war dann mit den ganzen Hochhäusern schon beeindruckender. Da die Gegend rund um Edmonton sehr flach ist, erhoben sich die Hochhäuser der Innenstadt aus dem Flusstal, als wir der Stadt entgegenfuhren. Wir parkten dann auch bei der ersten Gelegenheit in der Jasper Avenue um die Stadt zu Fuss zu erkunden. Die Telus Towers, die mir vorher nur von Google Earth bekannt waren, dienten uns dabei als Wegweiser zu meiner neuen Firma. Da angekommen konnten wir es uns nicht verkneiffen uns dann auch direkt bei ADWE zu melden.

Ich würde jetzt gerne davon berichten, wie herzlich wir empfangen wurden und wie sehr mir alles gefallen hat (was auch wirklich der Fall war), leider wurde unser Ankommen in Edmonton von einem furchtbaren Unfall überschattet.

Kurz nach dem Mittagessen mit meinem Chef kamen wir zu ADWE zurück wo gerade die ganze Belegschaft zu einer Sondersitzung zusammengerufen wurde. An dieser Sondersitzung wurden allen mitgeteilt, dass Reagan Williams, der Präsident von ADWE, bei einem Flugzeugabsturz ums Leben kam. Das besonders tragische daran ist, dass sein Vater, Allan Williams, CEO der Firma, bei einem ähnlichen tragischen Flugzeugunglück im Herbst des Vorjahres ums Leben kam.

Wir, meine Familie und ich, die mich zu diesem Zeitpunkt begleitete, waren wie alle Mitarbeiter bei ADWE geschockt von diesem tragischen Ereignis und ich möchte hiermit der Familie Williams wie auch allen Mitarbeitern mein herzlichstes Beileid aussprechen.

Alle, die an dieser Stelle Fotos unserer Ankunft und Berichte, wie schön und toll und aufregend die ersten Tage in Edmonton sind, erwartet haben, muss ich bis auf weiteres vertrösten, da uns allen nicht mehr nach fotografieren und Sight Seeing mehr zumute war.

 

In Gedenken an Reagan und Allan Williams

Familie Dobler

Oh Canada

27 Jan
2008

Ja, endlich scheint es soweit zu sein. Nachdem ich jahrelang jedem den ich kenne mit meinen Geschichten vom Auswandern auf die Nerven gegangen bin, wird mein Traum nun endlich wahr. Wir gehen nach Edmonton! [more]

Nach langen Verhandlungen, traurigen Ereignissen und Verzögerungen erhielt ich endlich (wenn auch sehr unerwartet) einen Arbeitsvertrag von A.D. Williams Engineering (http://www.adwilliams.com), einem bekannten und renomierten Ingenieursbüro im Herzen der City. Dafür möchte ich mich ganz herzlich bei Santiago Gomez bedanken, der mit seiner Ausdauer und Hartnäckigkeit dafür gesorgt hat, dass dieser Traum in Erfüllung geht.

Danken möchte ich natürlich auch dem Firmeninhaber Reagan Williams und auch der Personalmanagerin Sarah Burkhard, die die Mühe auf sich genommen haben, mich nach Kanada zu bringen.

Ich danke auch Mr. Arjuna Ranasinge von Unison HR (http://www.unisonhr.com), der mir diesen grossartigen Job vermittelt hat und mir helfen wird, die Immigration so schnell wie möglich über die Bühne zu bringen. Übrigens herrscht Facharbeitermangel in Alberta! Darum sucht Arjuna noch drigend IT Fachleute, Ingenieure alle Art und Handwerker, die auch davon träumen, nach Kanada auszuwandern. Meldet euch einfach bei ihm über die Webseite oder schreibt ihm ein E-Mail an aranasinghe@unisonhr.com. Einfach "Mike Dobler sent me" reinschreiben, und er weiss, worum es geht. Die Anfragen aber bitte nur in Englisch, bei Unison HR spricht man kein Deutsch. Sollte jemand Probleme dabei haben, meldet euch doch einfach bei mir und ich schau mal, ob ich helfen kann (m.dobler@steepvalley.net).

Du meine Güte, die ganzen Danksagungen klingen ja schon ein bisschen nach der Oscar-Verleihung, ich sollte jetzt wohl besser aufhören…

 

Ich werde in Zukunft in diesem Blog über meine Erfahrungen mit der Immigration, dem Leben und Arbeiten in Kanada und über andere (vielleicht) hilfreiche Themen schreiben. Ihr könnt mir gerne Kommentare und Anfragen zusenden, ich werde versuchen, diese zu beachten oder zu beantworten.

 

Und noch schnell an alle meine Bekannten, Verwandten und Arbeitskollegen: sobald wir uns ein bisschen häuslich eingerichtet haben, seid Ihr natürlich herzlich eingeladen uns zu besuchen, wir freuen uns schon. Telefonnummern und Anschrift kommen noch.

Hilfreiche Links:

ADWE's website: http://www.adwilliams.com

Unison HR's website: http://www.unisonhr.com

Working in the heart of Edmonton: (google maps link)

About Edmonton: http://www.edmonton.com

I'm proud to anounce that the XP Common Controls are part of the newly released book "Windows Developer Power Tool" by James Avery and Jim Holmes. This book contains references to over 170 free and open source tools, components and frameworks, all of them coming with a mini user's guide.
Please check out their homepage at http://www.windevpowertools.com or buy the book here: http://www.amazon.com/exec/obidos/ASIN/0596527543/infozerk-20 - it will save you a lot of time and money when creating your next .net project.
My thanks to Jim and James for asking me to contribute to this book.

We are using Red Gates SQLDoc (http://www.red-gate.com) tool to document our databases and it works just fine. But as a matter of fact we do our documentations on the test server not the real server. And then a problem arises.

SQLDoc has no tool to copy the documentation from one DB to another.

And that's the problem because SQLDoc (and other tools including SQL Management Console itself) put the documentation text into the extended properties of SQL Server 2000 and SQL Server 2005, so you cannot simply copy the documented tables, procedures or functions within the help file. And documenting on the master DB did not prove usefull for us. [more]

So I checked the internals of the extended properties on SQL Server and found out that it uses the procedures sp_addextendedproperty and sp_dropextendedproperty and the internal, undocumented system table SYSPROPERTIES to save the documentation text onto the database. The SQL-Script below will extract your documentation and produce the needed procedure calls in the result window. Simply copy the text from the result window and execute it on the other database. The other database has to have the same schema of course! And because the existence of an extended property is not checked before you will receive some errors when executing the sp_drop… procedures, but this has no effect on the db.

Here's the script:

 

DECLARE @name NVARCHAR(4000),          @value NVARCHAR(4000),          @level0type NVARCHAR(4000),          @level0name NVARCHAR(4000),          @level1type NVARCHAR(4000),          @level1name NVARCHAR(4000),          @level2type NVARCHAR(4000),          @level2name NVARCHAR(4000)         DECLARE @statement NVARCHAR(4000)DECLARE cloop CURSOR LOCAL for         SELECT   S.NAME AS NAME,                  REPLACE(CAST(S.VALUE AS NVARCHAR(4000)), '''', '''''') AS VALUE,                   'USER' AS LEVEL0TYPE,                  'dbo' AS LEVEL0NAME,                  CASE O.XTYPE                            WHEN 'U' THEN 'TABLE'                           WHEN 'P' THEN 'PROCEDURE'                           WHEN 'FN' THEN 'FUNCTION'                           WHEN 'TF' THEN 'FUNCTION'                           WHEN 'IF' THEN 'FUNCTION'                           WHEN 'V' THEN 'VIEW' END                   AS LEVEL1TYPE,                 O.NAME AS LEVEL1NAME,                 CASE S.TYPE                           WHEN 4 THEN 'COLUMN'                           ELSE 'NULL' END                   AS LEVEL2TYPE,                 CASE                           WHEN ISNULL(C.NAME, '') = '' THEN 'NULL'                           ELSE C.NAME END                   AS LEVEL2NAME         FROM     SYSPROPERTIES S                  JOIN SYSOBJECTS O ON S.ID = O.ID                  LEFT JOIN SYSCOLUMNS C ON S.ID = C.ID AND S.SMALLID = C.COLORDER                  –LEFT JOIN SYSINDEXES I ON S.ID = I.ID AND S.SMALLID = I.INDID         WHERE    S.NAME = 'MS_Description'         ORDER BY 5,6,7,8         OPEN cloop

FETCH next FROM cloop INTO @name, @value, @level0type, @level0name, @level1type,

@level1name, @level2type, @level2name WHILE @@FETCH_STATUS = 0BEGIN         –drop property         SET @statement =                 'exec sp_dropextendedproperty N''' + @name + ''', '''                   + @level0type +  ''', ''' + @level0name + ''', '''                  + @level1type +  ''', ''' + @level1name + ''', '''                  + @level2type +  ''', ''' + @level2name + ''''                          SET @statement = REPLACE( @statement, '''NULL''', 'NULL')                  PRINT '/*' + @level1type + ': ' + @level1name + '*/'                  PRINT @statement                  PRINT 'GO'         –add property         SET @statement =                   'exec sp_addextendedproperty N''' + @name + ''', N''' + @value + ''', '''                   + @level0type +  ''', ''' + @level0name + ''', '''                  + @level1type +  ''', ''' + @level1name + ''', '''                  + @level2type +  ''', ''' + @level2name + ''''                          SET @statement = REPLACE( @statement, '''NULL''', 'NULL')                  –PRINT '/*' + @level1type + ': ' + @level1name + '*/'                  PRINT @statement                  PRINT 'GO' 

                 FETCH next FROM cloop INTO @name, @value, @level0type, @level0name,

                       @level1type, @level1name, @level2type, @level2name         END         CLOSE cloop         DEALLOCATE cloop

When I was starting to develop in VS.net I wanted that nice XP-Look for all of my programs. The problem is, that Visual Studio shipped without most of them. The most missed controls where the Taskbox/Taskbar control and the Grouped ListView Contol.
I ran into implementations of some of the controls on the internet (namely vbAccelerator and the TaskVision Sample on http://www.windowsforms.net) and into a document provided by Microsoft named "Windows XP Design Guidelines". This document provides detailed information on some of the new controls and I started to recreate some of these controls for VS.net (with hints and help from the sites mentioned above - thank you again!) [more]
The one feature I wanted to have with the XP Controls was theming. But since it always needed some direct dll calls to uxtheme.dll I wrote my own theming dll. This has some positive and some negative effects.

Positive:

It runs on any OS that supports the .net-Framework; means it will run on non-XP Systems like Win95 and Win2000. That said, I must also tell you that the theme listener and the grouping and tiling of the XPListGroup won’t work without Win XP.
I didn’t have to write a lot of API-calls ;-)

Negative:

If Microsoft introduces a new theme or you download one from the internet, the controls will not support this one until it’s hardwired into the code.
As a workaround for the negative part I have exposed all properties of the theming formats to the IDE so you can define any combination of formats you want.
The collection of controls grew over time and include now balloon tips, cue banners, a textbox provider, panes, …
The newest addition are the Windows Forms Stylesheet (a separate project before) that will allow you change properties of your forms and controls at runtime, based on a xml definition file (similar to CSS in HTML).

Source Code

You can find the XPCC code and controls at http://www.codeplex.com/xpcc

Synchronizing UI Elements

When designing common Windows Forms Application, it always turns out to be a bit of a hassle to synchronize different UI elements like a MenuItem and a Toolbar Item that execute (or should execute) the same code or should be activated and deactivated at the same time. [more]

Using Commands

One Solution to this problem is to delegate the work to a command class and then attach one or more UI elements to this class. The Command Class will then be in charge of executing commands, enable, disable, hide or show the attached elements.

In a future version I will provide a command extender that can be dragged onto a form and UI elements can then be attached to it. Meanwhile you will find some code that will allow you to use those command classes in code.

Using command classes in code has advantages too. You can create your very own application model with all the commands you need in your app as you will see in the demo app.

The Command Class

The Command Class itself contains a collection of attached components, some properties that will be explained shortly and some events that are used to inform the commands containing class of any changes in the command class.

Public Properties

There are three Properties (PropagateEnabled, PropagateVisible, PropagateText) that will allow one attached component to change the command’s Enabled, Visible or Text Property which will in turn propagate those changes to all other attached components. Setting the Visible and Enabled Property directly on the command object will always result in the propagation of the property value to all attached components.

The standard behaviour of the Text property is to NOT PROPAGATE to all attached components because this could end in some „funny“ scenarios because you could also attach textboxes to the command class. On the other hand, propagating the Text can be useful if the menu item or button should display certain states and be constant over all attached components.

Dim WithEvents MyCommand as New Command

MyCommand.PropagateEnabled = True

MyCommand.Add( menuItem1 )

MyCommand.Add( toolbarItem1 )

‘this will disable menuItem1 AND toolbaritem1

menuItem1.Enabled = False

Public Methods

The Add- and Remove-Method allow you to attach any Control or ToolStripItem to a command. Because most controls support an Enabled or Visible property, attaching textboxes, buttons and/or menu items to one command you can design highly interactive UI that could disable or hide a wide range or elements by simply setting one command property.

Calling the Clear method will remove all attached components at once.

The Execute Method will invoke the Click handler which can be intercepted in the parent class and the apropriate code can be executed for this command.

Using the Command Classes

The code includes a very simple editor application that will allow you to open, save and edit a text file. The editor’s behaviour is not programmed into the form. The project has a shared class called EditorApplication that includes all methods and commands that can be executed from the editor. It also supports some events that the editor can use to show changes.

The EditorApplicationClass

As mentioned before, all the behaviour is in this class. All methods and events are declared shared so that the class must not be instantiated but can be used immediately in the main form. The class has a child class called Commands where all available commands for this application are defined. The class also includes the event handling of each command which in return calls a method of the EditorApplication.

Public Class EditorApplication

Public Class Commands

Public Shared WithEvents OpenFile As New Command

Public Shared WithEvents SaveFile As New Command

Public Shared WithEvents CloseFile As New Command

Public Shared WithEvents NewFile As New Command

Public Shared WithEvents ChangeFont As New Command

Public Shared WithEvents SaveFileAs As New Command

Private Shared Sub ChangeFont_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ChangeFont.Click

EditorApplication.ChangeFont()

End Sub

Private Shared Sub CloseFile_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CloseFile.Click

EditorApplication.CloseFile()

End Sub

End Class

Public Shared Sub CloseFile()

If Not CheckFile() Then Exit Sub

CurrentFile = “”

Content = “”

IsDirty = False

IsNew = False

Commands.SaveFile.Enabled = False

Commands.SaveFileAs.Enabled = False

Commands.CloseFile.Enabled = False

End Sub

End Class

The EditorApplication keeps track of the current file, the current content and any status changes and raises events or changes commands accordingly.

The Editor Form

The editor form itself is very simple. You can define all UI elements by dragging them from the toolbox. In a next step you go to the Load event of the form and attach every UI elemtent to the related command object of the application class. You then hook up any EditorApplication Event you’re interested in and then you’re ready to go.

Private Sub AttachCommands()

EditorApplication.Commands.ChangeFont.Add(ChangeFontToolStripMenuItem)

EditorApplication.Commands.ChangeFont.Add(tsChangeFont)

EditorApplication.Commands.CloseFile.Add(CloseToolStripMenuItem)

EditorApplication.Commands.NewFile.Add(NewToolStripMenuItem)

EditorApplication.Commands.NewFile.Add(tsNew)

EditorApplication.Commands.OpenFile.Add(OpenToolStripMenuItem)

EditorApplication.Commands.OpenFile.Add(tsOpen)

EditorApplication.Commands.SaveFile.Add(SaveToolStripMenuItem)

EditorApplication.Commands.SaveFile.Add(tsSave)

EditorApplication.Commands.SaveFileAs.Add(SaveAsToolStripMenuItem)

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

AttachCommands()

AddHandler EditorApplication.FileChanged, AddressOf OnFileChanged

AddHandler EditorApplication.ContentChanged, AddressOf OnContentChanged

AddHandler EditorApplication.FontChanged, AddressOf OnContentFontChanged

AddHandler EditorApplication.StatusChanged, AddressOf OnStatusChanged

rtfText.Enabled = False

EditorApplication.Commands.SaveFile.Enabled = False

EditorApplication.Commands.SaveFileAs.Enabled = False

EditorApplication.Commands.CloseFile.Enabled = False

EditorApplication.CurrentFont = Me.rtfText.Font

End Sub

Private Sub OnStatusChanged(ByVal sender As Object, ByVal e As EventArgs)

Me.Text = String.Format(”{0}{1}”, EditorApplication.CurrentFile, IIf(EditorApplication.IsDirty, “*”, “”))

If EditorApplication.CurrentFile = “” And EditorApplication.IsNew = False Then

rtfText.Enabled = False

End If

End Sub

top