Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   ADO GetFieldnames buggy? (https://www.delphipraxis.net/161047-ado-getfieldnames-buggy.html)

p80286 14. Jun 2011 11:46

Datenbank: oracle • Version: egal • Zugriff über: ADO

ADO GetFieldnames buggy?
 
Hallo zusammen,

Bei dem Versuch GetFieldnames zu nutzen beiße ich auf Granit
Code:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt XXXX.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 77C47FD4 in Modul 'msvcrt.dll'. Lesen von Adresse 00000000' aufgetreten.
---------------------------
Ich habe es mit der AnsiString und der Widestring-Version versucht, der Fehler bleibt der gleiche.

Hier der bisherige (Bastel)Code:
Code:
procedure TDM_EV.Get____(liste:tstrings);
var
  i,j : integer;
  dummyl : twidestrings;
begin
  dummyl:=twidestringlist.Create;
  Liste.clear;
  ADOConnection1.GetTableNames(liste);
  j:=liste.count-1;
  for i:=0 to j do begin
    dummyl.append('Clear');
    dummyl.append('Clear');
    //ADOConnection1.GetFieldnames(liste[i],dummyl);
    ADOConnection1.GetFieldnames('Cases',dummyl);
    //Liste.AddStrings(dummyl);
  end;
  dummyl.free;
end;
Ich bin mir eigentlich keiner Schuld bewußt.
könnt Ihr mi auf die Sprünge helfen?

Gruß
K-H

P.S.
(es handelt sich um D2006)

omata 14. Jun 2011 11:51

AW: ADO GetFieldnames buggy?
 
Zitat:

Zitat von p80286 (Beitrag 1106287)
Code:
: dummyl : twidestrings;
begin
  dummyl:=twidestringlist.Create;
:

twidestrings <> twidestringlist

Edit: Vergiss es, mein Fehler.

Bernhard Geyer 14. Jun 2011 12:44

AW: ADO GetFieldnames buggy?
 
Welcher Provider? Der von MS ist schrott und schon länger abgekündigt und bei Oracle solltest du nach dem letzten Verfügbaren schauen und installieren.

p80286 14. Jun 2011 14:13

AW: ADO GetFieldnames buggy?
 
Es ist der oracle Provider, mal sehen wo ich einen neuen Client herbekomme, leider hab ich da nicht so ganz freie Hand.

Gruß
K-H

jobo 14. Jun 2011 16:54

AW: ADO GetFieldnames buggy?
 
Soweit ich mich erinnere, hakt Dein 9er Oracle OLEDB Provider nicht zum ersten Mal. Gefühlt ist der Schrottlevel beim 9er Client von Oracle eher höher als der von MS.
Falls Ihr Wartung und Support habt, sollte es kein Problem sein, den letzten Patch zum 9er client oder aber direkt den neuesten 11er client als Full oder Instant Client Installtion zu nutzen, lizenztechnisch.
Wenn es nur um Dictionary Infos wie Spaltennamen und -Typen geht, könntest Du Dich direkt dort im Oracle Repository bedienen:
Code:
select * from user_tab_cols where table_name = ..
Entgegen der Repository Bezeichnung findest Du da auch die Spaltennamen von Views. Zugriff geht natürlich nur mit entsprechenden Berechtigungen.

Ziel sollte also der aktuelle Client bleiben.

p80286 14. Jun 2011 17:21

AW: ADO GetFieldnames buggy?
 
Schrottlevel ist gut!

Mir ging's nicht darum die Werte zu holen, da nutze ich z.Zt.
Code:
'select distinct COLUMN_NAME from ALL_COL_COMMENTS where OWNER=:_owner order by COLUMN_NAME';
(comments ist schon richtig!)
sondern einfach die Möglichkeiten der ADO-Schnittstelle auszuloten.

Vielen Dank für Eure Infos!

Gruß
K-H

shmia 14. Jun 2011 18:44

AW: ADO GetFieldnames buggy?
 
Beim Programmieren kann man ja sooo viele Fehler machen.
Deshalb defensiv programmieren und fleissig Asserts einsetzen:
Delphi-Quellcode:
procedure TDM_EV.Get____(liste:tstrings);
var
  i,j : integer;
  dummyl : twidestrings;
begin
  Assert(Assigned(self));
  Assert(Assigned(ADOConnection1));
  Assert(Assigned(liste));
  Assert(ADOConnection1.Connected);

  dummyl:=twidestringlist.Create;
  Liste.clear;
  ADOConnection1.GetTableNames(liste);


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 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