AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Werte aus Oracle Datenbank in Variable auslesen

Werte aus Oracle Datenbank in Variable auslesen

Ein Thema von AnyKey · begonnen am 17. Nov 2009 · letzter Beitrag vom 20. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2   
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#1

Werte aus Oracle Datenbank in Variable auslesen

  Alt 17. Nov 2009, 14:49
Hi,

ich habe folgendes Problem, ich muss aus jeder Zeile in der Datenbank den wert in ein array speichern, um mir später daraus ein XML zusammen zu bauen. Das Problem an der sache ist jetzt dass ich die Werte nicht in mein array bekomme... hoffe es kann mir jemand helfen. -> ich denke mal mit welcher komponente man arbeitet wird relativ egal sein, geht nur um ein allgemeines beispiel.

Deklaration:

Delphi-Quellcode:
    ColumnFeatures: record
      RowsInDB: Integer;
      ColumnName: array of string;
      ColumnSize: array of Integer;
      ColumnType: array of Integer;
hier die stelle aus meinem Code an dem das Auslesen funktioniert:

Delphi-Quellcode:
    OraQuery1.SQL.Clear;
    OraQuery1.SQL.Add('SELECT COUNT (*) FROM '+Tabelle);
    OraQuery1.Active := true;
    ColumnFeatures.RowsInDB := OraQuery1.Fields[0].Value;
    OraQuery1.Active := false;
und hier wo ich eines der arrays befüllen will und immmer Fehlermeldungen bekomme.

Delphi-Quellcode:
 OraQuery1.SQL.Clear;
    OraQuery1.SQL.Add('SELECT TECO_FIELD_NAME FROM '+Tabelle);
    OraQuery1.Active := true;
    OraQuery1.Open;
    for i := 0 to ColumnFeatures.RowsInDB do
    begin
      ColumnFeatures.ColumnName[i] := OraQuery1.Fields[0].Text[i];
    end;
und zwar bekomme ich folgende Fehlermeldung schon beim ersten durchlaufen der Schleife:

Im Projekt ... ist eine Exception der Klasse EAccsessViolation aufgetreten. Meldung: Zugriffsverletzung bei Adresse ... in Modul ...'. Lesen von Adresse 00000000'.


Hoffe es kann mir jemand helfen. Ich habe in der zeile die in der Schleife ist auch schon versucht es über Fields[i].Value zu machen das funktioniert aber auch nicht.

Gruß
AnyKey
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Werte aus Oracle Datenbank in Variable auslesen

  Alt 17. Nov 2009, 14:55
Hast du die Länge der Arrays gesetzt?

Edit: Und die Komponente ist schon interessant, denn so wie es jetzt aussieht kenne ich es nicht. Man läuft eher mit Query.Next durch die Zeilen hindurch.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Werte aus Oracle Datenbank in Variable auslesen

  Alt 18. Nov 2009, 07:31
Hallo,

dein Code sieht in der Tat merkwürdig aus ..

RowsInDB ???
In der DB gibt es keine Rows,
sondern Tabellen.
Eine Tabelle hat dann in der Tat Rows.

Ausserdem benutzt du Active und Open hintereinander,
das ist hier aber das gleiche, also doppelt gemoppelt.

Was willst du eigentlich erreichen ?

ColumnFeatures.ColumnName[i] := OraQuery1.Fields[0].Text[i];

Die Spaltennamen auslesen ?

Was hat das mit RowsInDB zu tun ?

Hat die Tabelle z.B. 10 Felder (Spalten), aber 100 Rows,
geht der Code doch auf jeden Fall schief

Delphi-Quellcode:
for i := 0 to ColumnFeatures.RowsInDB do
    begin
      ColumnFeatures.ColumnName[i] := OraQuery1.Fields[0].Text[i];
    end;
Ausserdem muss es eh ColumnFeatures.RowsInDB-1
heissen, weil du ja mit 0 beginnst.


Schau mal hier
Oracle Metadata


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Werte aus Oracle Datenbank in Variable auslesen

  Alt 18. Nov 2009, 14:13
....Text[i]; ????
Peter Schaible
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#5

Re: Werte aus Oracle Datenbank in Variable auslesen

  Alt 19. Nov 2009, 07:20
Also,

ich habe eine Abfrage auf die Datenbank gemacht, die mir aus einer Bestimmten Tabelle und dort aus einer bestimmten Spalte alle Zeileninhalte holt. Der Name von RowsInDB war falsch... denkt euch einfach es wäre RowsInTable... bei dem Namen hatte ich scheinbar nicht mitgedacht. Soweit ich das jetzt verstanden habe kann man über das OraQuery1.Fields[0] die Werte aus der ersten Abfrage holen. Was ich jetzt machen will/muss ist alle Zeileninhalte die vorher aus der Datenbank geholt wurden in ein Array speichern um später mit ihnen arbeiten zu können, sie sollen später zu einem XML zusammengesetzt werden.

Edit: Also ich hatte dummerweise tatsächlich vergessen die Länge der Arrays anzugeben. Das habe ich nun aber gemacht und
festgestellt dass es immer noch nicht funktioniert.

Gruß
AnyKey
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Werte aus Oracle Datenbank in Variable auslesen

  Alt 19. Nov 2009, 09:06
An Deiner Stelle würde ich mir eine Klasse erstellen, die die benötigten DB-Felder als Properties enthält. Die Objekte dieser Klasse kannst Du dann bequem in einer TObjectList verwalten. Das könnte dann ungefähr so aussehen:
Delphi-Quellcode:
Query.SQL := 'SELECT Feld1, Feld2 FROM Tabelle WHERE Bedingung';
Query.Open;
while not Query.EOF do
  begin
    Objekt := TObjekt.Create;
    Objekt.Property1 := Query.FieldByName('Feld1').Value;
    Objekt.Property2 := Query.FieldByName('Feld2').Value;
    Objektliste.Add(Objekt);
    Query.Next;
  end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#7

Re: Werte aus Oracle Datenbank in Variable auslesen

  Alt 19. Nov 2009, 09:21
Hi,

danke für eure Antworten, ich habs rausgefunden

ich machs jetzt so:

Delphi-Quellcode:
    SetLength(ColumnFeatures.ColumnName,ColumnFeatures.RowsInTable);
    SetLength(ColumnFeatures.ColumnSize,ColumnFeatures.RowsInTable);
    SetLength(ColumnFeatures.ColumnType,ColumnFeatures.RowsInTable);
    OraQuery1.SQL.Add('SELECT TECO_FIELD_NAME FROM '+Tabelle);
    OraQuery1.Active := true;
    for i := 0 to ColumnFeatures.RowsInTable-1 do
    begin
      ColumnFeatures.ColumnName[i] := OraQuery1.Fields[0].Value;
      OraQuery1.Next;
    end;
    OraQuery1.Active := false;
    OraQuery1.SQL.Clear;
So funktioniert es jetzt habe ich nur noch das Problem dass er mir einmal die Zahlen die ich in einer der Abfragen auslese scheinbar irgendwie umsortiert, sie aber genauso bleiben sollen wie sie sind und dass er mein XML nicht erstellt, aus welchen gründen auch immer. Das mit dem auslesen funktioniert jedenfalls, falls jemand zu den anderen Sachen noch eine Idee hat wäre ich für eine Antwort sehr dankbar.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Werte aus Oracle Datenbank in Variable auslesen

  Alt 19. Nov 2009, 10:07
Zitat von AnyKey:
dass er mir einmal die Zahlen die ich in einer der Abfragen auslese scheinbar irgendwie umsortiert
Hast Du denn auch sortiert abgefragt, oder wie stellst Du das fest?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#9

Re: Werte aus Oracle Datenbank in Variable auslesen

  Alt 19. Nov 2009, 10:37
Meine Abfrage sieht folgendermaßen aus:

OraQuery1.SQL.Add('SELECT TECO_FIELD_NAME FROM '+Tabelle);

Da dürfte also nichts sortiert sein, wenn ich allerdings mit dem Array weiter arbeite sind die Inhalte aufeinmal anders als an der stelle an der ich sie ausgelesen hab, hab ich mit dem Debugger überprüft. Also in der XML sind sie dann anders als im Array und die Zahlen sind schon im Array nicht in der Reihenfolge in der sie abgefragt werden.

Naja ansonsten funktioniert alles!

Gruß
AnyKey
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#10

Re: Werte aus Oracle Datenbank in Variable auslesen

  Alt 20. Nov 2009, 07:10
Hi,

ich habe das Problem dass ich diese werte leider auch nicht direkt in der Abfrage sortieren kann, weil es keinen Wert gibt nach dem ich sie sortieren könnte so wie ich sie brauche. Was bedeutet, dass ich sie genau so wie sie aus der Datenbank kommen, also Zeile für Zeile auch weiterverarbeiten muss, ohne dass sie auf irgendeine Art sortiert werden. Wenn mir dabei einer helfen könnte wäre das echt super.

Gruß
AnyKey
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 01:00 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