Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zu Analysis Services verbinden (ADO) (https://www.delphipraxis.net/187003-zu-analysis-services-verbinden-ado.html)

BLin4ik 20. Okt 2015 07:40

Delphi-Version: 5

Zu Analysis Services verbinden (ADO)
 
Hallo,

und zwar habe ich ein Problem, ich möchte mich zu den Analysis Services verbinden
und mir die Datenbanken, Cubes, Dimensionen.. anzeigen lassen.

Ich habe versucht die Connection über die ADO-Komponenten aufzubauen,
funktioniert auch soweit. (TADOConnection)

Aber sobald eine DataSource dran hänge und diese dann öffnen will,
reagiert die Anwendung nicht mehr und stürzt ab.
(Bei Delphi 5 und Delphi 10 Seattle)

Folgendes Beispiel -> LINK

Kann mir einer weiterhelfen ?

baumina 20. Okt 2015 07:54

AW: Zu Analysis Services verbinden (ADO)
 
Eine Datasource wird im Allgemeinen nicht "geöffnet". Was meinst du damit?

BLin4ik 20. Okt 2015 14:23

AW: Zu Analysis Services verbinden (ADO)
 
Hier ein Beispielcode:

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
SI:TSchemaInfo ; i:integer;
begin
 //Select a type of metadata query
 case ComboBox1.ItemIndex of
  0: SI:=siCubes;
  1: SI:=siDimensions;
  2: SI:=siHierarchies;
  3: SI:=siLevels;
  4: SI:=siMeasures;
  5: SI:=siProperties;
  6: SI:=siMembers;
 end;
 //Retrieve results of the metadata query to ADODataSet1
 ADOConnection1.OpenSchema(SI,EmptyParam,
 EmptyParam,ADODataSet1);
 //Open a query result
 ADODataSet1.Open; // HIER KRACHT ES

end;
Und gibt es Beispiele wie man evtl. anders an diese Informationen kommt ?

HolgerX 20. Okt 2015 18:44

AW: Zu Analysis Services verbinden (ADO)
 
Zitat:

Zitat von BLin4ik (Beitrag 1319218)
Hier ein Beispielcode:

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
SI:TSchemaInfo ; i:integer;
begin
 //Select a type of metadata query
 case ComboBox1.ItemIndex of
  0: SI:=siCubes;
  1: SI:=siDimensions;
  2: SI:=siHierarchies;
  3: SI:=siLevels;
  4: SI:=siMeasures;
  5: SI:=siProperties;
  6: SI:=siMembers;
 end;
 //Retrieve results of the metadata query to ADODataSet1
 ADOConnection1.OpenSchema(SI,EmptyParam,
 EmptyParam,ADODataSet1);
 //Open a query result
 ADODataSet1.Open; // HIER KRACHT ES

end;
Und gibt es Beispiele wie man evtl. anders an diese Informationen kommt ?


Mal eine Frage:
Ist im ADODataSet1 nicht schon die Ergebnismenge, sprich das DataSet bereits OPEN?
Denn mit ADOConnection1.OpenSchema werden doch die Daten geholt...

Thomas Horstmann 20. Okt 2015 19:09

AW: Zu Analysis Services verbinden (ADO)
 
[QUOTE=HolgerX;1319252]
Zitat:

Zitat von BLin4ik (Beitrag 1319218)
Hier ein Beispielcode:
Mal eine Frage:
Ist im ADODataSet1 nicht schon die Ergebnismenge, sprich das DataSet bereits OPEN?
Denn mit ADOConnection1.OpenSchema werden doch die Daten geholt...

Ja, das DataSet wir mit OpenSchema automatisch geöffnet.

Delphi-Quellcode:
{ Datenmenge anlegen }
iDataSet := TADODataSet.Create(nil) ;
{ Tabellen holen }
ADOConnection.OpenSchema(siTables,EmptyParam,EmptyParam,iDataSet) ;
{ Felder }
iTypeField  := iDataSet.FieldByName('TABLE_TYPE') ;
iSchemaField := iDataSet.FieldByName('TABLE_SCHEMA') ;
iNameField  := iDataSet.FieldByName('TABLE_NAME') ;
{ Laden }
while iDataSet.Eof = False do
  begin
  ...
  iDataSet.Next ;
  end ;
{ Löschen }
iDataSet.Free ;

HolgerX 20. Okt 2015 19:16

AW: Zu Analysis Services verbinden (ADO)
 
Also wieso braucht BLin4ik dann ein OPEN?
Es genügt doch das DataSet mit einer DataSource zu verlinken und die Datenmenge würde mit einem Grid angezeigt..

So hab ich da mal in einem TestTool zum Inspizieren von Access-Datenbanken und SQL-Server gemacht.. ;)

BLin4ik 21. Okt 2015 07:38

AW: Zu Analysis Services verbinden (ADO)
 
Zitat:

Zitat von HolgerX (Beitrag 1319255)
Also wieso braucht BLin4ik dann ein OPEN?
Es genügt doch das DataSet mit einer DataSource zu verlinken und die Datenmenge würde mit einem Grid angezeigt..

So hab ich da mal in einem TestTool zum Inspizieren von Access-Datenbanken und SQL-Server gemacht.. ;)

Genau das habe ich ja schon versucht, aber es schmiert mir während "Openschema" immer ab. :(

Laut Ereignisanzeige:

Zitat:

Name der fehlerhaften Anwendung: Project1.exe, Version: 0.0.0.0, Zeitstempel: 0x2a425e19
Name des fehlerhaften Moduls: ntdll.dll, Version: 6.1.7601.19018, Zeitstempel: 0x5609fe30
Ausnahmecode: 0xc0000374
Fehleroffset: 0x000ced0b
ID des fehlerhaften Prozesses: 0x1c60
Startzeit der fehlerhaften Anwendung: 0x01d10bcac31485b1
Pfad der fehlerhaften Anwendung: D:\ShareFolder\Project1.exe
Pfad des fehlerhaften Moduls: C:\Windows\SysWOW64\ntdll.dll
Berichtskennung: 02ad1778-77be-11e5-a43b-6c3be538df6b
edit:
Also langsam wird es mysteriös...
beim nächsten Versuch hat es auf einmal geklappt, sogar mit dem
doppelten "Open".

Und nach mehrfachen versuchen klappt es jetzt auch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz