Hallo,
ich verwende einen ASP.Net WebService als DatenQuelle eines Berichts in Reporting Services (SQL Server 2008 R2).
Dieser WebService hat zwei Methoden, wovon die erste eine System.Data.DataTable als Rückgabewert hat und die zweite ein System.Data.DataSet, in der die DataTable aus der ersten Methode als einzige Tabelle enthalten ist. Das ist ein Test, weil ich einen WebService
konsumieren möchte, der eine DataTable liefert, ich es bisher aber nur geschafft habe, ein DataSet zu konsumieren - und da hapert's im Moment noch.
Mit dem DataSet klappt's soweit wunderbar, aber die DataTable ist widerspenstiger als erwartet.
Hier mal das Ergebnis vom Invoke, wenn ich den WebService debugge für die DataSet-Variante:
<?xml version="1.0" encoding="utf-8" ?>
- <DataSet xmlns=http://tempuri.org/>
- <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="dtDataTable">
- <xs:complexType>
- <xs:sequence>
<xs:element name="MyId" type="xs:int" minOccurs="0" />
<xs:element name="MyName" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
- <NewDataSet xmlns="">
- <dtDataTable diffgr:id="dtDataTable1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<MyId>1</MyId>
<MyName>Bezeichnung 1</MyName>
</dtDataTable>
- <dtDataTable diffgr:id="dtDataTable2" msdata:rowOrder="1" diffgr:hasChanges="inserted">
<MyId>2</MyId>
<MyName>Bezeichnung 2</MyName>
</dtDataTable>
- <dtDataTable diffgr:id="dtDataTable3" msdata:rowOrder="2" diffgr:hasChanges="inserted">
<MyId>3</MyId>
<MyName>Bezeichnung 3</MyName>
</dtDataTable>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
Und hier das Ergebnis vom Invoke, wenn ich den WebService debugge für die DataTable-Variante:
<?xml version="1.0" encoding="utf-8" ?>
- <DataTable xmlns="http://tempuri.org/">
- <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="dtDataTable" msdata:UseCurrentLocale="true">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="dtDataTable">
- <xs:complexType>
- <xs:sequence>
<xs:element name="MyId" type="xs:int" minOccurs="0" />
<xs:element name="MyName" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
- <DocumentElement xmlns="">
- <dtDataTable diffgr:id="dtDataTable1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<MyId>1</MyId>
<MyName>Bezeichnung 1</MyName>
</dtDataTable>
- <dtDataTable diffgr:id="dtDataTable2" msdata:rowOrder="1" diffgr:hasChanges="inserted">
<MyId>2</MyId>
<MyName>Bezeichnung 2</MyName>
</dtDataTable>
- <dtDataTable diffgr:id="dtDataTable3" msdata:rowOrder="2" diffgr:hasChanges="inserted">
<MyId>3</MyId>
<MyName>Bezeichnung 3</MyName>
</dtDataTable>
</DocumentElement>
</diffgr:diffgram>
</DataTable>
Hier mein Query für die DataSet-Variante:
<Query>
<SoapAction>http://tempuri.org/GetDataDs</SoapAction>
<Method Namespace="http://mis.mueller.de/" Name="GetDataDs">
</Method>
<ElementPath IgnoreNamespaces="true">
GetDataDsResponse{}/GetDataDsResult{}/diffgram{}/NewDataSet{}/dtDataTable{MyId, MyName}
</ElementPath>
</Query>
Nun dachte ich, ich brauche nur überall GetDataDs durch GetDataDt
zu ersetzen - also die MethodenNamen aus zu tauschen und dann den Teil
/NewDataSet{}
weg zu lassen und alles wäre prima. Aber das funktioniert leider nicht.
Ich hab's auch schon probiert, ohne den Teil weg zu lassen - hat aber auch nicht geklappt.
"Klappt nicht" bedeutet übrigens, dass ich zwar die Spalten im Ergebnis des QueryDesigners angezeigt bekomme, aber nicht die Daten der drei Zeilen, wie beim DataSet.
Hat jemand eine Idee, woran's liegen könnte?
Danke,
Alex