AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADS: Probleme beim Auslesen der system.indexes

ADS: Probleme beim Auslesen der system.indexes

Ein Thema von hsg · begonnen am 14. Dez 2006 · letzter Beitrag vom 15. Dez 2006
Antwort Antwort
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#1

ADS: Probleme beim Auslesen der system.indexes

  Alt 14. Dez 2006, 07:31
Datenbank: ADS • Version: 8.1 • Zugriff über: TADSQuery
Hallo,

ich schreibe mir gerade ein Tool um meine Datenbanken (Advantage Database Server Version 8.1) zu dokumentieren.
Dazu verbinde ich mich mit dem entsprechenden Dictionary und befrage die systems-Tabellen. Das funktioniert soweit auch recht gut.
Nur beim Auslesen der Indizes habe ich auf einmal Schwierigkeiten. Den Namen des Index bekomme ich noch, den eigentlichen Index-Ausdruck nicht mehr, dort liefert mir FieldValues['Index_Expression'] nur noch NULL-Varianten zurück.
Gebe ich die entsprechende Abfrage im ARC32 ein, bekomme ich alle Felder ausgelesen.

Irgendwer eine Idee? Hier nun der Code:

Delphi-Quellcode:
dqInd.Active := False;
dqInd.SQL.Text := 'select * from system.indexes where parent = ' + QuotedStr(dqTab.FieldValues['Name']);
dqInd.Active := True;
dqInd.First();
while not dqInd.Eof do begin
  oFeld := oChild.AddChild('Indizes');
  oFeld.AttributeNodes['Name'].Text := dqInd.FieldValues['Name']; // <- funktioniert noch
  oFeld.AttributeNodes['Expr'].Text := dqInd.FieldValues['Index_Expression']; // <- ab hier bekomme ich nur noch NULL zurück!
  oFeld.AttributeNodes['Cond'].Text := dqInd.FieldValues['Index_Condition'];
  dqInd.Next();
end;
Gruß Jörg
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: ADS: Probleme beim Auslesen der system.indexes

  Alt 14. Dez 2006, 07:54
Hallo Jörg,

ich arbeite zwar nicht mit ADS, aber in der Online Help sollte es ein Kapitel zu den system views geben. Dort würde ich eine Erklärung zu index_expression etc. erwarten. Ein NULL-Wert könnte bedeuten, dass du dort nur für einen funktionsbasierte Index einen Wert erhältst.

Grüße vom marabu
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: ADS: Probleme beim Auslesen der system.indexes

  Alt 14. Dez 2006, 08:22
Wie bereits gesagt: das gleiche SQL-Statement im ADS-Eigenen Data-Archikten abgesetzt hat dort Werte drin stehen.
Ich habe mir eben den entsprechenden Source vom Data-Architekten angeschaut, die prüfen nicht ob es sich zufällig eine System-Tabelle handelt.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
678 Beiträge
 
Delphi 12 Athens
 
#4

Re: ADS: Probleme beim Auslesen der system.indexes

  Alt 14. Dez 2006, 09:16
versuche mal, ob Du anders auf die Felder zugreifen kannst:

  oFeld.AttributeNodes['Expr'].Text := dqInd.FieldByName('Index_Expression').AsString;
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: ADS: Probleme beim Auslesen der system.indexes

  Alt 14. Dez 2006, 09:28
Zitat von joachimd:
versuche mal, ob Du anders auf die Felder zugreifen kannst:

  oFeld.AttributeNodes['Expr'].Text := dqInd.FieldByName('Index_Expression').AsString;
Funktioniert leider auch nicht
Beim Debuggen der Stelle ist in
function TAdsDataSet.GetActiveRecBuf( var pRecBuf: PChar ): Boolean; der pRecBuf zwar vorhanden (also Return ist true) aber leer?!
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: ADS: Probleme beim Auslesen der system.indexes

  Alt 14. Dez 2006, 20:10
Ich kriege auch denselben Fehler. Allerdings ein List Index out of bounds (7). Es sind 12 Felder in der Tabelle und nach dem 7. Feld gibt es den Absturz beim Zugriff auf das Feldarray. Das Dataset hat aber alle Felder....

[edit]
... Und habe auch mit einer alten TAdsDataSet-Version darauf zugegriffen. Die System Views geben die Char-Werte als CICharacter zurück. Dieser Feldtyp ist dann unbekannt und die Fielddef wird nicht addiert. So werden aus 12 Feldern dann 7.

Und so könnte man es umgehen:
SQL-Code:
select name collate ads_default_cs as name,
      index_expression collate ads_default_cs as index_expression
from system.indexes where parent = 'artikel'
[/edit]
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: ADS: Probleme beim Auslesen der system.indexes

  Alt 15. Dez 2006, 06:35
Habe ich gerade ausprobiert, hilft auch nicht.

In den ADS-eigenen Newsgroup habe ich das Thema ebenfalls zur Sprache gebracht, dort ist das scheinbare Fazit, dass es ein Fehler im Zusammenhang mit der BDS2006 zu sein scheint, die gleiche Abfrage unter Delphi 7 funktioniert, in der BDS2006 nicht.

@joachimd: Liest du noch mit? habt ihr den Thread in Advantage.delphi mitverfolgt? Und bei der Gelegenheit: Wann kommt das Weihnachtsgeschenk mit den Code-Beispielen aus dem Delphi-Trainig?
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
678 Beiträge
 
Delphi 12 Athens
 
#8

Re: ADS: Probleme beim Auslesen der system.indexes

  Alt 15. Dez 2006, 07:45
Zitat von hsg:
@joachimd: Liest du noch mit? habt ihr den Thread in Advantage.delphi mitverfolgt? Und bei der Gelegenheit: Wann kommt das Weihnachtsgeschenk mit den Code-Beispielen aus dem Delphi-Trainig?
Ich lese noch mit...Weihnachten ist aber noch nicht
Mein Teil ist fertig, ich warte noch auf Bernd, um einen gemeinsamen Download anbieten zu können,
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: ADS: Probleme beim Auslesen der system.indexes

  Alt 15. Dez 2006, 09:24
So, damit alle es wissen: Das Problem ist gelöst!
In der Datenbank-Connection war kein Benutzername angegeben, nach Eintrages des Datenbankadministrators funktioniert es einwandfrei.

Danke an alle, die sich mit dem Problem beschäftigt haben.

Warum der "Fehler" sich nur bei der Index-Tabelle ausgewirkt hat und dort auch nur ab den Feldern index_expression ist mir nicht klar (ich lese in der Routine das gesamte Dictionary aus, also auch die Tabellenbeschreibung und die Kommentare im Dictionary)

Gruß Jörg
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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