Autor Beitrag
eraser_seb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41



BeitragVerfasst: Mi 02.06.10 16:40 
Hi Leute ich will den Reporting Web service vom sql server ansprechen über soap.

Quelltext:
ausblenden 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); // <-----Fehlermeldung
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#.

ausblenden volle Höhe 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;

      // Create a custom property for the folder.
      
// ----------Wie sieht das in Delphi aus -------------------
      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 user profile iconNarses: Titel korrigiert.
eraser_seb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41



BeitragVerfasst: Do 03.06.10 10:39 
Niemand eine Idee?
eraser_seb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41



BeitragVerfasst: 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:
ausblenden 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:

ausblenden 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">go.microsoft.com/fwl...k><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&amp;EvtSrc=Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings&amp;EvtID=rsMissingElement&amp;ProdName=Microsoft%20SQL%20Server%20Reporting%20Services&amp;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#.

ausblenden volle Höhe 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;

      // Create a custom property for the folder.
      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