<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MindBusiness Blog &#187; Error Code 0x8102001c</title>
	<atom:link href="http://blog.mindbusiness.de/blog/tag/error-code-0x8102001c/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mindbusiness.de/blog</link>
	<description>MindBusiness - Produkte, Neuigkeiten, Tipps und Tricks aus der MindBusiness-Ideenwerkstatt rund um Microsoft SharePoint, InfoPath, Office, Mindjet MindManager</description>
	<lastBuildDate>Thu, 15 Dec 2011 20:49:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>BPOS Datumsfelder mit Silverlight updaten &#8211; L&#246;sung f&#252;r den Error Code 0x8102001c</title>
		<link>http://blog.mindbusiness.de/blog/2010/02/17/bpos-datumsfelder-mit-silverlight-updaten-lsung-fr-den-error-code-0x8102001c/</link>
		<comments>http://blog.mindbusiness.de/blog/2010/02/17/bpos-datumsfelder-mit-silverlight-updaten-lsung-fr-den-error-code-0x8102001c/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 08:02:02 +0000</pubDate>
		<dc:creator>Albrecht Darimont</dc:creator>
				<category><![CDATA[MindBusiness]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Error Code 0x8102001c]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.mindbusiness.de/blog/2010/02/17/bpos-datumsfelder-mit-silverlight-updaten-lsung-fr-den-error-code-0x8102001c/</guid>
		<description><![CDATA[<p>In diesem Blog beschreibe ich, wie man mit Hilfe der BPOS Web Services Datumfelder updaten kann. Dabei wird die Lösung des folgenden Problems vorgestellt:</p>
<p>Beim updaten eines Datumsfeldes wird folgender Error Code zurückgegeben: 0x8102001c,
der auf einen unzulässigen Datums- Zeitwert verweist.</p>
<p>Ausgangspunkt ist ein Silverlight Gantt, das via Web Service ausgelesene Aufgaben anzeigt. Diese können im Panel verschoben [...]]]></description>
			<content:encoded><![CDATA[<p>In diesem Blog beschreibe ich, wie man mit Hilfe der BPOS Web Services Datumfelder updaten kann. Dabei wird die Lösung des folgenden Problems vorgestellt:</p>
<p><strong>Beim updaten eines Datumsfeldes wird folgender Error Code zurückgegeben: <span style="color: #ff0000">0x8102001c</span>,<br />
der auf einen unzulässigen Datums- Zeitwert verweist.</strong></p>
<p>Ausgangspunkt ist ein Silverlight Gantt, das via Web Service ausgelesene Aufgaben anzeigt. Diese können im Panel verschoben werden. Der User entscheidet dann, ob er die Änderungen speichern möchte. Im Prototyp können Start- und Endedatum sowie der Titel zurückgeschrieben werden.</p>
<p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/02/image.png"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/02/image_thumb.png" border="0" alt="image" width="541" height="303" /></a></p>
<p><strong><em>Gantt vor dem Verschieben der SAP Aufgaben</em></strong></p>
<p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/02/image1.png"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/02/image_thumb1.png" border="0" alt="image" width="554" height="312" /></a></p>
<p><strong><em>Gantt nach dem Verschieben der SAP Aufgaben</em></strong></p>
<p> </p>
<p>Diese Veränderung kann nun in die Aufgabenliste geschrieben werden. Hier der Quellcode:</p>
<p>Zunächst sehen Sie die Eventhandler des Buttons <em><strong>Änderungen speichern</strong></em></p>
<blockquote><p>private void Button_Click(object sender, RoutedEventArgs e)<br />
      {<br />
          List&lt;Aufgaben&gt; newAufgabenliste = new List&lt;Aufgaben&gt;();<br />
          foreach (IGanttNode n in nodes)<br />
          {<br />
              ExampleGanttNode en = (ExampleGanttNode) n;</p></blockquote>
<blockquote><p>              newAufgabenliste.Add(ConvertNodeToAufgabe(en));<br />
              if (en.ChildNodes != null)<br />
              {<br />
                  foreach (IGanttNode n2 in en.ChildNodes)<br />
                  {<br />
                      ExampleGanttNode en2 = (ExampleGanttNode)n2;<br />
                      newAufgabenliste.Add(ConvertNodeToAufgabe(en2));<br />
                  }<br />
              }<br />
          }<br />
           UpdateAufgabenliste(newAufgabenliste);<br />
      }</p></blockquote>
<p> </p>
<p>Dieser bereitet zunächst eine Aufgabenliste auf, die aus den Knoten der Gantt-Nodes konvertiert wird. Die Knoten sind Observable Objects, d.h. jede visuelle Änderung, also das Verschieben auf der Zeitleiste, wird in die zugrundeliegende Datenstruktur geschrieben.</p>
<p>Der Trick besteht darin, diese Knoten in eine Aufgabenliste zu konvertieren.</p>
<p>private Aufgaben ConvertNodeToAufgabe(ExampleGanttNode node)<br />
       {<br />
           Aufgaben result = new Aufgaben<br />
           {<br />
           Title = node.TaskName,<br />
           StartDate = node.StartDate,<br />
           EndeDate = node.EndDate,<br />
           ID = node.ID<br />
            };<br />
           return result;<br />
       }</p>
<p>Der Rückgabewert der Funktion <strong><em>ConvertNodeToAufgabe</em></strong> ist vom Typ <strong><em>Aufgaben</em></strong>, ein C# Typ, der eine BPOS-Aufgabenliste abbildet. Die folgende Grafik zeigt einen Ausschnitt.</p>
<blockquote><p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/02/image2.png"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/02/image_thumb2.png" border="0" alt="image" width="332" height="235" /></a></p></blockquote>
<p>Wir konvertieren also alle Knoten des Gantt in eine Aufgabenliste. Diese muss dann in die Aufgabenliste von BPOS zurück geschrieben werden. Das übernimmt die Funktion:</p>
<p><strong><em>UpdateAufgabenliste(newAufgabenliste);</em></strong></p>
<blockquote><p>private void UpdateAufgabenliste(List&lt;Aufgaben&gt; newAufgabenlist)<br />
       {<br />
           StringBuilder sb = new StringBuilder();<br />
           sb.Append(&#8220;&lt;Batch OnError=\&#8221;Continue\&#8221;&gt;&#8221;);</p></blockquote>
<blockquote><p>           int indexer = 1;<br />
           foreach(Aufgaben a in newAufgabenlist) {<br />
<strong><span style="color: #ff0000">               String dateS = DateTime.Parse(a.StartDate.ToString()).ToString(&#8220;yyyy-MM-ddTHH:mm:ssZ&#8221;);<br />
               String dateE = DateTime.Parse(a.EndeDate.ToString()).ToString(&#8220;yyyy-MM-ddTHH:mm:ssZ&#8221;);<br />
</span></strong>               sb.Append(&#8220;&lt;Method ID = \&#8221;" + indexer + &#8220;\&#8221; Cmd=\&#8221;Update\&#8221;&gt;&#8221;);<br />
               sb.Append(&#8220;&lt;Field Name = \&#8221;ID\&#8221;&gt;&#8221; + a.ID + &#8220;&lt;/Field&gt;&#8221;);<br />
               sb.Append(&#8220;&lt;Field Name=\&#8221;Title\&#8221;&gt;&#8221; + a.Title + &#8220;&lt;/Field&gt;&#8221;);<br />
               sb.Append(&#8220;&lt;Field Name=\&#8221;StartDate\&#8221;&gt;&#8221; + dateS + &#8220;&lt;/Field&gt;&#8221;);<br />
               sb.Append(&#8220;&lt;Field Name=\&#8221;DueDate\&#8221;&gt;&#8221; + dateE  + &#8220;&lt;/Field&gt;&#8221;);<br />
               sb.Append(&#8220;&lt;/Method&gt;&#8221;);<br />
               indexer++;<br />
           }<br />
           sb.Append(&#8220;&lt;/Batch&gt;&#8221;);</p></blockquote>
<blockquote><p>           XElement batch = XElement.Parse(sb.ToString());<br />
          // MessageBox.Show(batch.ToString());<br />
           proxy.UpdateListItemsAsync(ListGUID.Aufgaben, batch);<br />
       }</p></blockquote>
<p>Die entscheidenden Zeilen sind rot hervorgehoben. Die in der Aufgabenliste als DateTime typisierten Start- und Endedaten werden jeweils in einen String gewandelt, der das gezeigte Format besitzt. Mit Hilfe einer StringBuilder Instanz wird eine XML-Struktur gebaut, die als Batch, also als Folge von Befehlen, an den Web Service gesendet wird.</p>
<p>Wir erzeugen dann ein XElement auf der Basis der StringBuilder Instanz.</p>
<p><strong><em>XElement batch = XElement.Parse(sb.ToString());<br />
</em></strong></p>
<p>Als nächstes wird der asynchrone Web Service von Silverlight aufgerufen. Dabei übergeben wir eine List-GUID und besagtes XElement.</p>
<p><strong><em>proxy.UpdateListItemsAsync(ListGUID.Aufgaben, batch);</em></strong></p>
<p>Alle Datumsfelder werden nun anstandslos aktualisiert und in die BPOS-Aufgabenliste geschrieben.</p>
<p>Die folgende Bilder zeigen das gesendete XElement sowie den Response des Web Service.</p>
<blockquote><p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/02/image3.png"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/02/image_thumb3.png" border="0" alt="image" width="312" height="685" /></a></p></blockquote>
<p> </p>
<blockquote><p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/02/image4.png"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/02/image_thumb4.png" border="0" alt="image" width="594" height="252" /></a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.mindbusiness.de/blog/2010/02/17/bpos-datumsfelder-mit-silverlight-updaten-lsung-fr-den-error-code-0x8102001c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

