<?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>ixto-Blog</title>
	<atom:link href="http://www.ixto.de/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ixto.de/blog</link>
	<description>Business Intelligence, Database Consulting, Software Development</description>
	<lastBuildDate>Mon, 30 Apr 2012 20:47:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Dynamische Lookup-Abfrage im Full Cache Mode bei SSIS 2008</title>
		<link>http://www.ixto.de/blog/sql-server-2008/dynamische-lookup-abfrage-im-full-cache-mode-bei-ssis-2008/</link>
		<comments>http://www.ixto.de/blog/sql-server-2008/dynamische-lookup-abfrage-im-full-cache-mode-bei-ssis-2008/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 20:47:00 +0000</pubDate>
		<dc:creator>David Veenhuis</dc:creator>
				<category><![CDATA[Integration Services 2008]]></category>
		<category><![CDATA[SQL Server 2008]]></category>

		<guid isPermaLink="false">http://www.ixto.de/blog/?p=682</guid>
		<description><![CDATA[Seit der 2008er Version von SSIS gibt es die Möglichkeit die Abfrage für den Lookup-im Full-Cache Modus zu dynamisieren. Damit ist es möglich für jede Ausführung eines Datenflusstasks die Abfragen der verwendeten Lookups zur Laufzeit anzupassen. Es ist damit dann &#8230; <a href="http://www.ixto.de/blog/sql-server-2008/dynamische-lookup-abfrage-im-full-cache-mode-bei-ssis-2008/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p>Seit der 2008er Version von SSIS gibt es die Möglichkeit die Abfrage für den Lookup-im Full-Cache Modus zu dynamisieren. Damit ist es möglich für jede Ausführung eines Datenflusstasks die Abfragen der verwendeten Lookups zur Laufzeit anzupassen. Es ist damit dann möglich, die Datenmenge, die der jeweilige Lookup lädt, durch Anpassen einer where-Klausel einzuschränken. Ebenso könnte die zur Befüllung des Lookup-Caches genutzte Tabelle erst zur Laufzeit ausgewählt werden. Wählt man die Tabelle erst zur Laufzeit aus, muss die ausgewählte Tabelle in den Metadaten mit der zur Entwicklungszeit verwendeten Tabelle übereinstimmen.
<p>&nbsp;</p>
<p><span id="more-682"></span>
<p>Zur Veranschaulichung, wie einfach das ganze umzusetzen ist, wird das an einem einfachen Beispiel dargestellt:
<p>Bei folgendem Datenflusstask soll die Lookup-Query dynamisch erstellt werden um den Tabellennamen aus einer Paket-Variablen zur Laufzeit zu ermitteln. Der Wert dieser Variablen kann dann z.B. aus der Paketkonfiguration stammen oder er kann in einem ForEach-Container zugewiesen werden um den gleichen Datenfluss mehrmals mit jeweils einer anderen Quell-Tabelle für den Lookup durchzuführen.
<p>&nbsp;
<p>Die Quellabfrage für den hier verwendeten „Lookup Price“ in folgendem Datenflusstask kann wie folgt dynamisiert werden:
<p>&nbsp;
<p><a href="http://www.ixto.de/blog/wp-content/uploads/clip_image001.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://www.ixto.de/blog/wp-content/uploads/clip_image001_thumb.png" width="244" height="188"></a>
<p>&nbsp;
<p>Der Datenflusstask, in dem sich der jeweilige Lookup-Task befindet hat eine Eigenschaft „SqlCommand“ die über eine Expression dynamisiert wird. Also Rechtsklick in den Datenflusstask und „Eigenschaften“ auswählen.
<p>&nbsp;
<p><a href="http://www.ixto.de/blog/wp-content/uploads/clip_image002.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.ixto.de/blog/wp-content/uploads/clip_image002_thumb.png" width="130" height="244"></a>
<p>&nbsp;
<p>Auf die Schaltfläche mit den drei Punkten klicken. Es öffnet sich ein Editor für die Eigenschaften des Datenflusstasks
<p>&nbsp;
<p><a href="http://www.ixto.de/blog/wp-content/uploads/clip_image0031.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://www.ixto.de/blog/wp-content/uploads/clip_image003_thumb1.png" width="244" height="192"></a>
<p>&nbsp;
<p>In dem Eigenschaftenausdrucks-Editor die Eigenschaft [LKP Price].[SqlCommand] auswählen. Hierbei ist „LKP Price“ der Name des jeweiligen Lookups. Es gibt für jeden Lookup in dem Datenflusstask eine solche Eigenschaft. Nach Auswahl der richtigen Eigenschaft den Ausdrucksgenerator öffnen durch Klick auf die Schaltfläche mit den vier Punkten am Ende der Zeile.
<p>&nbsp;
<p><a href="http://www.ixto.de/blog/wp-content/uploads/clip_image004.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://www.ixto.de/blog/wp-content/uploads/clip_image004_thumb.png" width="244" height="219"></a>
<p>&nbsp;
<p>Dort die Abfrage eintragen. Die Variabel @[User::sTable] enthält den entsprechenden Tabellennamen. Die Variabel kann dann zur Laufzeit mit dem gewünschten Wert versehen werden. Lediglich die Metadaten (Anzahl der Columns, die Namen der Columns und deren Datentypen) müssen denen der Tabelle entsprechen, mit deren Metadaten das Paket entwickelt wurde. Sonst würde es zu einem Fehlerabbruch kommen.
<p>&nbsp;
<p>Es wurde gezeigt, wie die Quellabfrage für einen Lookup im Full-Cache-Modus zur Laufzeit angepasst werden kann. Das ging bei SSIS in Versionen vor 2008 so nicht. Vorteile kann diese Vorgehensweise dann bringen, wenn der gleiche Datenfluss mehrmals ausgeführt wird und dann die für die jeweilige Ausführung benötigte Datenmange mittels einer angepassten where-Klausel eingeschränkt werden kann. Eine dynamische Auswahl der verwendeten Tabelle ist wie gezeigt auch sehr leicht möglich und mag in dem einen oder anderen Szenario hilfreich sein.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ixto.de/blog/sql-server-2008/dynamische-lookup-abfrage-im-full-cache-mode-bei-ssis-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SSIS Lookup l&#228;uft im BIDS, schl&#228;gt auf SQL Server aber fehl</title>
		<link>http://www.ixto.de/blog/sql-server-2008/ssis-lookup-luft-im-bids-schlgt-auf-sql-server-aber-fehl/</link>
		<comments>http://www.ixto.de/blog/sql-server-2008/ssis-lookup-luft-im-bids-schlgt-auf-sql-server-aber-fehl/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 20:42:00 +0000</pubDate>
		<dc:creator>Timo Kroll</dc:creator>
				<category><![CDATA[Integration Services 2008]]></category>
		<category><![CDATA[SQL Server 2008]]></category>

		<guid isPermaLink="false">http://www.ixto.de/blog/?p=669</guid>
		<description><![CDATA[Manchmal ist die Fehlersuche bei SSIS Paketen eine aufwendige Angelegenheit. Oft treten neben inhaltlichen Fehlern auch technische Fehler auf. Fehlerquellen sind unterschiedliche Ausführungssprachen, aber auch Unterschiede zwischen den 32-Bit und 64-Bit Implementierungen. Hier hatte ich vor einiger Zeit Probleme bei &#8230; <a href="http://www.ixto.de/blog/sql-server-2008/ssis-lookup-luft-im-bids-schlgt-auf-sql-server-aber-fehl/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p>Manchmal ist die Fehlersuche bei SSIS Paketen eine aufwendige Angelegenheit. Oft treten neben inhaltlichen Fehlern auch technische Fehler auf. Fehlerquellen sind unterschiedliche Ausführungssprachen, aber auch Unterschiede zwischen den 32-Bit und 64-Bit Implementierungen. Hier hatte ich vor einiger Zeit Probleme bei Berechnungen mit Umkehrfunktionen von Sinus und Cosinus. Nun aber ist mir ein weiterer Unterschied aufgefallen, nämlich unterschiedliches Laufzeitverhalten von DTEXEC. EXE und DTSDEBUGHOST.EXE:</p>
<p>&nbsp;</p>
<p><span id="more-669"></span></p>
<p>Eine Suche sollte nicht getroffene Zeilen einfach ausleiten, um diese zu verwerfen. Im BIDS war dies auch überhaupt kein Problem. Als Ziel für die umgeleiteten (ungültigen) Zeilen diente ein Multicast. Das Ausführen auf dem SQL Server führte immer wieder zum Fehler, unabhängig von Sprache und Adressbreite von DTEXEC auf dem Server. Die Fehlermeldung deutete auf einen Fehler beim Input in die Suche hin, was mich erst mal dazu bewog Datentypen in alle möglichen Richtungen zu casten und zu konvertieren, um hier einen Fehler auszuschließen.</p>
<p>&nbsp;</p>
<p>Die Fehlermeldung lautete: Beschreibung: SSIS-Fehlercode &#8216;DTS_E_PROCESSINPUTFAILED&#8217;. Fehler bei der ProcessInput-Methode in der Komponente &#8216;Suche&#8217; (25) mit dem Fehlercode 0&#215;80070057 beim Verarbeiten der Eingabe &#8216;Eingabe der Suche&#8217; (26). Die identifizierte Komponente hat einen Fehler von der ProcessInput-Methode zurückgegeben. Der Fehler ist komponentenspezifisch.</p>
<p>&nbsp;</p>
<p>Nach vielen Tests und ein wenig Recherche im Netz fand ich einen Blogeintrag, der einen ähnlichen Fehler beschreibt (<a href="http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/9de27db3-6bde-4b71-950c-c3031399b45c">http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/9de27db3-6bde-4b71-950c-c3031399b45c</a>).</p>
<p>&nbsp;</p>
<p>Allerdings bezog sich dieser auf die Ausführung als Child bzw. Parent Paket. Nach einem Test wurde jedoch klar: es scheint vergleichbar zu sein.</p>
<p>&nbsp;</p>
<p>Meine Lösung sah dann folgendermaßen aus:</p>
<p>· Den Lookup habe ich so eingestellt, dass ein Nicht-Treffer-Fehler ignoriert wird.</p>
<p>· Dies führt dazu, dass in die Column ein NULL geschrieben wird.</p>
<p>· Mit einem darauffolgenden Bedingten Teilen (Conditional Split) habe ich die Zeilen mit dem NULL in der Column dann rausgeworfen.</p>
<p>&nbsp;</p>
<p>Und siehe da, sowohl im BIDS, als auch auf dem Server läuft das Paket nun ohne Fehler durch. Der Fehler scheint gelegentlich auf 2005 und 2008, 2008 R2 vorzukommen. Ich hatte leider noch keine Gelegenheit auf 2012 zu testen.</p>
<p>&nbsp;</p>
<p>Timo Kroll</p>
<p>Senior Consultant</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ixto.de/blog/sql-server-2008/ssis-lookup-luft-im-bids-schlgt-auf-sql-server-aber-fehl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Master Data Services Installationsprobleme, wenn sich Datenbanken im Offline-Modus befinden</title>
		<link>http://www.ixto.de/blog/sql-server-2008/master-data-services-installationsprobleme-wenn-sich-datenbanken-im-offline-modus-befinden/</link>
		<comments>http://www.ixto.de/blog/sql-server-2008/master-data-services-installationsprobleme-wenn-sich-datenbanken-im-offline-modus-befinden/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 20:40:00 +0000</pubDate>
		<dc:creator>Martin Ihrke</dc:creator>
				<category><![CDATA[SQL Server 2008]]></category>

		<guid isPermaLink="false">http://www.ixto.de/blog/?p=657</guid>
		<description><![CDATA[Wer in die Verlegenheit kommt, die Master Data Services (MDS) des SQL Server 2008 R2 zu installieren, könnte auf ein merkwürdiges Verhalten des Installations-Assistenten stoßen. Das Symptom des Fehlers erscheint in zweierlei Ausführung: &#160; - Beim Anlegen einer neuen MDS-Datenbank &#8230; <a href="http://www.ixto.de/blog/sql-server-2008/master-data-services-installationsprobleme-wenn-sich-datenbanken-im-offline-modus-befinden/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p>Wer in die Verlegenheit kommt, die Master Data Services (MDS) des SQL Server 2008 R2 zu installieren, könnte auf ein merkwürdiges Verhalten des Installations-Assistenten stoßen. Das Symptom des Fehlers erscheint in zweierlei Ausführung: </p>
<p><span id="more-657"></span>
<p>&nbsp;
<p>- Beim Anlegen einer neuen MDS-Datenbank kann man den Konfigurationsdialog zwar bis zum Ende durchklicken, allerdings scheitert der Installationsvorgang an einer ellenlangen, wenig aussagekräftigen .NET-Fehlermeldung, deren genaue Ausprägung ich aus Gründen der Übersichtlichkeit am Ende dieses Beitrages nachreichen werde
<p>&nbsp;
<p><a href="http://www.ixto.de/blog/wp-content/uploads/clip_image0023.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002[3]" border="0" alt="clip_image002[3]" src="http://www.ixto.de/blog/wp-content/uploads/clip_image0023_thumb.jpg" width="244" height="177"></a>
<p>&nbsp;
<p>- Beim Einbinden einer vorhandenen MDS-Datenbank bleibt man beim Auswahl-Dialog der Datenbank auf halber Strecke stecken, da die Auswahlbox deaktiviert bleibt (siehe Screenshot)</p>
<p>&nbsp;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/clip_image0033.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003[3]" border="0" alt="clip_image003[3]" src="http://www.ixto.de/blog/wp-content/uploads/clip_image0033_thumb.png" width="244" height="192"></a></p>
<p>&nbsp;</p>
<p>Nach etwas Recherche habe ich den Grund gefunden: Offensichtlich darf es in der SQL Server Instanz keine Datenbanken geben, die sich im Offline-Modus befinden. Ist das der Fall, scheitern sämtliche Installationsversuche der Master Data Services.
<p>&nbsp;
<p>Abschließend noch mein (nicht ganz überraschender) Lösungsvorschlag: entweder man schaltet betroffende Datenbank vorübergehend in den Online-Modus oder, wenn dies nicht möglich ist, man hängt sie vorübergehend ganz aus der Instanz aus.
<p>&nbsp;
<p>Ob sich das Problem auch im SQL Server 2012 ergibt, konnte ich bisher nicht Erfahrung bringen.
<p>Und hier wie versprochen noch die Fehlermeldung:
<p>&nbsp;
<p><i>Microsoft.MasterDataServices.Configuration.ConfigurationException: Data is Null. This method or property cannot be called on Null values. &#8212;&gt; System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values.</i>
<p><i>at System.Data.SqlClient.SqlBuffer.get_String()</i>
<p><i>at Microsoft.MasterDataServices.Configuration.DatabaseUtilities.GetDatabases(DatabaseServerInformation server)</i>
<p><i>at Microsoft.MasterDataServices.Configuration.Commands.NewMasterDataServicesDatabase.InternalProcessRecord()</i>
<p><i>at Microsoft.MasterDataServices.Configuration.Commands.ConfigurationCmdlet.ProcessRecord()</i>
<p><i>at System.Management.Automation.CommandProcessor.ProcessRecord()</i>
<p><i>&#8212; End of inner exception stack trace &#8212;</i>
<p><i>at Microsoft.MasterDataServices.Configuration.InstanceManager.Execute(Command command)</i>
<p><i>at Microsoft.MasterDataServices.Configuration.InstanceManager.CreateMasterDataServicesDatabase(DatabaseServerInformation serverInformation, DatabaseInformation databaseInformation)</i>
<p><i>at Microsoft.MasterDataServices.Configuration.UI.MdsDatabase.CreateNewDatabase()</i></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ixto.de/blog/sql-server-2008/master-data-services-installationsprobleme-wenn-sich-datenbanken-im-offline-modus-befinden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erfahrungsbericht Hochschulprojekt: BI aus der Cloud</title>
		<link>http://www.ixto.de/blog/allgemein/erfahrungbericht-hochschulprojekt-bi-aus-der-cloud/</link>
		<comments>http://www.ixto.de/blog/allgemein/erfahrungbericht-hochschulprojekt-bi-aus-der-cloud/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 14:18:12 +0000</pubDate>
		<dc:creator>Nicolas Welitzki</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[SQL Server 2008]]></category>

		<guid isPermaLink="false">http://www.ixto.de/blog/?p=642</guid>
		<description><![CDATA[Cloud Computing und Business Intelligence sind die Hightech-Themen im Jahre 2012, wobei Cloud Computing in der Branchenumfrage der BITKOM an erster Stelle steht. &#160; Microsoft hat diesen Trend frühzeitig erkannt und betreibt seit November 2008 seine Cloud-Computing-Plattform Windows Azure. Im &#8230; <a href="http://www.ixto.de/blog/allgemein/erfahrungbericht-hochschulprojekt-bi-aus-der-cloud/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p>Cloud Computing und Business Intelligence sind die Hightech-Themen im Jahre 2012, wobei Cloud Computing in der Branchenumfrage der BITKOM an erster Stelle steht.</p>
<p>&nbsp;</p>
<p>Microsoft hat diesen Trend frühzeitig erkannt und betreibt seit November 2008 seine Cloud-Computing-Plattform Windows Azure. Im Rahmen eines akademischen Projektes der Hochschule für Technik und Wirtschaft aus Berlin wurden in Zusammenarbeit mit ixto vom Oktober 2011 bis Januar 2012 die aktuellen Möglichkeiten einer Cloud-driven BI-Lösung auf Basis von Microsoft-Technologien evaluiert.</p>
<p>&nbsp;</p>
<p><span id="more-642"></span></p>
<p><strong>Welche Microsoft-Technologien wurden betrachtet?</strong></p>
<p>&nbsp;</p>
<p>Die Windows Azure Cloud-Service Plattform umfasst drei Dienste:</p>
<p>&nbsp;</p>
<ul>
<li>Windows Azure stellt Rechenkapazität und Speicherplatz zur Verfügung</li>
<li>Microsoft SQL Azure stellt eine relationale Datenbank zur Verfügung</li>
<li>Windows Azure AppFabric stellt Infrasturkturdienste für verteilte Anwendungen zur Verfügung</li>
</ul>
<p>&nbsp;</p>
<p>In diesem Blog Beitrag wird nur auf SQL Azure eingegangen. SQL Azure ist ein Cloud-basierter hochverfügbarer und skalierbarer relationaler Datenbankservice auf Basis der SQL Server-Technologien, der über das Internet erreichbar ist. Der Service SQL Azure Data Sync ermöglicht eine bidirektionale Synchronisation von Daten zwischen SQL Azure und SQL Azure sowie zwischen SQL Azure und SQL Server. Die Bereitstellung von Berichten und Auswertung von Daten ermöglicht der Service SQL Azure Reporting. Für die Betrachtung wurde auch Office 365 mit SharePoint Online sowie Microsoft Excel PowerPivot und Microsoft SharePoint Server mit SQL Server PowerPivot für SharePoint verwendet.</p>
<p>&nbsp;</p>
<p><strong>Was wurde gemacht?</strong></p>
<p>&nbsp;</p>
<p>Mit Hilfe von SQL Azure wurde eine Berichtslösung realisiert. Der lokale Datenbestand wird nach einer definierten Regel mit dem Datenbestand innerhalb der Cloud abgeglichen und gegebenenfalls aktualisiert. Dieser aktuelle Datenbestand ist die Grundlage für die ebenfalls in der Cloud realisierten Berichte, die somit weltweit verfügbar sind.</p>
<p>Kommen wir nun zu den Ergebnissen unserer Arbeit:</p>
<p>&nbsp;</p>
<p><strong>Was waren die Ergebnisse?</strong></p>
<p>&nbsp;</p>
<p>Es wird ein Cloud-basiertes Reporting auf einer einheitlichen Datenbasis ermöglicht. Berichte können über verschiedene Standorte hinweg unabhängig von einer unternehmenseigenen Infrastruktur per Webbrowser abgerufen oder in andere Anwendungen eingebettet werden. Es wird ein Cloud-basiertes Reporting auf einer einheitlichen Datenbasis ermöglicht. Berichte können über verschiedene Standorte hinweg unabhängig von einer unternehmenseigenen Infrastruktur per Webbrowser abgerufen oder in andere Anwendungen eingebettet werden.</p>
<p>Die PowerPivot-Unterstützung im SharePoint Server ermöglicht hingegen die Bereitstellung von voll funktionstüchtigen PowerPivot-Reports über die SharePoint-Plattform. SQL Azure Reporting stellt mit dem Reporting Portal eine Cloud-driven Berichterstellung zur Verfügung. Wir konnten Datenbestände synchronisieren, eine Unterstützung von SISS-Paketen und anderer ETL-Funktionalitäten wird es erst in naher Zukunft geben. Zudem fehlt noch eine PowerPivot-Unterstützung in SharePoint Online von Office 365, um Slicer oder Datenschnitten online verstellen zu können. Eine komplette Business Intelligence-Lösung, die alle Komponenten in der Cloud vereint,  ist sind zurzeit noch eingeschränkt umsetzbar.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Wie sicher sind die Daten?</strong></p>
<p>&nbsp;</p>
<p>Die SQL Azure-Firewall verhindert sämtliche Zugriffe auf den SQL Azure-Server, bis zugriffsberichtige Computer auf Grundlage ihrer Ursprungs-IP-Adresse definiert werden. Zusätzlich können zu SQL Azure Datenbanken nur mit SSL verschlüsselte Verbindungen aufgebaut werden.</p>
<p>&nbsp;</p>
<p><strong>Was sind die Vorteile?</strong></p>
<p>&nbsp;</p>
<p>Mit Windows Azure erreichen sie eine weltweite Erreichbarkeit ihrer Berichte bei einer garantierten Verfügbarkeit von 99,9% und unter hohen Sicherheitsvorkehrungen. Unabhängig von der lokalen Infrastruktur können Datenbestände in der Cloud synchronisiert werden. Besonders von Vorteil ist die dynamische Skalierbarkeit der Azure Kapazitäten (Bandbreite und Speicherplatz).</p>
<p>Natürlich dürfen  die Sicherheits- und Datenschutzaspekte nicht außeracht gelassen werden, sondern müssen individuell geklärt werden.</p>
<p>&nbsp;</p>
<p><strong>Ein kurzer Ausblick</strong></p>
<p>&nbsp;</p>
<p>Mit dem SQL Azure Data Explorer wird Cloud-driven ETL-Funktionalität mit Veröffentlichung vom SQL Server 2012 möglich werden. Seit Dezember 2011 kann ein Testzugang vom Data Explorer unter <a href="https://dataexplorer-signup.sqlazurelabs.com/">https://dataexplorer-signup.sqlazurelabs.com/</a>beantragt werden.</p>
<p>Der Data Explorer funktioniert als Client-Anwendung sowie als Cloud-Service und ermöglicht dem Benutzer bei Verwendung einer eigenen Skript-Sprache Daten aus verschiedenen Datenquellen zu laden, konvertieren und anzureichern. Allerdings ist er ohne Workflow-Engine ausgestattet, d.h. ermöglicht keine Automatisierung.</p>
<p>&nbsp;</p>
<p><strong>Zusammenfassung</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="307"><strong>Möglich</strong></td>
<td valign="top" width="307"><strong>Zur Zeit nicht möglich</strong></td>
</tr>
<tr>
<td valign="top" width="307">Cloud-driven relationale Datenbanken</td>
<td valign="top" width="307">Cloud-driven Cubes</td>
</tr>
<tr>
<td valign="top" width="307">Cloud-driven Reporting</td>
<td valign="top" width="307">Cloud-driven ETL und SSIS</td>
</tr>
<tr>
<td valign="top" width="307">PowerPivot im SharePoint Server</td>
<td valign="top" width="307">Cloud-Server in Deutschland auswählen</td>
</tr>
<tr>
<td valign="top" width="307">Cloud-Server Europa wählen (Irland)</td>
<td valign="top" width="307">PowerPivot-Unterstützung in SharePoint Online von</td>
</tr>
<tr>
<td valign="top" width="307">SQL Azure-Firewall und SSL Verschlüsselung</td>
<td valign="top" width="307">Office 365</td>
</tr>
</tbody>
</table>
<p>Wenn Sie interessiert sind an einer Cloud-driven Business Intelligence Lösung oder an den auf Microsoft-basierten Cloud-Services, dann setzen sie sich mit uns in Verbindung.</p>
<p>&nbsp;</p>
<p>Bilder:</p>
<p>&nbsp;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/clip_image002.jpg"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image002" src="http://www.ixto.de/blog/wp-content/uploads/clip_image002_thumb.jpg" alt="clip_image002" width="244" height="114" border="0" /></a></p>
<p>Abbildung des fertig konfigurierten DataSync</p>
<p>&nbsp;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/clip_image004.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image004" src="http://www.ixto.de/blog/wp-content/uploads/clip_image004_thumb.jpg" alt="clip_image004" width="244" height="197" border="0" /></a></p>
<p>Abbildung eines Dashboards zur Demonstration des SQL Azure Reporting bei Verwendung der Contoso Retail Testdaten und der SQL Azure Database mit DataSync</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ixto.de/blog/allgemein/erfahrungbericht-hochschulprojekt-bi-aus-der-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Listen auslesen mit LINQ to SharePoint</title>
		<link>http://www.ixto.de/blog/allgemein/listen-auslesen-mit-linq-to-sharepoint/</link>
		<comments>http://www.ixto.de/blog/allgemein/listen-auslesen-mit-linq-to-sharepoint/#comments</comments>
		<pubDate>Mon, 12 Mar 2012 13:21:28 +0000</pubDate>
		<dc:creator>Phillip Steffen</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://www.ixto.de/blog/?p=633</guid>
		<description><![CDATA[Mit SharePoint 2010 kommt mit LINQ to SharePoint ein neues, hilfreiches Feature hinzu um auf SharePoint Listen zuzugreifen. Um LINQ to SharePoint benutzen zu können muss man sich als erstes die Entity Classes generieren lassen. Zum Generieren der Klassen wird &#8230; <a href="http://www.ixto.de/blog/allgemein/listen-auslesen-mit-linq-to-sharepoint/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Mit SharePoint 2010 kommt mit LINQ to SharePoint ein neues, hilfreiches Feature hinzu um auf SharePoint Listen zuzugreifen.</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Um LINQ to SharePoint benutzen zu können muss man sich als erstes die Entity Classes generieren lassen. Zum Generieren der Klassen wird die SPMetal.exe benutzt, zu finden unter: „C:\Program Files\Common Files\Microsoft Shared\ Web Server Extensions\14\BIN“.</p>
<p> <span id="more-633"></span>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Öffnen Sie die cmd.exe und navigieren Sie zu dem oben angegeben Pfad in dem sich die SPMetal.exe befindet. Anschließend geben Sie den Befehl zum generieren der *.cs Datei ein.</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal"><span style="mso-fareast-language: de; mso-no-proof: yes"><a href="http://www.ixto.de/blog/wp-content/uploads/clip_image0025.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002[5]" border="0" alt="clip_image002[5]" src="http://www.ixto.de/blog/wp-content/uploads/clip_image0025_thumb.png" width="604" height="137"></a></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal"><span style="mso-ansi-language: en-us" lang="EN-US">/web:Site<br />/code:OutputFile<br />/Language:OutputLanguage</span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Nach der Eingabe des Befehls wird die Datei “LINQToSharePoint.cs” im „BIN“ Order generiert.<br /><font face="Calibri"><font style="font-size: 11pt" color="#000000">&nbsp;</font></font></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Jetzt können wir die Datei zu unserem SharePoint-Projekt hinzufügen und benutzen.</p>
<p><span style="mso-fareast-language: de; mso-no-proof: yes"><a href="http://www.ixto.de/blog/wp-content/uploads/clip_image0035.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003[5]" border="0" alt="clip_image003[5]" src="http://www.ixto.de/blog/wp-content/uploads/clip_image0035_thumb.png" width="255" height="385"></a></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Das Testprojekt besteht aus einem einfachen VisualWebpart, einer DAL Klasse und aus der generierten LINQToSharePoint.cs.</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Die DAL Klasse dient zur Kommunikation zwischen SharePoint und dem Webpart. <br />Wenn wir die LINQToSharePoint.cs öffnen sehen wir ganz oben die generierte DataContext Klasse.</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Consolas"><span style="font-family: ; color: ; mso-ansi-language: en-us" lang="EN-US"><font color="#0000ff"><font style="font-size: 8pt">public</font></font></span><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font style="font-size: 8pt"><font color="#000000"> </font><span style="color: "><font color="#0000ff">partial</font></span><font color="#000000"> </font><span style="color: "><font color="#0000ff">class</font></span><font color="#000000"> </font><span style="color: "><font color="#2b91af">LINQToSharePointDataContext</font></span><font color="#000000"> : Microsoft.SharePoint.Linq.</font></font><span style="color: "><font style="font-size: 8pt" color="#2b91af">DataContext</font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">{</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Consolas"><span style="font-family: ; color: ; mso-ansi-language: en-us" lang="EN-US"><font color="#0000ff"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">#region</font></font></span><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font style="font-size: 8pt" color="#000000"> Extensibility Method Definitions</font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">partial</font></span><font color="#000000"> </font><span style="color: "><font color="#0000ff">void</font></span><font color="#000000"> OnCreated();</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; color: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#0000ff"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">#endregion</font></font></font></span><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">public</font></span><font color="#000000"> LINQToSharePointDataContext(</font><span style="color: "><font color="#0000ff">string</font></span><font color="#000000"> requestUrl) :</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">base</font></span><font color="#000000">(requestUrl)</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">.OnCreated();</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">}</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">[Microsoft.SharePoint.Linq.</font></font><font style="font-size: 8pt"><span style="color: "><font color="#2b91af">ListAttribute</font></span><font color="#000000">(Name = </font><span style="color: "><font color="#a31515">"Fruits"</font></span><font color="#000000">)]</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">public</font></span><font color="#000000"> Microsoft.SharePoint.Linq.</font><span style="color: "><font color="#2b91af">EntityList</font></span><font color="#000000">&lt;</font><span style="color: "><font color="#2b91af">FruitsItem</font></span><font color="#000000">&gt; Fruits</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><span style="color: "><font style="font-size: 8pt" color="#0000ff">get</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">return</font></span><font color="#000000"> </font><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">.GetList&lt;</font><span style="color: "><font color="#2b91af">FruitsItem</font></span><font color="#000000">&gt;(</font><span style="color: "><font color="#a31515">&#8220;Fruits&#8221;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Consolas"><font color="#000000"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="font-family: "><font style="font-size: 8pt">}</font></span></font></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: "><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">}</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: "><font face="Consolas"><font style="font-size: 8pt" color="#000000">}</font></font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt" color="#000000">&nbsp;</font></font></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Weiter unten finden wir die Klasse „FruitsItem“ welche eine Zeile in der Fruits Liste darstellt. Diese beinhaltet alle notwendigen Properties um auf die Listeneinträge zuzugreifen.</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><font style="font-size: 8pt">[Microsoft.SharePoint.Linq.</font></font><font style="font-size: 8pt"><span style="color: "><font color="#2b91af">ContentTypeAttribute</font></span><font color="#000000">(Name = </font><span style="color: "><font color="#a31515">"Item"</font></span><font color="#000000">, Id = </font><span style="color: "><font color="#a31515">"0x01"</font></span><font color="#000000">, List = </font><span style="color: "><font color="#a31515">"Fruits"</font></span><font color="#000000">)]</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Consolas"><span style="font-family: ; color: ; mso-ansi-language: en-us" lang="EN-US"><font color="#0000ff"><font style="font-size: 8pt">public</font></font></span><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font style="font-size: 8pt"><font color="#000000"> </font><span style="color: "><font color="#0000ff">partial</font></span><font color="#000000"> </font><span style="color: "><font color="#0000ff">class</font></span><font color="#000000"> </font><span style="color: "><font color="#2b91af">FruitsItem</font></span><font color="#000000"> : </font></font><span style="color: "><font style="font-size: 8pt" color="#2b91af">Item</font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">{</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">private</font></span><font color="#000000"> System.</font><span style="color: "><font color="#2b91af">Nullable</font></span><font color="#000000">&lt;</font><span style="color: "><font color="#0000ff">double</font></span><font color="#000000">&gt; _price;</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">private</font></span><font color="#000000"> System.</font><span style="color: "><font color="#2b91af">Nullable</font></span><font color="#000000">&lt;</font><span style="color: "><font color="#2b91af">Color</font></span><font color="#000000">&gt; _color;</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Consolas"><span style="font-family: ; color: ; mso-ansi-language: en-us" lang="EN-US"><font color="#0000ff"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">#region</font></font></span><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font style="font-size: 8pt" color="#000000"> Extensibility Method Definitions</font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">partial</font></span><font color="#000000"> </font><span style="color: "><font color="#0000ff">void</font></span><font color="#000000"> OnLoaded();</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">partial</font></span><font color="#000000"> </font><span style="color: "><font color="#0000ff">void</font></span><font color="#000000"> OnValidate();</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">partial</font></span><font color="#000000"> </font><span style="color: "><font color="#0000ff">void</font></span><font color="#000000"> OnCreated();</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; color: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#0000ff"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">#endregion</font></font></font></span><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">public</font></span><font color="#000000"> FruitsItem()</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">.OnCreated();</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">}</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">[Microsoft.SharePoint.Linq.</font></font><font style="font-size: 8pt"><span style="color: "><font color="#2b91af">ColumnAttribute</font></span><font color="#000000">(Name = </font><span style="color: "><font color="#a31515">"Price"</font></span><font color="#000000">, Storage = </font><span style="color: "><font color="#a31515">"_price"</font></span><font color="#000000">, FieldType = </font><span style="color: "><font color="#a31515">"Currency"</font></span><font color="#000000">)]</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">public</font></span><font color="#000000"> System.</font><span style="color: "><font color="#2b91af">Nullable</font></span><font color="#000000">&lt;</font><span style="color: "><font color="#0000ff">double</font></span><font color="#000000">&gt; Price</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><span style="color: "><font style="font-size: 8pt" color="#0000ff">get</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">return</font></span><font color="#000000"> </font><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">._price;</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">}</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><span style="color: "><font style="font-size: 8pt" color="#0000ff">set</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">if</font></span><font color="#000000"> ((</font><span style="color: "><font color="#0000ff">value</font></span><font color="#000000"> != </font><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">._price))</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">.OnPropertyChanging(</font><span style="color: "><font color="#a31515">&#8220;Price&#8221;</font></span><font color="#000000">, </font><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">._price);</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">._price = </font><span style="color: "><font color="#0000ff">value</font></span><font color="#000000">;</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">.OnPropertyChanged(</font><span style="color: "><font color="#a31515">&#8220;Price&#8221;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">}</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">}</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">}</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">[Microsoft.SharePoint.Linq.</font></font><font style="font-size: 8pt"><span style="color: "><font color="#2b91af">ColumnAttribute</font></span><font color="#000000">(Name = </font><span style="color: "><font color="#a31515">"Color"</font></span><font color="#000000">, Storage = </font><span style="color: "><font color="#a31515">"_color"</font></span><font color="#000000">, FieldType = </font><span style="color: "><font color="#a31515">"Choice"</font></span><font color="#000000">)]</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">public</font></span><font color="#000000"> System.</font><span style="color: "><font color="#2b91af">Nullable</font></span><font color="#000000">&lt;</font><span style="color: "><font color="#2b91af">Color</font></span><font color="#000000">&gt; Color</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><span style="color: "><font style="font-size: 8pt" color="#0000ff">get</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">return</font></span><font color="#000000"> </font><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">._color;</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">}</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><span style="color: "><font style="font-size: 8pt" color="#0000ff">set</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">if</font></span><font color="#000000"> ((</font><span style="color: "><font color="#0000ff">value</font></span><font color="#000000"> != </font><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">._color))</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">.OnPropertyChanging(</font><span style="color: "><font color="#a31515">&#8220;Color&#8221;</font></span><font color="#000000">, </font><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">._color);</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">._color = </font><span style="color: "><font color="#0000ff">value</font></span><font color="#000000">;</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">this</font></span><font color="#000000">.OnPropertyChanged(</font><span style="color: "><font color="#a31515">&#8220;Color&#8221;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">}</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Consolas"><font color="#000000"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="font-family: "><font style="font-size: 8pt">}</font></span></font></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: "><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">}</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: "><font face="Consolas"><font style="font-size: 8pt" color="#000000">}</font></font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt" color="#000000">&nbsp;</font></font></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Die LINQToSharePointDataContext Klasse benötigen wir zum Auslesen der Listen. Ich habe zum Auslesen eine Methode in der DAL.cs mit dem Namen „GetFruits“ angelegt, in der die LINQToSharePointDataContext Klasse instanziiert wird.</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Consolas"><span style="font-family: "><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span></span><font style="font-size: 8pt"><span style="font-family: ; color: ; mso-ansi-language: en-us" lang="EN-US"><font color="#0000ff">public</font></span></font><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font style="font-size: 8pt"><font color="#000000"> </font><span style="color: "><font color="#2b91af">EntityList</font></span><font color="#000000">&lt;</font><span style="color: "><font color="#2b91af">FruitsItem</font></span><font color="#000000">&gt; GetFruits(</font><span style="color: "><font color="#0000ff">string</font></span><font color="#000000"> server)</font></font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">{</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#2b91af">LINQToSharePointDataContext</font></span><font color="#000000"> data = </font><span style="color: "><font color="#0000ff">new</font></span><font color="#000000"> </font><span style="color: "><font color="#2b91af">LINQToSharePointDataContext</font></span><font color="#000000">(server);</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span><font style="font-size: 8pt"><span style="color: "><font color="#2b91af">EntityList</font></span><font color="#000000">&lt;</font><span style="color: "><font color="#2b91af">FruitsItem</font></span><font color="#000000">&gt; fruitList = data.GetList&lt;</font><span style="color: "><font color="#2b91af">FruitsItem</font></span><font color="#000000">&gt;(</font><span style="color: "><font color="#a31515">&#8220;Fruits&#8221;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Consolas"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><span style="mso-spacerun: yes"><font color="#000000"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span></span><font style="font-size: 8pt"><span style="font-family: ; color: "><font color="#0000ff">return</font></span></font><span style="font-family: "><font style="font-size: 8pt" color="#000000"> fruitList;</font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: "><font face="Consolas"><font color="#000000"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><font style="font-size: 8pt">}</font></font></font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt" color="#000000">&nbsp;</font></font></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Der Rückgabetyp der Methode ist teil der Microsoft.SharePoint.Linq Assembly. Als Listen Element geben wir ein FruitsItem an.</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Wenn wir die LINQToSharePointDataContext Klasse instanziiert haben können wir diese benutzen und die „GetList“ Methode aufrufen. In den spitzen Klammern geben wir an von welchem Typ die Listenelemente sein sollen. In der runden Klammer geben wir die Liste an die ausgelesen werden soll.</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Nach der Ausführung der „data.GetList“ Methode haben wir eine EntityList die mit den Items der Fruits Liste gefüllt ist. </p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">_data ist unsere Instanziierte DAL Klasse. Mit dieser rufen wir die GetFruits Methode auf und bekommen die EntityList mit den Items aus der Fruit Liste zurück.</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: "><font face="Consolas"><font style="font-size: 9.5pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; color: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#008000">//GetFruits</font></font></span><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Consolas"><span style="font-family: ; color: ; mso-ansi-language: en-us" lang="EN-US"><font color="#2b91af"><font style="font-size: 8pt">EntityList</font></font></span><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font style="font-size: 8pt"><font color="#000000">&lt;</font><span style="color: "><font color="#2b91af">FruitsItem</font></span><font color="#000000">&gt; fruitList = _data.GetFruits(_server);</font></font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">&nbsp;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font style="font-size: 8pt" color="#000000">ddlFruits.DataSource = fruitList;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"><font face="Consolas"><font color="#000000"><font style="font-size: 8pt">ddlFruits.DataTextField = </font></font><font style="font-size: 8pt"><span style="color: "><font color="#a31515">&#8220;Title&#8221;</font></span><font color="#000000">;</font></font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: "><font face="Consolas"><font style="font-size: 8pt" color="#000000">ddlFruits.DataBind();</font></font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt" color="#000000">&nbsp;</font></font></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Die EntityList können wir direkt an die DataSource einer DropDownList binden. Das Ergebnis sieht dann wie folgt aus:</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal"><span style="mso-fareast-language: de; mso-no-proof: yes"><a href="http://www.ixto.de/blog/wp-content/uploads/clip_image0045.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004[5]" border="0" alt="clip_image004[5]" src="http://www.ixto.de/blog/wp-content/uploads/clip_image0045_thumb.png" width="389" height="235"></a></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal">Sie sehen also, dass LINQToSharePoint einem sehr viel Arbeit abnehmen kann und man, nachdem man die DataContext Klasse instanziiert hat, eine Liste in nur einer Zeile auslesen kann.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ixto.de/blog/allgemein/listen-auslesen-mit-linq-to-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Surrogate-Keys f&#252;r Parent-Child-Hierarchie mit SSIS erzeugen und Hierarchiestufen ausgeben</title>
		<link>http://www.ixto.de/blog/sql-server-2008/integration-services-2008/surrogate-keys-fr-parent-child-hierarchie-mit-ssis-erzeugen-und-hierarchiestufen-ausgeben/</link>
		<comments>http://www.ixto.de/blog/sql-server-2008/integration-services-2008/surrogate-keys-fr-parent-child-hierarchie-mit-ssis-erzeugen-und-hierarchiestufen-ausgeben/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 09:16:17 +0000</pubDate>
		<dc:creator>Christopher Glomb</dc:creator>
				<category><![CDATA[Integration Services 2008]]></category>

		<guid isPermaLink="false">http://www.ixto.de/blog/?p=587</guid>
		<description><![CDATA[Das folgende Szenario bezieht sich auf die Microsoft Demo-Datenbank AdventureWorks 2008. Diese kann auf http://msftdbprodsamples.codeplex.com/ heruntergeladen werden. Die Umsetzung dieses Beispiels erfolgte mit Visual Studio 2008 und SQL Server 2008. &#160; Ich möchte in diesem Blogbeitrag erklären, wie man Surrogate-Keys &#8230; <a href="http://www.ixto.de/blog/sql-server-2008/integration-services-2008/surrogate-keys-fr-parent-child-hierarchie-mit-ssis-erzeugen-und-hierarchiestufen-ausgeben/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p>Das folgende Szenario bezieht sich auf die Microsoft Demo-Datenbank AdventureWorks 2008. Diese kann auf <a href="http://msftdbprodsamples.codeplex.com/">http://msftdbprodsamples.codeplex.com/</a> heruntergeladen werden. Die Umsetzung dieses Beispiels erfolgte mit Visual Studio 2008 und SQL Server 2008.</p>
<p>&#160;</p>
<p>Ich möchte in diesem Blogbeitrag erklären, wie man Surrogate-Keys für Parent-Child-Hierarchien und die jeweilige Hierarchiestufe des Mitarbeiters anlegen kann. Dabei hilft uns die Angestellten Tabelle der AdventureWorks Datenbank. Diese findet man unter dem Tabellennamen Employee im Schema HumanResources. Der Mitarbeiter wird über die Spalte EmployeeID identifiziert und der Vorgesetzte über die Spalte ManagerID. Angestellte die keinen Vorgesetzten haben, sind mit entsprechender ManagerID auf NULL gesetzt. Dementsprechend ist der/sind die Mitarbeiter der/die keinen Vorgesetzten hat/haben, die höchste Stufe in unserer Organisation (in unserem Fall also der Chef).</p>
<p>&#160;</p>
<p> <span id="more-587"></span>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb.png" width="585" height="287" /></a></p>
<p>&#160;</p>
<p>Wir müssen in unserer Tabelle in der später unsere Daten landen sollen zunächst zwei zusätzliche Spalten einfügen. Das wäre zum einen die Spalte <i>EmployeeBK</i> und <i>ManagerBK</i>. Die Erklärung dazu folgt dann später im Text.</p>
<p>&#160;</p>
<p>Außerdem benötigen wir in unserer Ausgangstabelle (Employee) eine Hilfsspalte (ich habe mich i.F. für istImportiert entschieden (NULL ist zulässig)) mit beliebigen Namen und dem Datentyp bit.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_3.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_3.png" width="585" height="137" /></a></p>
<p>&#160;</p>
<p>Als nächstes müssen wir dafür sorgen, dass alle Werte in dieser neuen Spalte den Wert 0 enthalten. Damit das Ganze gleich in SSIS passiert, ziehen wir uns einen SQL-Task auf unsere Arbeitsfläche und fügen den Befehl <strong>update [HumanResources].[Employee] set istImportiert = 0</strong> ein.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_4.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_4.png" width="600" height="490" /></a></p>
<p>&#160;</p>
<p>Für den nächsten Schritt benötigen wir eine Laufvariable mit dem Datentyp Integer und dem Standardwert 0. Danach legen wir einen for-Schleifencontainer an. Nachdem Ihr die Eigenschaften festgelegt habt, legen wir einen Datenflusstask in den Container.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_5.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_5.png" width="600" height="505" /></a></p>
<p>&#160;</p>
<p>Vorweg schon mal die Ansicht, wie es später in unserem Datenflusstask aussehen wird:</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_6.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_6.png" width="600" height="558" /></a></p>
<p>&#160;</p>
<p>&#160;</p>
<p><b><font size="3">Schritt 1</font></b></p>
<p><strong></strong></p>
<p>Wie üblich brauchen wir zunächst eine Quelle. Entscheidend ist hier natürlich, dass wir neben der ManagerID und der EmployeeID die Abfrage darauf einschränken, dass nur Daten geladen werden, wo der Wert für istImportiert = 0 ist.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_7.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_7.png" width="590" height="616" /></a></p>
<p>&#160;</p>
<p><b><font size="3">Schritt 2</font></b></p>
<p><strong><font size="3"></font></strong></p>
<p>In der Komponente für bedingtes Teilen erfolgt die Überprüfung, welche Daten unsere Wurzelknoten (also unsere Manager mit dem Eintrag null) sind. Alle anderen Mitarbeiter werden als Knoten ausgegeben. </p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_8.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_8.png" width="591" height="351" /></a></p>
<p>&#160;</p>
<p><b><font size="3">Schritt 3</font></b></p>
<p><strong></strong></p>
<p>Wir kümmern uns zunächst um die Mitarbeiter, die unseren Wurzelknoten repräsentieren. Dazu legen wir eine Abgeleitete Spalte mit dem folgenden Ausdruck an: </p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_9.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_9.png" width="600" height="69" /></a></p>
<p>&#160;</p>
<p>Im zweiten Teil von Schritt 3 müssen die anderen Hierarchiestufen überprüft werden. Hierfür legen wir eine Lookup Komponente an und verbinden diese mit der Ausgabe für Knoten aus der Conditional-Split Komponente. Damit wir es später nicht vergessen, ändern wir unter Allgemein die Einstellung wie nicht getroffene Einträge behandelt werden (auf Fehler ignorieren stellen). Unter Verbindung fügen wir ein SQL-Statement ein, das unsere Tabelle abfragt, in der letztendlich unsere Daten landen sollen. Jetzt kommt eine der erwähnten Spalten aus der Einleitung ins Spiel. EmployeeBK enthält später die Mitarbeiternummer welche aus EmployeeID kommt.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_10.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_10.png" width="409" height="392" /></a></p>
<p>&#160;</p>
<p>Wir verknüpfen die ManagerID mit EmployeeBK und lassen uns die EmployeeID (im SQL-Statement umbenannt zu EmployeeParentID) ausgeben. Überall wo wir keinen Treffer haben, wird NULL ausgegeben.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_11.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_11.png" width="600" height="304" /></a></p>
<p>&#160;</p>
<p><b><font size="3">Schritt 4</font></b></p>
<p><strong><font size="3"></font></strong></p>
<p>Mit dem nächsten Conditional Split überprüfen wir, ob EmployeeParentID einen Wert erhalten hat oder nicht. Alle Zeilen für die es einen Treffer gibt, gehen in diesem Beispiel an die Ausgabe &bdquo;Vater gefunden&rdquo;.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_12.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_12.png" width="600" height="354" /></a></p>
<p>&#160;</p>
<p><b><font size="3">Schritt 5</font></b></p>
<p><strong><font size="3"></font></strong></p>
<p>Mit Hilfe einer Union All Komponente verknüpfen wir die eingehenden Zeilen.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_13.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_13.png" width="599" height="587" /></a></p>
<p>&#160;</p>
<p><b><font size="3">Schritt 6</font></b></p>
<p><strong></strong></p>
<p>Über die Multicast Komponente lassen wir uns Kopien des Datasets erzeugen.</p>
<p>&#160;</p>
<p><b><font size="3">Schritt 7</font></b></p>
<p><strong></strong></p>
<p>In der Komponente OLE DB Befehl fügen wir für unsere Quelltabelle Employee ein Update Statement ein.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_14.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_14.png" width="600" height="441" /></a></p>
<p>&#160;</p>
<p>Außerdem muss in den Spaltenzuordnungen EmployeeID mit Param_0 verknüpft werden.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_15.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_15.png" width="598" height="323" /></a></p>
<p>&#160;</p>
<p><b><font size="3">Schritt 8</font></b></p>
<p><strong></strong></p>
<p>Als Erstes betrachten wir die Zuordnungen für unser Ziel (OLE_DST EmployeeNeu). Wie bereits erwähnt, stellt die EmployeeID in unserer Zieltabelle den Surrogate-Key dar. Außerdem muss darauf geachtet werden, dass unsere EmployeeParentID mit der ManagerID verknüpft wird.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_16.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_16.png" width="593" height="548" /></a></p>
<p>&#160;</p>
<p>Da wir uns immer noch im Schleifencontainer befinden, müssen wir im letzten Schritt dafür sorgen, dass kein Durchlauf mehr erfolgt, wenn unsere Laufvariable einen Wert ungleich 0 hat. Wir fügen eine Komponente &bdquo;SQL ausführen&rdquo; (SQL UPDATE Employee) ein (siehe Bild)</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_17.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_17.png" width="365" height="475" /></a></p>
<p>&#160;</p>
<p>und legen folgende Einstellungen fest:</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_18.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_18.png" width="600" height="421" /></a></p>
<p>&#160;</p>
<p>Wenn noch nicht geschehen, muss im ResultSet unsere Laufvariable ausgegeben werden.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_19.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_19.png" width="600" height="113" /></a></p>
<p>&#160;</p>
<p><b><font size="3">Hierarchiestufe</font></b></p>
<p><strong><font size="3"></font></strong></p>
<p>Da ich abschließend wissen möchte, wie viele Vorgesetzte ein Mitarbeiter über sich hat, benötige ich eine zusätzliche Variable, die für jeden Durchlauf des Containers hochgezählt und dann in unsere Zieltabelle weggeschrieben wird. Hierfür lege ich zunächst eine Variable (iHierarchiestufe) mit dem Datentyp integer an (Startwert steht auf 1) und ergänze meine Zieltabelle um die Spalte Hierarchiestufe. Den Wert der Variablen füge ich mit Hilfe der Komponente &bdquo;abgeleitete Spalte&rdquo; in eine neue Spalte ein.</p>
<p> <a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_20.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_20.png" width="607" height="569" /></a>
<p>&#160;</p>
<p>Außerdem muss ich noch das Mapping wie in Schritt 8 beschrieben ergänzen falls nicht schon geschehen. </p>
<p>&#160;</p>
<p>Natürlich muss dem Schleifencontainer noch mitgeteilt werden, dass unsere Variable pro Durchlauf hochgezählt wird (AssignExpression). Die Einstellung dafür bitte dem Bild For-Schleifen-Editor entnehmen.</p>
<p>&#160;</p>
<p>Abschließend schauen wir uns noch das Ergebnis für unsere Zieltabelle &bdquo;EmployeeNeu&rdquo; an. Im ersten Durchlauf finden wir genau einen Mitarbeiter der keinen Vorgesetzten hat. Er steht dementsprechend an erster Stelle in der Hierarchie.</p>
<p>&#160;</p>
<p>Erster Durchlauf:</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_21.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_21.png" width="600" height="74" /></a></p>
<p>&#160;</p>
<p>Im zweiten Durchlauf (zweite Ebene in der Hierarchie) haben wir schon mehr Mitarbeiter getroffen. Die ehemalige EmployeeID aus der Quelltabelle befindet sich nun in der Spalte EmployeeBK. Unter ManagerBK finden wir die zugehörige Kennzeichnung des Vorgesetzten (ManagerID aus der Quelltabelle). Unter ManagerID befindet sich der neu erzeugte Surrogate Key.</p>
<p>&#160;</p>
<p>Zweiter Durchlauf:</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_22.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/8ad168261186_9839/image_thumb_22.png" width="600" height="190" /></a></p>
<p>&#160;</p>
<p>Da alle weiteren Hierarchiestufen nach dem gleichem Schema gefüllt werden, spare ich mir an dieser Stelle die Fotos für die nächsten Durchläufe. Viel Spaß beim Ausprobieren.</p>
<p>&#160;</p>
<p>Wenn ich euch mit dieser Anleitung helfen konnte, ihr weitere Fragen, Anmerkungen, Verbesserungsvorschläge oder Lösungen habt, freue ich mich auf Kommentare!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ixto.de/blog/sql-server-2008/integration-services-2008/surrogate-keys-fr-parent-child-hierarchie-mit-ssis-erzeugen-und-hierarchiestufen-ausgeben/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ExecutionValue beim Execute SQL-Task in SSIS</title>
		<link>http://www.ixto.de/blog/sql-server-2008/integration-services-2008/executionvalue-beim-execute-sql-task-in-ssis-2/</link>
		<comments>http://www.ixto.de/blog/sql-server-2008/integration-services-2008/executionvalue-beim-execute-sql-task-in-ssis-2/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 09:56:18 +0000</pubDate>
		<dc:creator>David Veenhuis</dc:creator>
				<category><![CDATA[Integration Services 2008]]></category>

		<guid isPermaLink="false">http://www.ixto.de/blog/allgemein/executionvalue-beim-execute-sql-task-in-ssis-2/</guid>
		<description><![CDATA[Es gibt einen einfachen Weg um festzustellen, wieviele Zeilen von der Ausführung von SQL-Anweisungen wie DELETE oder UPDATE mit dem Execute-SQL-Task betroffen sind. Dazu kann die ExecutionValue-Property des Execute-SQL-Tasks verwendet werden. Das wird hier am Beispiel einer DELETE-Anweisung vorgestellt. &#160; &#8230; <a href="http://www.ixto.de/blog/sql-server-2008/integration-services-2008/executionvalue-beim-execute-sql-task-in-ssis-2/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt einen einfachen Weg um festzustellen, wieviele Zeilen von der Ausführung von SQL-Anweisungen wie DELETE oder UPDATE mit dem Execute-SQL-Task betroffen sind. Dazu kann die ExecutionValue-Property des Execute-SQL-Tasks verwendet werden. Das wird hier am Beispiel einer DELETE-Anweisung vorgestellt.<span id="more-583"></span></p>
<p>&#160;</p>
<p>Auf die Property kann nicht direkt zugegriffen werden. Stattdessen wird der Property ExecValueVariable eine Package-Variable zugeordnet. In diese wird dann zur Laufzeit des Paketes die Anzahl der Zeilen, die von der ausgeführten SQL-Anweisung betroffen waren, eingetragen. Diese Variable kann im weiteren Package-Ablauf verwendet werden. Für die Anzahl der Zeilen wird eine Int-Variabel verwendet, die in disem Beispiel iExecValue genannt wird.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/ExecutionValue-beim-Execute-SQL-Task-in-_A742/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/ExecutionValue-beim-Execute-SQL-Task-in-_A742/image_thumb.png" width="430" height="107" /></a></p>
<p>&#160;</p>
<p>Als nächstes wird ein Execute-SQL-Task erstellt, der die Beispiel-Tabelle Example mittels einer DELETE-Anweisung leert. Die Tabelle enthält 3 Datensätze und somit erwarten wir die Zahl 3 als Anzahl der betroffenen Zeilen. Im Editor des Tasks wird die Connection ausgewählt und die Anweisung &bdquo;DELETE FROM Example&rdquo; als Direkteingabe eingegeben.</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/ExecutionValue-beim-Execute-SQL-Task-in-_A742/image_3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/ExecutionValue-beim-Execute-SQL-Task-in-_A742/image_thumb_3.png" width="511" height="435" /></a></p>
<p>&#160;</p>
<p>Durch Rechtsklick auf den Task und Auswahl von &bdquo;Eigenschaften&rdquo; wird der Eigenschaften-Editor des Tasks geöffnet. Da wird der Property ExecValueVariable über die Dropdpwn-Liste die vorher angelegte Variabel iExecValue aus. </p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/ExecutionValue-beim-Execute-SQL-Task-in-_A742/image_4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/ExecutionValue-beim-Execute-SQL-Task-in-_A742/image_thumb_4.png" width="337" height="515" /></a></p>
<p>&#160;</p>
<p>Um nach Start des Paketes das Ergebnis zu prüfen, setzen wir einen Breakpoint auf das PostExecute-Ereignis des Tasks (Rechtsklick auf den Task, Haltepunkte bearbeiten wählen und dann den Eintrag für &bdquo;OnPostExecute&rdquo; anhaken). Damit kann direkt nach Ausführung des SQL-Tasks geprüft werden, ob die Variable tatsächlich die gewünschte Anzahl der betroffenen Zeilen enthält.</p>
<p>&#160;</p>
<p>Anschließende wird das Paket ausgeführt. Bei Erreichen des Breakpoints fügen wir über Debuggen-&gt;Fenster-&gt;Überwachungsfenster1. Dort tippen wir in die Namensspalte den Namen unserer Variabel ein. Anschließend sehen wir, dass unsere Variable tatsächlich die Anzahl der von der SQL-Anweisung betroffenen Zeilen enthält:</p>
<p>&#160;</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/ExecutionValue-beim-Execute-SQL-Task-in-_A742/image_5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/ExecutionValue-beim-Execute-SQL-Task-in-_A742/image_thumb_5.png" width="526" height="174" /></a>#</p>
<p>&#160;</p>
<p>Es kann auch eine Stored Procedure aufgerufen werden, die wie in unserem Beispiel eine DELETE-Anweisung ausführt. In der Stored Procedure darf dann nicht SET NOCOUNT ON&rdquo; verwenden, da dann die Zahl der betroffenen Zeilen nicht ermittelt wird.</p>
<p>&#160;</p>
<p>In dem Beispiel kann TRUNCATE nicht verwendet werden, da bei TRUNCATE nicht zeilenweise gelöscht wird, wie bei DELETE. Bei TRUNCATE werden stattdessen die Datenseiten der betroffenen Tabelle deallokiert. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ixto.de/blog/sql-server-2008/integration-services-2008/executionvalue-beim-execute-sql-task-in-ssis-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kostenstellenhierarchie, Kostenartenhierarchie, Profitcenterhierarchie aus SAP ERP im SQL Server auswerten</title>
		<link>http://www.ixto.de/blog/allgemein/kostenstellenhierarchie-kostenartenhierarchie-profitcenterhierarchie-aus-sap-erp-im-sql-server-auswerten/</link>
		<comments>http://www.ixto.de/blog/allgemein/kostenstellenhierarchie-kostenartenhierarchie-profitcenterhierarchie-aus-sap-erp-im-sql-server-auswerten/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 14:55:16 +0000</pubDate>
		<dc:creator>Christopher Glomb</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Kostenartenhierarchie]]></category>
		<category><![CDATA[Kostenstellenhierarchie]]></category>
		<category><![CDATA[Profitcenterhierarchie]]></category>
		<category><![CDATA[SAP ERP im SQL Server]]></category>

		<guid isPermaLink="false">http://www.ixto.de/blog/?p=573</guid>
		<description><![CDATA[In diesem Blogbeitrag möchte ich am Beispiel der Kostenstellengruppen zeigen, wie es möglich ist, die Zusammenhänge von SAP-Datenstrukturen zu erkennen und auf Grundlage dieser Erkenntnisse die Daten so zusammen zu führen, um sie für die Aufbereitung eines Datawarehouse nutzen zu &#8230; <a href="http://www.ixto.de/blog/allgemein/kostenstellenhierarchie-kostenartenhierarchie-profitcenterhierarchie-aus-sap-erp-im-sql-server-auswerten/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><font face="Calibri"><font style="font-size: 11pt"><font size="2" face="Verdana">In diesem Blogbeitrag möchte ich am Beispiel der Kostenstellengruppen zeigen, wie es möglich ist, die Zusammenhänge von SAP-Datenstrukturen zu erkennen und auf Grundlage dieser Erkenntnisse die Daten so zusammen zu führen, um sie für die Aufbereitung eines Datawarehouse nutzen zu können.</font></font>      <span id="more-573"></span>   </font></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify">Vorab exemplarisch die Struktur,<span style="mso-spacerun: yes">&#160; </span>wie in SAP die Darstellung der Kostenstellgruppen aussieht:</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><a href="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_thumb.png" width="211" height="244" /></a></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><span style="mso-fareast-language: de; mso-no-proof: yes"></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify">Zunächst habe ich die betroffenen Tabellen (SETHEADER, SETHEADERT, SETNODE und SETLEAF) in eine SQL Server Datenbank importiert. SETHEADER enthält den Topknoten. Hier erhält man über den Wert in Settype die Information, ob der Oberknoten (parent) weitere Subknoten (childs) besitzt. Ist dies der Fall, signalisiert das der Buchstabe S. Wenn es keine Subknoten gibt, steht für settype ein B. Über den Wert in SETCLASS kann man die Suchergebnisse einschränken. Für die Kostenstellengruppe wählt man 0101, Kostenartengruppen = 0102 und Profit-Center-Gruppen = 0106.</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Calibri"><span style="color: ; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font color="#0000ff">SELECT</font></span><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"> <span style="color: "><font color="#0000ff">DISTINCT</font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Calibri"><span style="color: ; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><span style="mso-spacerun: yes"><font color="#0000ff">&#160;&#160;&#160;&#160;&#160; </font></span></span><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><span style="mso-spacerun: yes">&#160;</span><span style="color: "><font color="#008080">[SAP_SETHEADER]</font></span><span style="color: "><font color="#808080">.</font></span><font color="#008080"><span style="color: ">[MANDT]</span><span style="color: "></span></font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[SAP_SETHEADER]</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SETCLASS]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[SAP_SETHEADER]</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SUBCLASS]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[SAP_SETHEADER]</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SETNAME]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[SETTYPE]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[CREDATE]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[CRETIME]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[UPDUSER]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[UPDDATE]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[UPDTIME]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[SAPRL]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[TABNAME]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[FIELDNAME]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[ROLLNAME]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[DESCRIPT]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#0000ff">FROM</font></span> <span style="color: "><font color="#008080">[sap_demo_cgl]</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[dbo]</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SAP_SETHEADER]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">INNER</font></span> <span style="color: "><font color="#808080">JOIN</font></span> <span style="color: "><font color="#008080">SAP_SETHEADERT</font></span> <span style="color: "><font color="#0000ff">ON</font></span> <span style="color: "><font color="#008080">SAP_SETHEADER</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> <span style="color: "><font color="#008080">SAP_SETHEADERT</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETNAME</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#0000ff">where</font></span> <span style="color: "><font color="#008080">SAP_SETHEADER</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> <span style="color: "><font color="#ff0000">&#8216;C1&#8242;</font></span></font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><span style="line-height: 12pt; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">AND</font></span> <span style="color: "><font color="#008080">SAP_SETHEADER</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETCLASS</font></span> <span style="color: "><font color="#808080">=</font></span> 0101</font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><a href="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_3.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_thumb_3.png" width="550" height="63" /></a></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><span style="mso-fareast-language: de; mso-no-proof: yes"></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify">Anmerkung: Den join auf SETHEADERT führe ich durch, damit ich den genauen Namen der Kostenstellengruppe erhalte.</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify">Möchte man nun mehr über die Subknoten erfahren, begibt man sich mit dem Wert aus Setname in die Tabelle SETNODE.</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><a href="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_4.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_thumb_4.png" width="563" height="384" /></a></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><span style="mso-fareast-language: de; mso-no-proof: yes"></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify">Das Ergebnis zeigt, dass es für diesen Knoten weitere Subknoten (SUBSETNAME) gibt. Man kann nun entweder in die Tabelle SETHEADER gehen und dort überprüfen ob es weitere Subknoten für den SUBSETNAME gibt, oder man ändert einfach den Wert aus der vorherigen Abfrage.</p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font color="#0000ff">SELECT</font></span><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"> <span style="color: "><font color="#0000ff">DISTINCT</font></span> </span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1">&#160;&#160;&#160;&#160;&#160; </span><span style="mso-spacerun: yes">&#160;</span><span style="color: "><font color="#008080">SAP_SETNODE</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[MANDT]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">SAP_SETNODE</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SETCLASS]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">SAP_SETNODE</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SUBCLASS]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">SAP_SETNODE</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SETNAME]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[LINEID]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[SUBSETCLS]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[SUBSETSCLS]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[SUBSETNAME]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[SEQNR]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160;&#160;&#160;&#160;&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">[DESCRIPT]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#0000ff">FROM</font></span> <span style="color: "><font color="#008080">[sap_demo_cgl]</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[dbo]</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SAP_SETNODE]</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">INNER</font></span> <span style="color: "><font color="#808080">JOIN</font></span> <span style="color: "><font color="#008080">SAP_SETHEADERT</font></span> <span style="color: "><font color="#0000ff">ON</font></span> <span style="color: "><font color="#008080">SAP_SETNODE</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> <span style="color: "><font color="#008080">SAP_SETHEADERT</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETNAME</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#0000ff">WHERE</font></span> <span style="color: "><font color="#008080">SAP_SETNODE</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> <span style="color: "><font color="#ff0000">&#8216;C1200&#8242;</font></span></font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><span style="line-height: 12pt; font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">AND</font></span> <span style="color: "><font color="#008080">SAP_SETNODE</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETCLASS</font></span> <span style="color: "><font color="#808080">=</font></span> 0101</font></span><span style="mso-ansi-language: en-us" lang="EN-US"></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><span style="mso-fareast-language: de; mso-no-proof: yes"></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><a href="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_5.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_thumb_5.png" width="543" height="132" /></a></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify">Hat man die letzte Hierarchiestufe erreicht, kann man mit den Wert für SETNAME in der Tabelle SETLEAF alle SETS für die jeweilige Gruppe anzeigen lassen.</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><span style="mso-fareast-language: de; mso-no-proof: yes"></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify">Für einen join auf die Tabelle der Kostenstellenstammsätze (CSKS) verwende ich folgendes Statement:</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><a href="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_thumb_6.png" width="368" height="62" /></a></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><span style="mso-fareast-language: de; mso-no-proof: yes"></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify">Die Kostenartenstammsätze befinden sich übrigens in der Tabelle CSKA und die Profit Center Stammdaten in der Tabelle CEPC.</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify">Mit Hilfe eines Self-Joins kann man sich die Kostenstellenhierarchie auch übersichtlich mittels einer Abfrage anzeigen lassen.</p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><a href="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_7.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_thumb_7.png" width="244" height="222" /></a></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font color="#0000ff"><font style="font-size: 8pt">SELECT</font></font></span><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font style="font-size: 8pt"> <span style="color: "><font color="#0000ff">DISTINCT</font></span> </font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160;&#160; </span><span style="color: "><font color="#008080">Rootknoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SETCLASS]</font></span> <span style="color: "><font color="#0000ff">as</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#008080">Kostenstelle</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">Rootknoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SETNAME]</font></span> <span style="color: "><font color="#0000ff">as</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#008080">KST_Key_Level1</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">Level1Knoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[DESCRIPT]</font></span> <span style="color: "><font color="#0000ff">as</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#008080">KST_Name_Level1</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">Kind_1</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SETNAME]</font></span> <span style="color: "><font color="#0000ff">as</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#008080">KST_Key_Level2</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">Level2Knoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[DESCRIPT]</font></span> <span style="color: "><font color="#0000ff">as</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#008080">KST_Name_Level2</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">Kind_2</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SETNAME]</font></span> <span style="color: "><font color="#0000ff">as</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#008080">KST_Key_Level3</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">Level3Knoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[DESCRIPT]</font></span> <span style="color: "><font color="#0000ff">as</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#008080">KST_Name_Level3</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">Kind_2</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SUBSETNAME]</font></span> <span style="color: "><font color="#0000ff">as</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#008080">KST_Key_Level3</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">Level4Knoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[DESCRIPT]</font></span> <span style="color: "><font color="#0000ff">as</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#008080">KST_Name_Level4</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span></font><span style="color: "><font style="font-size: 8pt" color="#008080">VALFROM</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span></font><span style="color: "><font style="font-size: 8pt" color="#008080">VALTO</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">SAP_CSKS</font></span><span style="color: "><font color="#808080">.</font></span></font><span style="color: "><font style="font-size: 8pt" color="#008080">KOKRS</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-tab-count: 1"><font style="font-size: 8pt">&#160;&#160;&#160;&#160;&#160;&#160; </font></span><font style="font-size: 8pt"><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#808080">,</font></span><span style="color: "><font color="#008080">SAP_CSKS</font></span><span style="color: "><font color="#808080">.</font></span></font><span style="color: "><font style="font-size: 8pt" color="#008080">KOSTL</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; color: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><font style="font-size: 8pt" color="#008080">&#160;</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><span style="mso-spacerun: yes"><font face="Courier New"><font style="font-size: 8pt">&#160;</font></font></span></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">FROM</font></span><span style="mso-spacerun: yes">&#160;&#160; </span><span style="color: "><font color="#008080">[sap_demo_cgl]</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[dbo]</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">[SAP_SETNODE]</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#008080">Rootknoten</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#808080">INNER</font></span> <span style="color: "><font color="#808080">JOIN</font></span> <span style="color: "><font color="#008080">dbo</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SAP_SETNODE</font></span> <span style="color: "><font color="#008080">Kind_1</font></span> <span style="color: "><font color="#0000ff">on</font></span> <span style="color: "><font color="#008080">Rootknoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SUBSETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> <span style="color: "><font color="#008080">Kind_1</font></span><span style="color: "><font color="#808080">.</font></span></font><span style="color: "><font style="font-size: 8pt" color="#008080">SETNAME</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#808080">INNER</font></span> <span style="color: "><font color="#808080">JOIN</font></span> <span style="color: "><font color="#008080">dbo</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SAP_SETNODE</font></span> <span style="color: "><font color="#008080">Kind_2</font></span> <span style="color: "><font color="#0000ff">on</font></span> <span style="color: "><font color="#008080">Kind_1</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SUBSETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> <span style="color: "><font color="#008080">Kind_2</font></span><span style="color: "><font color="#808080">.</font></span></font><span style="color: "><font style="font-size: 8pt" color="#008080">SETNAME</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#808080">INNER</font></span> <span style="color: "><font color="#808080">JOIN</font></span> <span style="color: "><font color="#008080">dbo</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SAP_SETLEAF</font></span><span style="mso-spacerun: yes">&#160; </span><span style="color: "><font color="#0000ff">on</font></span> <span style="color: "><font color="#008080">Kind_2</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SUBSETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> <span style="color: "><font color="#008080">dbo</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SAP_SETLEAF</font></span><span style="color: "><font color="#808080">.</font></span></font><span style="color: "><font style="font-size: 8pt" color="#008080">SETNAME</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#808080">INNER</font></span> <span style="color: "><font color="#808080">JOIN</font></span> <span style="color: "><font color="#008080">dbo</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SAP_SETHEADERT</font></span> <span style="color: "><font color="#008080">Level1Knoten</font></span> <span style="color: "><font color="#0000ff">on</font></span> <span style="color: "><font color="#008080">Rootknoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> <span style="color: "><font color="#008080">Level1Knoten</font></span><span style="color: "><font color="#808080">.</font></span></font><span style="color: "><font style="font-size: 8pt" color="#008080">SETNAME</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#808080">INNER</font></span> <span style="color: "><font color="#808080">JOIN</font></span> <span style="color: "><font color="#008080">dbo</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SAP_SETHEADERT</font></span> <span style="color: "><font color="#008080">Level2Knoten</font></span> <span style="color: "><font color="#0000ff">on</font></span> <span style="color: "><font color="#008080">Kind_1</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> <span style="color: "><font color="#008080">Level2Knoten</font></span><span style="color: "><font color="#808080">.</font></span></font><span style="color: "><font style="font-size: 8pt" color="#008080">SETNAME</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#808080">INNER</font></span> <span style="color: "><font color="#808080">JOIN</font></span> <span style="color: "><font color="#008080">dbo</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SAP_SETHEADERT</font></span> <span style="color: "><font color="#008080">Level3Knoten</font></span> <span style="color: "><font color="#0000ff">on</font></span> <span style="color: "><font color="#008080">Kind_2</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> <span style="color: "><font color="#008080">Level3Knoten</font></span><span style="color: "><font color="#808080">.</font></span></font><span style="color: "><font style="font-size: 8pt" color="#008080">SETNAME</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#808080">INNER</font></span> <span style="color: "><font color="#808080">JOIN</font></span> <span style="color: "><font color="#008080">dbo</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SAP_SETHEADERT</font></span> <span style="color: "><font color="#008080">Level4Knoten</font></span> <span style="color: "><font color="#0000ff">on</font></span> <span style="color: "><font color="#008080">Kind_2</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SUBSETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> <span style="color: "><font color="#008080">Level4Knoten</font></span><span style="color: "><font color="#808080">.</font></span></font><span style="color: "><font style="font-size: 8pt" color="#008080">SETNAME</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#808080">INNER</font></span> <span style="color: "><font color="#808080">JOIN</font></span> <span style="color: "><font color="#008080">dbo</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SAP_CSKS</font></span> <span style="color: "><font color="#0000ff">on</font></span> <span style="color: "><font color="#008080">SAP_CSKS</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">KOSTL</font></span> <span style="color: "><font color="#808080">between</font></span> <span style="color: "><font color="#008080">valfrom</font></span> <span style="color: "><font color="#808080">and</font></span> <span style="color: "><font color="#008080">valto</font></span> </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><span style="mso-spacerun: yes"><font face="Courier New"><font style="font-size: 8pt">&#160;</font></font></span></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#0000ff">WHERE</font></span> </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#008080">Rootknoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">SETNAME</font></span> <span style="color: "><font color="#808080">=</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#ff0000">&#8216;C1&#8242;</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#808080">AND</font></span> <span style="color: "><font color="#008080">Level1Knoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">LANGU</font></span> <span style="color: "><font color="#808080">=</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#ff0000">&#8216;Z&#8217;</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#808080">AND</font></span> <span style="color: "><font color="#008080">Level2Knoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">LANGU</font></span> <span style="color: "><font color="#808080">=</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#ff0000">&#8216;Z&#8217;</font></span></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><font face="Courier New"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span><font style="font-size: 8pt"><span style="color: "><font color="#808080">AND</font></span> <span style="color: "><font color="#008080">Level3Knoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">LANGU</font></span> <span style="color: "><font color="#808080">=</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#ff0000">&#8216;Z&#8217;</font></span></font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><font face="Courier New"><span style="line-height: 9pt; font-family: ; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"><span style="mso-spacerun: yes"><font style="font-size: 8pt">&#160; </font></span></span><font style="font-size: 8pt"><span style="line-height: 9pt; font-family: ; color: ; mso-no-proof: yes"><font color="#808080">AND</font></span></font><span style="line-height: 9pt; font-family: ; mso-no-proof: yes"><font style="font-size: 8pt"> <span style="color: "><font color="#008080">Level4Knoten</font></span><span style="color: "><font color="#808080">.</font></span><span style="color: "><font color="#008080">LANGU</font></span> <span style="color: "><font color="#808080">=</font></span> </font><span style="color: "><font style="font-size: 8pt" color="#ff0000">&#8216;Z&#8217;</font></span></span></font><span style="line-height: 9pt; mso-fareast-language: de; mso-no-proof: yes"></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><span style="mso-fareast-language: de; mso-no-proof: yes"></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify"><a href="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_8.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.ixto.de/blog/wp-content/uploads/Kostenstellenhierarchie-Kostenartenhiera_EC8E/image_thumb_8.png" width="568" height="220" /></a></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify">Hier kann man sehr schön sehen, dass die Kostenstellengruppe C1 (KST_KEY_Level1) die Gruppe C1000 (KST_Key_Level2) enthält, welche u.a. die Gruppen C1200, C1300 und C1400 (KST_Key_Level3) besitzt.<span style="mso-spacerun: yes">&#160; </span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal" align="justify">Ich habe die Description Language eingeschränkt, damit mir die japanischen und russischen Erklärungen nicht angezeigt werden. Beachten Sie bitte, dass eine Kostenstellengruppe mit obiger Abfrage allerdings auch nicht angezeigt wird, wenn die gewählte Sprache für eine Kostenstellengruppe in der Tabelle SETHEADERT nicht vorhanden ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ixto.de/blog/allgemein/kostenstellenhierarchie-kostenartenhierarchie-profitcenterhierarchie-aus-sap-erp-im-sql-server-auswerten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pr&#252;fung auf Nachkommastellen bei Importen (SSIS)</title>
		<link>http://www.ixto.de/blog/allgemein/prfung-auf-nachkommastellen-bei-importen-ssis/</link>
		<comments>http://www.ixto.de/blog/allgemein/prfung-auf-nachkommastellen-bei-importen-ssis/#comments</comments>
		<pubDate>Mon, 30 May 2011 16:07:57 +0000</pubDate>
		<dc:creator>Ricardo Radke</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Integration Services 2005]]></category>
		<category><![CDATA[Integration Services 2008]]></category>

		<guid isPermaLink="false">http://www.ixto.de/blog/?p=549</guid>
		<description><![CDATA[Es gibt Mittel und Wege, Gültigkeitsprüfungen für Gleitkommazahlen innerhalb der Integration Services zu realisieren. Die Überlegungen zum Vorgehen können dabei von einfachen Konvertierungen bis hin zu komplexen Script-Tasks reichen. In diesem Beitrag möchte ich eine Möglichkeit erläutern, die so simpel &#8230; <a href="http://www.ixto.de/blog/allgemein/prfung-auf-nachkommastellen-bei-importen-ssis/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt Mittel und Wege, Gültigkeitsprüfungen für Gleitkommazahlen innerhalb der Integration Services zu realisieren. Die Überlegungen zum Vorgehen können dabei von einfachen Konvertierungen bis hin zu komplexen Script-Tasks reichen.    </p>
<p></br>
<p>In diesem Beitrag möchte ich eine Möglichkeit erläutern, die so simpel ist, dass der ein oder andere vielleicht gar nicht erst daran gedacht hat &#8211; frei nach dem Motto: &bdquo;Ich seh&nbsp;?? den Wald vor lauter Bäumen nicht&rdquo;.    </p>
<p> <span id="more-549"></span> <br /></br>  Nehmen wir an, es handelt sich bei unserer Zahl um einen Prozentwert, dessen Anzahl der Nachkommastellen wir auf 5 begrenzen und im Falle der Überschreitung einen Fehler ausgeben lassen wollen (z.B. wenn die Zielspalte in der Datenbank nicht mehr als 5 zulässt). Dies würde sich zwar mit einfachen Mitteln realisieren lassen, jedoch unter Umständen nicht immer zum gewünschten Ergebnis führen.    </p>
<p></br>Angenommen es handelt sich um den Wert <i>12,12345<b>00 </b></i>- so würden die beiden letzten Nachkommastellen nach &bdquo;Schema-F&rdquo; abgeschnitten und ein Fehler erzeugt werden. Da es sich in diesem Falle aber um das Abschneiden von lediglich zwei nullen handelt und somit der numerische Wert trotzdem unverändert und somit gültig bleibt, muss hier eine andere Lösung her.     </p>
<p></br>
<p>Wie? Ganz einfach! Man vergleiche die Zahl mit sich selbst &#8211; und zwar konvertiert in einen Gleitkommawert mit 5, sowie mit 6 Nachkommastellen. Das ganze könnte dann z.B. so aussehen:    </p>
<p></br><i>(DT_NUMERIC, 10, 5)Wert == (DT_NUMERIC, 10, 6)Wert      <br /></i></p>
<p></br>
<p>Die folgende Abbildung sollte das Prinzip noch einmal veranschaulichen und weitere Erläuterungen überflüssig machen <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smiley" src="http://www.ixto.de/blog/wp-content/uploads/Prfung-auf-Nachkommastellen-bei-Importen_FE03/wlEmoticon-smile.png" />     </p>
<p></br><a href="http://www.ixto.de/blog/wp-content/uploads/Prfung-auf-Nachkommastellen-bei-Importen_FE03/ssis_conversion.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="ssis_conversion" border="0" alt="ssis_conversion" src="http://www.ixto.de/blog/wp-content/uploads/Prfung-auf-Nachkommastellen-bei-Importen_FE03/ssis_conversion_thumb.png" width="494" height="263" /></a></p>
<p></br></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ixto.de/blog/allgemein/prfung-auf-nachkommastellen-bei-importen-ssis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SSIS 2005 Suche-Task &#8211; Wo ist meine Spalte?</title>
		<link>http://www.ixto.de/blog/sql-server-2005/integration-services-2005/ssis-2005-suche-task-wo-ist-meine-spalte/</link>
		<comments>http://www.ixto.de/blog/sql-server-2005/integration-services-2005/ssis-2005-suche-task-wo-ist-meine-spalte/#comments</comments>
		<pubDate>Thu, 21 Apr 2011 09:12:00 +0000</pubDate>
		<dc:creator>Martin Ihrke</dc:creator>
				<category><![CDATA[Integration Services 2005]]></category>

		<guid isPermaLink="false">http://www.ixto.de/blog/?p=531</guid>
		<description><![CDATA[Wenn kleine Buchstaben groß sein sollten Es gibt Bugs, die sind, wenn man sie denn kennt und zu umschiffen weiß, eher amüsant als ärgerlich. Zumeist sind sie längst bekannt und zaubern ein Lächeln ins Gesicht des Eingeweihten, wenn er diesem &#8230; <a href="http://www.ixto.de/blog/sql-server-2005/integration-services-2005/ssis-2005-suche-task-wo-ist-meine-spalte/">Weiterlesen</a>]]></description>
			<content:encoded><![CDATA[<p>Wenn kleine Buchstaben groß sein sollten</p>
<p>Es gibt Bugs, die sind, wenn man sie denn kennt und zu umschiffen weiß, eher amüsant als ärgerlich. Zumeist sind sie längst bekannt und zaubern ein Lächeln ins Gesicht des Eingeweihten, wenn er diesem beim Entwickeln einmal mehr begegnet. Und doch kann es passieren, dass sich ein solcher Bug eben doch nicht überall herumgesprochen hat, was dann oftmals zu Unmut und Verwirrung führt.</p>
<p><span id="more-531"></span></p>
<p>Ein Klassiker dieser Art ist der Suche-Task der Integration Services 2005 in deutscher Sprachversion. Dieser birgt nämlich einen gemeinen Fallstrick, der oft zu wirren ETL-Paketen führt, wenn man auch nur einen einzigen Mausklick vergisst. Der Sachverhalt ist folgender: Nach erfolgter Definition der Spalten-Zuordnungen für die Übereinstimmungsbedingungen und Auswahl der entsprechenden Spalten in der Verweistabelle vergisst der Task anscheinend seine Konfiguration der Spalten, nachdem man die Einstellungen mit OK bestätigt und sich der Dialog schließt. Konkret könnte das Ganze ungefähr so ausschauen:<br />
<a href="http://www.ixto.de/blog/wp-content/uploads/d5a1a692fe72_9D69/clip_image002.jpg"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image002" src="http://www.ixto.de/blog/wp-content/uploads/d5a1a692fe72_9D69/clip_image002_thumb.jpg" border="0" alt="clip_image002" width="223" height="244" /></a></p>
<p>Nach dem Bestätigen verschwindet aber die eben neu hinzugefügte Spalten wie von Geisterhand wieder:</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/d5a1a692fe72_9D69/clip_image004.jpg"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image004" src="http://www.ixto.de/blog/wp-content/uploads/d5a1a692fe72_9D69/clip_image004_thumb.jpg" border="0" alt="clip_image004" width="244" height="233" /></a></p>
<p>Auch nach erneutem Öffnen des Konfigurationsdialogs hat es den Anschein, als wäre hier niemals etwas eingestellt worden. Die eingangs erwähnten wirren ETL-Pakete entstehen nun durch den Workaround, dass man eine oder mehrere Spalten vorher angelegt, etwas durch den Abgeleitete Spalte-Task, und in der Suche diese mit dem nachgeschlagenen Wert überschreibt. Dies funktioniert nämlich anstandslos.</p>
<p>Dabei gibt es einen viel effektiveren Weg, an seine Nachschlage-Spalten zu kommen: ein Mausklick an der richtigen Stelle im Konfigurationsdialog. Der entscheidende Punkt ist nämlich die Dropdown-Box &bdquo;Suchvorgang&rdquo;. Der aufmerksame Entwickler sieht den Unterschied: Hier gibt es die Option &bdquo;Als neue Spalte hinzufügen&rdquo; mit einem großen A an erster Stelle. Die Standard-Auswahl beginnt mit einem kleinen A:</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/d5a1a692fe72_9D69/clip_image006.jpg"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image006" src="http://www.ixto.de/blog/wp-content/uploads/d5a1a692fe72_9D69/clip_image006_thumb.jpg" border="0" alt="clip_image006" width="223" height="244" /></a></p>
<p>Und dies ist auch schon des Rätsels Lösung: wenn man sich nun die einzig auswählbare Option entscheidet, klappt es mit der neuen Spalte ohne Probleme. Offensichtlich haben die Integration Services hier Probleme mit den angebotenen Optionen dieses Dialogs und der erlaubten Auswahl. Ein Blick auf die Metadaten beweist: die neue Spalte ist tatsächlich vorhanden:</p>
<p><a href="http://www.ixto.de/blog/wp-content/uploads/d5a1a692fe72_9D69/clip_image008.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image008" src="http://www.ixto.de/blog/wp-content/uploads/d5a1a692fe72_9D69/clip_image008_thumb.jpg" border="0" alt="clip_image008" width="244" height="216" /></a></p>
<p>Wohlgemerkt betrifft dies unseres Wissens nur SSIS 2005 in deutscher Sprache und könnte durch den ein oder anderen Patch in einigen Versionen auch behoben worden sein. Nichtsdestotrotz begegnen wir immernoch regelmäßig der kritischen Version und auch unter den Entwicklern hat sich das vorgestellte vorgehen noch nicht bis in die hintersten Ecken herumgesprochen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ixto.de/blog/sql-server-2005/integration-services-2005/ssis-2005-suche-task-wo-ist-meine-spalte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

