InfoPath Bug 2

6. September 2007 13:28 by marco in Microsoft, Software  //  Tags:   //   Comments (0)

Im Einsatz ist ein InfoPath 2003 Formular für einen länger dauernden Workflow. Das Dokument selbst wird dabei von jemandem erstellt, in einer SharePoint Document Library abgelegt und dann an einem anderen Tag von jemand anderem erneut aufgerufen (mit einer anderen View).

Problem ist, dass auf beiden Views innerhalb des Dokumentes zwei verschiedene Textfelder sind, die das Datum anzeigen sollen an dem das Dokument jeweils geöffnet wird. Dafür gibt es eine Funktion, nämlich today().

Das Problem ist, dass today() nun leider nicht heute, wie der Name sagt zurückliefert, sondern den Tag an dem das Formular zum ersten Mal geöffnet wurde... Bug oder Feature? Hätte man aber auch schneller drauf kommen können, wenn man mal bei Office Online nachliest:

Gibt das Datum als Daten vom Typ Datum (date) zurück, wenn das Formular zum ersten Mal geöffnet wird.

Opera 9.5 Alpha released

4. September 2007 08:40 by marco in Software  //  Tags:   //   Comments (0)

Es ist soweit: Opera erscheint demnächst in einer neuen Version.

Mehr performance und mehr sehr nützliche Features. Werft mal einen Blick auf Opera 9.5! Es lohnt sich wirklich, am besten gleich hier das Video ansehen: Exclusive Opera 9.5 Features & Video

Oder einfach hier die Alpha downloaden: Opera 9.5 Alpha

Werbung

1. September 2007 17:47 by marco in Blog  //  Tags:   //   Comments (1)

So, ich habe nun hier auch mal ein bisschen Google ads untergebracht... mal gucken ob das auch nur ansatzweise was bringt. Wenn nicht, entferne ich das ganze in den kommenden Monaten wieder.

Bis dahin könnt (und sollt) ihr natürlich gerne so viel wie möglich fleißig drauf klicksen ;-)

InfoPath Erweiterung: Multi-Select ListBox lädt Daten on-demand

30. August 2007 07:31 by marco in .NET, Avanade, C# Code, Microsoft, Software  //  Tags:   //   Comments (0)

Ein Kunde, der InfoPath 2003 einsetzt, hat einige Anforderungen, die sich nicht so einfach umsetzen lassen. Da das große weite Internet leider fast nichts dazu hergibt, hier meine Probleme inkl. Lösungen.

Anforderung 1: Eine "multi-select list box", also eine ListBox zum anhaken. In InfoPath 2007 bereits enthalten, muss diese bei 2003 leider selbst gebaut werden. Dazu gab es einen recht guten Artikel bei InfoPathDev, den ich nun (nach deren umgestaltung) leider nicht mehr wieder finde... Deshalb hier nochmal in Kürze:

Die DataSource Struktur (der InternetPortals Knoten ist repeatable und "internetPortalSelected" ist vom Typ boolean):

image

Nun erstellt man eine optionale Section auf dem Formular, und bindet sie an den "PortalsGroup" Knoten. Innerhalb der optionalen Section erstellt man eine Scrolling Region. Dort zieht man dann den "InternetPortals" Knoten hinein und wählt "Repeating Table". In den Eigenschaften hakt man "Allow users to insert and delete rows" und "Include Header" ab. Außerdem sollte die Tabelle natürlich keine Rahmen haben.

Jetzt nur noch das ganze entsprechend ansortieren, die Textbox durch ExpressionBox ersetzen und als default Wert für den Namen etwas schreiben wie "loading...". Die ID muss dabei dem Benutzer gar nicht gezeigt werden und kann gelöscht werden. So sieht das ganze dann aus:

image

Anforderung 2: Und hier wird es komplizierter. Die ListBox soll nun mit Daten von einem WebService befüllt werden, und zwar erst beim öffnen der Section.
Problem 1 daran ist, dass es im IP 2003 Objektmodell keinerlei Events gibt, die ein aufklappen einer section anzeigen. Das einzige Event, was an der Stelle hilft ist das OnContextChange Event. Dieses wird allerdings ziemlich häufig gefeuert, z.b. bei jedem klick irgendwo auf das Formular, etc.

Problem 2 ist, dass man an die selbstgebaute ListBox keine DataSource anbinden kann (zumindest nicht über Wizards). Hier die Lösung (siehe Kommentare im Code): 

[InfoPathEventHandler(EventType = InfoPathEventType.OnContextChange)]
public void OnContextChange(DocContextChangeEvent e)
{
    if (e.Type == "ContextNode")
    {
        LoadPortals();
    }
}
 
private void LoadPortals()
{
    // Zunächst den Knoten finden der den Repeatable Knoten enthält
    IXMLDOMNode ipGroup = thisXDocument.DOM.selectSingleNode("my:Fields/my:PortalsGroup/my:Portals1");
 
    // Ist dieser null dann ist die section nicht aufgeklappt, es muss nichts getan werden
    if (ipGroup == null)
        return;
 
    // Die DataSource abrufen (hier: "GetInternetPortals"). Diese muss zunächst über
    // Tools->Data Connections angelegt werden und das häkchen bei "Automatically retrieve data
    // when form is opened" muss nicht selektiert werden, denn die Daten sollen ja nur bei Bedarf
    // geladen werden, um so das öffnen des Formulars nicht unnötig zu verlangsamen.
    DataObject dob = thisXDocument.DataObjects["GetInternetPortals"];
    dob.Query();
 
    // Hier müssen die Namespaces gesetzt werden um auf das DOM des WebServices zugreifen zu können.
    // Der erste Namespace ist IP 2003 standard, der zweite muss durch den Namespace
    // des WebServices ersetzt werden. 
    IXMLDOMDocument2 d = (IXMLDOMDocument2)dob.DOM;
    d.setProperty("SelectionNamespaces",
          "xmlns:dfs=\http://schemas.microsoft.com/office/infopath/2003/dataFormSolution\
           xmlns:tns=\"http://MY-WEB-SERVICE-URL.COM/SERVICES\"");
 
 
    // Den Knoten des WebService Response holen (wie dieser Knoten heißt lässt sich am einfachsten
    // raus finden, in dem man im debug modus einfach mal den Inhalt von d.xml anschaut).            
    IXMLDOMNode rootNode = d.selectSingleNode("dfs:myFields/dfs:dataFields/
                   tns:GetInternetPortalsResponse/tns:GetInternetPortalsResult");
 
    // Erst jetzt kann man feststellen, ob die Daten bereits in der Listbox enthalten sind
    if (ipGroup.childNodes.length > rootNode.childNodes.length)
        return;
 
    bool removeFirst = true;
 
    foreach (IXMLDOMNode node in rootNode.childNodes)
    {
        // Hier die beiden Knoten die vom WebService zurückgeliefert werden.
        string id = node.selectSingleNode("tns:Id").text;
        string name = node.selectSingleNode("tns:Name").text;
 
        IXMLDOMNode group = thisXDocument.DOM.
                 selectSingleNode("my:Fields/my:PortalsGroup/my:Portals1");
        IXMLDOMNode field = thisXDocument.DOM.
                 selectSingleNode("my:Fields/my:PortalsGroup/my:Portals1/my:InternetPortals");
        IXMLDOMNode newNode = field.cloneNode(true);
        if (removeFirst)
        {
            group.removeChild(field);
            removeFirst = false;
        }
        // Werte vom neuen Knoten setzen
        newNode.selectSingleNode("my:internetPortalId").text = id;
        newNode.selectSingleNode("my:internetPortal").text = name;
        group.appendChild(newNode);
    }
}

 

Demnächst mehr aus der InfoPath Hell...

InfoPath Bug

22. August 2007 11:02 by marco in .NET, Microsoft, Software, Visual Studio 2005  //  Tags:   //   Comments (0)

Folgendes Szenario: Ein (relativ umfangreiches) InfoPath 2003 Formular, mit Managed Code in .NET 2.0 und ein paar Data Connections die Daten von WebServices abrufen.

Das Formular selbst ist inzwischen ziemlich groß geworden und von einer Sekunde auf die andere lädt das Forumlar einfach nicht mehr. Dazu folgende Fehlermeldung:

The query cannot be run for the following DataObject: XXX
InfoPath cannot run the specified query.
Attachment: Maximum retry on the connection exceeded. - HRESULT=0x80004005: Unspecified error

Nach ein paar google recherchen ist dieser Fehler scheinbar nur in anderen Zusammenhängen bekannt... Also alles mögliche probiert, aber keine Besserung. Dann mal ein neues Formular erstellt, data connection hinzugefügt, geladen --> lädt ohne Probleme.

Nach etwa einem Tag verzweifelten rumprobieren, das Formular mal auf einem anderen Rechner geladen --> lädt ohne Probleme!

Der Unterschied der beiden Systeme: Auf dem, auf dem es nicht läuft, ist nur das Office 2003 SP1 installiert, auf dem anderen SP2!

Lösung also: SP2 installieren.

Trotzdem bleibt es natürlich sehr fragwürdig, wieso es a) lange ging und erst auf einmal nicht mehr und b) ein neues Formular mit den komplett selben Einstellungen läuft.
Mag vielleicht an der größe des Formulars liegen oder an dem Wetter... ;-)

Proxy Switcher v1.0.2

16. August 2007 20:06 by marco in .NET, ProxySwitcher, Software  //  Tags:   //   Comments (0)

New Version here!


--- English version below ---

Hier gibt es nun endlich ein Tool, dass die nervigen Proxykonfigurationen überflüssig macht.

Wenn man immer unterwegs ist, und mal in dieser Firma, mal in einer anderen Firma, dann im Hotel, zu Hause, etc. und man jedesmal eine andere Proxykonfiguration benötigt, hilft mein neues Tool.

Der große Unterschied zu bestehenden Tools (und davon wird es sicher eine Menge geben) ist der, dass Proxy Switcher nicht nur ein Tasktray Symbol zum schnellen umschalten bietet, sondern dass Proxy Switcher automatisch, je nach Netzwerk, die Proxyeinstellungen setzen kann!

Dazu legt man einmalig die Proxyeinstellungen fest und definiert eine Bedingung, wann dieser Proxy aktiv werden soll. Als Bedingungen stehen derzeit zur Verfügung:
- Eine bestimmte Gateway Adresse
- Der DNS Suffix enthält eine bestimmte Zeichenfolge

Somit werden die enstprechenden Einstellungen aktiv, sobald man ein LAN Kabel einsteckt oder eine WLAN Verbindung herstellt die die entsprechenden Bedingungen erfüllt sind. Kein manuelles klicksen oder tippen mehr.

Also sofort downloaden: Download Installer

Requirements: .NET Framework 2.0 und Windows XP oder Windows Vista

Features:

  • Verschiedene Proxy Einstellungen per Klick abrufen
  • Plugin basiert um die Proxyeinstellugen von verschiedenen Anwendungen zu setzen die nicht auf Internet Explorer Einstellungen zurückgreifen können. Mehr dazu in einem der nächsten Posts.
  • Automatisches Switching von Proxies, je nach Netzwerkkonfiguration

image

Änderungswünsche und Bugs bitte direkt hier in die Kommentare oder per Mail.

-------------------- ENGLISH --------------------

Proxy Switcher is a little helper tool for switching between different proxy settings.

If you are at many locations, e.g. at work, home, hotel, etc. you may be tired of setting (and remember) proxy settings for the different locations.

So, Proxy Switcher will assist you in remeber and easily switch between proxy settings. The major feature which is different from many other tools is, that Proxy Switcher can switch settings automatically depending on network connections.

To make this work, define a new proxy configuration and set a condition for activating it. Possible conditions (in this version) are depending on the DNS suffix (e.g. yourcompany.com) or on the gateway IP address. If you now connect you notebook to a network, the settings will activated automatically.

Another point is, that the application is Plugin-based. So if you have an application which cannot use the Internet Explorer settings write your own plugin for Proxy Switcher. More on this in one of my next posts.

If you have any questions or bugs, leave a comment or drop me a line.

Get Latest Version on Checkout

27. July 2007 17:54 by marco in .NET, Microsoft, Software, Visual Studio 2008  //  Tags:   //   Comments (0)

Danke Microsoft für die Implementierung dieses fundamentalen Features in der kommenden Version des Team Foundation Servers / VS 2008... endlich!

image

Visual Studio 2008 Beta 2 verfügbar

27. July 2007 07:59 by marco in .NET, Microsoft, Software, Visual Studio 2005  //  Tags:   //   Comments (0)

Die Beta 2 vom Visual Studio 2008 (ehemals Orcas) ist ab sofort verfügbar.

Die beste Einstiegsseite ist die MSDN Subscription Seite falls verfügbar oder hier:
http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx

Dort gibt es auch bereits fertige VPCs mit VS 2008 Team Suite und Team Foundation Server (TFS) vorinstalliert.

Neue Version, neues Layout

22. July 2007 12:42 by marco in .NET, ASP.NET, Blog, Software  //  Tags:   //   Comments (1)

Eigentlich wollte ich warten, bis dasBlog dann endlich in Version 2.0 verfügbar ist, aber heute hatte ich gerad mal ein wenig Zeit... Nun gibts auch ein neues, hübscheres Design.

Allerdings lässt sich die configuration page nicht mehr aufrufen... Hoffe mit Version 2 wird dann alles besser. Diese wird dann auch nur noch auf .NET 2.0 aufsetzen und Medium Trust unterstützen, womit das ganze auch in einer Hosting Environment einsetzbar ist.

Team Foundation Server Bugs

11. July 2007 15:12 by marco in .NET, Avanade, Microsoft, Software, Visual Studio 2005  //  Tags:   //   Comments (0)

Der Team Foundation Server ist im großen und ganzen ein sehr nettes Tool. Insbesondere im Gegensatz zu SourceSafe nicht nur deutlich umfangreicher, sondern er "soll" auch besser sein.

Problem / Bug(?):

- Neue Datei zu einem Projekt hinzufügen oder besser noch durch copy/paste eine vorhandene, eingecheckte Datei in das gleiche Projekt kopieren
- Die soeben neu erstellte Datei umbenennen
- Alles einchecken

Die Datei lässt sich nicht einchecken, obwohl es zunächst so aussieht. Nach beenden und neu starten des Studios hat die Datei überhaupt kein Zeichen mehr vor dem Dateisymbol und ist somit nicht mehr unter Quellcodekontrolle.

Lösung des Problems:

Die Team Foundation Server Power Tools runterladen, installieren und mit der Kommandozeile in den Ordner mit der Solution wechseln, bsp.:

cd "C:\Documents and Settings\user1\Visual Studio 2005\Projects\testproject"

Dann tfpt.exe aufrufen mit: "tfpt.exe online"

Im erscheinenden Fenster die entsprechende Datei anhaken und auf "Pend changes" klicksen. Studio neu starten und die Datei lässt sich wieder einchecken wie gewohnt.

MCTS: .NET Framework 2.0 Web Applications

15. June 2007 16:44 by marco in .NET, ASP.NET, Avanade, Microsoft, Microsoft Zertifizierungen  //  Tags:   //   Comments (0)

Geschafft. Auf dem Web zum MCPD EA habe ich nun etwas Zeit gehabt um schon mal die ersten beiden Prüfungen zu machen. Zum einen die 70-536 (Microsoft .NET Framework 2.0 - Application Development Foundation) und direkt hinterher die 70-528 (Microsoft .NET Framework 2.0 - Web-Based Client Development).

Damit bin ich jetzt also MCTS Web. Beide Prüfungen waren ganz ok, wobei ich bei der Web Prüfung die Möglichkeit der Kommentierung genutzt habe und bei 3-4 unklaren/falschen Fragen meinen Kommentar hinterlassen habe. Ob das jemand liest ist eine andere Frage...

Windows Live Writer Beta 2 verfügbar

31. May 2007 07:08 by marco in Blog, Microsoft, Software  //  Tags:   //   Comments (0)

Wie ich gerad bei Channel 9 gelesen habe, gibt es ab sofort den Windows Live Writer als Beta 2 zum Download!

Allein für den hübschen neuen SplashScreen lohnt sich der Download ;-)

WriterSplash

Ansonsten hat sich nicht nur die Optik verbessert sondern auch viele andere Dinge, wie z.B., dass man nun endlich auch neue Kategorien erstellen kann, dass man sich warnen lassen kann Kategorien/Titel hinzuzufügen, bevor man einen Artikel published, etc.

Mehr zu den Neuigkeiten gibt es im LiveSide Blog oder direkt beim Windows Live Writer Team.

Ach und wer noch nicht genug Betas auf seinem Rechner hat: Der Live Messenger ist nun auch als Version 8.5 Beta verfügbar.

Noch ein kleines STC Update

24. May 2007 19:22 by marco in .NET, Avanade, Fun, Microsoft, Student Technology Conference  //  Tags:   //   Comments (0)

 Hier noch ein paar Bilder die von den professionellen Fotografen gemacht wurden:

Das war die große Bühne auf der wir auch die VSTO Session hatten (die war wirklich so groß):

Dann noch der etwas kleinere Raum für die Games Development Sessions (hier spricht übrigens gerade Dirk Primbs):

Und noch ein paar Bilder in Action ;-)

 

STC 2007 - Fazit

22. May 2007 10:02 by marco in .NET, AntMe, Avanade, C# Code, Fun, Microsoft, Office 2007, Student Technology Conference  //  Tags:   //   Comments (1)

Für mich endete die STC ja bereits gestern, aber als Fazit kann ich sagen, dass zum einen die Location zwar ganz nett war, aber irgendwie hat es mir 2005 in Kassel besser gefallen. Auch die Party am Abend war sehr verteilt in den ganzen Räumen, was eher nicht so toll war, auch wenn es sehr coole Aktivitäten wie z.B. Hochofenaufstieg bei Nacht, GPS Rally, XBox Contest, etc. gab.

Meistens war ich allerdings beim AntMe Coding Contest zu finden, um einigen Teams noch ein paar Tipps zu geben. Und so sah das ganze auf der Leinwand aus, wenn zwei Ameisenvölker gegeneinander angetreten sind:

Moderiert und gemanaged wurde das ganze von Wolfgang und Tom:

  Schönes Bild wie ich finde ;-)

Ok, und damit alle die da waren nochmal nachlesen können, und alle die nicht da waren, aber gerne da gewesen wären, sehen können, was sie verpasst haben, gibt es hier die Slides und Demos der beiden Sessions "AntMe! - Teil 2" und "VSTO - Office Programmierung mit .NET":

Download AntMe! Teil 2 Slides + Demos / Plugins
Download VSTO Slides + Demos

Wer noch fragen hat, gerne hier melden oder per Mail, siehe Slidedecks.

STC 2007 - Live

21. May 2007 15:28 by marco in .NET, Avanade, Fun, Microsoft, Student Technology Conference  //  Tags:   //   Comments (0)

Heute bin ich auf der STC in Duisburg.

Dort hat Avanade natürlich auch einen Stand, der von Maryla betreut wird.

Hier ein (Teil-) Auszug aus der Agenda. Ich steh auch drauf...

 

Die Slides zu den Vorträgen gibt es dann später an dieser Stelle. Jetzt erstmal zur nächsten Session...