eraser_seb - Mi 02.06.10 16:40
Titel: mssoap Ole-Object "Typkonflikt"
Hi Leute ich will den Reporting Web service vom sql server ansprechen über soap.
Quelltext:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.Button1Click(Sender: TObject); var soapclient:olevariant; begin try soapclient := createoleobject('MSSOAP.SoapClient'); soapclient.mssoapinit('http://strux/reportserver_sqlexpress/ReportService2005.asmx?wsdl'); soapclient.CreateFolder('/IA_Prov_Reports/YourFolderName','/',null); except on e:exception do begin memo1.Clear; memo1.Lines.Add(e.message); memo1.Lines.Add(soapclient.detail); end; end; |
Also wenn ich den Button klicke kommt folgende Fehlermeldung.
"Typkonflikt
Client:Type conversion failure for element Properties HRESULT=0x80020005"
Ich denke mal das der dritter Parameter falsch angegebn( mit Null )ist von der createfolder Methode.
In der msdn steht das es ein "Property feld sein soll. Das Beispiel ist aus der MSDn in C#.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| using System; using System.Web.Services.Protocols;
class Sample { public static void Main() { ReportingService rs = new ReportingService2005(); rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
Property newProp = new Property(); newProp.Name = "Department"; newProp.Value = "Finance"; Property[] props = new Property[1]; props[0] = newProp; string folderName = "Budget";
try { rs.CreateFolder(folderName, "/", props); Console.WriteLine("Folder created: {0}", folderName); }
catch(SoapException e) { Console.WriteLine(e.Detail.InnerXml); } } } |
Ich hoffe mir kann da jemand helfen.
P.S. Ich benutze leider Delphi 5
Moderiert von
Narses: Titel korrigiert.
eraser_seb - Fr 04.06.10 13:18
Titel: Soap Reportservices Webservices wsdl
Hi leute.
Ich hoffe von euch kennt sich jemand mit dem Webservices von dem Reportingservices aus.
Ich spreche in so an:
Delphi-Quelltext
1: 2: 3: 4:
| soapclient := createoleobject('MSSOAP.SoapClient30'); soapclient.mssoapinit('http://strux/reportserver_sqlexpress/ReportService2005.asmx?wsdl');
v := VarArrayCreate([0,1], varvariant); |
So jetzt kann ich ja mit funcktionen arbeiten die in der sdl drin stehn. wie zum beispiel:
Delphi-Quelltext
1:
| soapclient.CreateFolder('test','/',v); |
der dritte Parameter der createfolder Procedure muss ein "ArrayofProperty" Typ sein.
Die Frage ist, wie setze ich das in Delphi um?
Weil bis jetzt bekomme ich vom Webservic folgende Fehlermeldung:
<detail><ErrorCode xmlns="http://www.microsoft.com/sql/reportingservices">rsMissingElement</ErrorCode><HttpStatus xmlns="http://www.microsoft.com/sql/reportingservices">400</HttpStatus><Message xmlns="http://www.microsoft.com/sql/reportingservices">
Das erforderliche Feld 'Name' fehlt in der Eingabestruktur.</Message><HelpLink
xmlns="http://www.microsoft.com/sql/reportingservices">
http://go.microsoft.com/fwlink/?LinkId=20476&EvtSrc=Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings&EvtID=rsMissingElement&ProdName=Microsoft%20SQL%20Server%20Reporting%20Services&ProdVer=10.0.1600.22</HelpLink><ProductName xmlns="http://www.microsoft.com/sql/reportingservices">Microsoft SQL Server Reporting Services</ProductName><ProductVersion xmlns="http://www.microsoft.com/sql/reportingservices">10.0.1600.22</ProductVersion><ProductLocaleId xmlns="http://www.microsoft.com/sql/reportingservices">127</ProductLocaleId><OperatingSystem xmlns="http://www.microsoft.com/sql/reportingservices">OsIndependent</OperatingSystem><CountryLocaleId xmlns="http://www.microsoft.com/sql/reportingservices">1031</CountryLocaleId><MoreInformation xmlns="http://www.microsoft.com/sql/reportingservices"><Source>ReportingServicesLibrary</Source><Message msrs:ErrorCode="rsMissingElement" msrs:HelpLink="http://go.microsoft.com/fwlink/?LinkId=20476&EvtSrc=Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings&EvtID=rsMissingElement&ProdName=Microsoft%20SQL%20Server%20Reporting%20Services&ProdVer=10.0.1600.22" xmlns:msrs="http://www.microsoft.com/sql/reportingservices">Das erforderliche Feld 'Name' fehlt in der Eingabestruktur.</Message></MoreInformation><Warnings xmlns="http://www.microsoft.com/sql/reportingservices"/></detail>
In der MSDN ist Beispielcode aber halt für VB und c#.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| using System; using System.Web.Services.Protocols;
class Sample { public static void Main() { ReportingService rs = new ReportingService2005(); rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
Property newProp = new Property(); newProp.Name = "Department"; newProp.Value = "Finance"; Property[] props = new Property[1]; props[0] = newProp;
string folderName = "Budget";
try { rs.CreateFolder(folderName, "/", props); Console.WriteLine("Folder created: {0}", folderName); }
catch(SoapException e) { Console.WriteLine(e.Detail.InnerXml); } } } |
[cs]
Wäre echt schön wenn mir jemand helfen kann.
Danke schonmal