![]() |
Datenbank: oracle • Version: ? • Zugriff über: delphi XE7
Daten aus OracleDB mit Delphi in csv exportieren
Hi,
ich muss für mein Praktikum einer Schnittstellenapplikation mit Delphi erstellen, um einer CSV-Datei aus selektierten Daten einer Oracle-Datenbank zu erzeugen. * wie kann ich die Verbindung von Delphi zur Oracle-DB erstellen. Läuft das ähnlich wie der Zugriff auf AccessDB mit Hilfe der Komponenten: ADOConnection, ADOQuery und ADODataSet? * Delphi -> In einer Maske muss ich Selektionsparameter abfragen: z.B: Kunde, Tarif, Jahr vlt.: TEdit un/oder TListBox * Ausgabe aus dieser Selektion: Verbrauch * dann, die asugbae in csv mit bestimmten Spalten, wie: Kundennr., Kundenname, Tarif, telnr, verbrauch, zeitraum/datum etc. Hat jemand vlt. ein kleines Beispiel? Es wäre sehr hilfreich... VG blema |
AW: Daten aus OracleDB mit Delphi in csv exportieren
1) Hat die Firma für die Du das machst keine weiteren Informationen, Werkzeuge oder gar Betreuer geliefert? Tolle Praktikumsstelle, ganz ehrlich!
2) Wenn Du XE7 Enterprise hast, dann darfst Du Dich per FireDac mit Oracle verbinden ![]() 3) SQL selects musst Du schon drauf haben, das ist elementar. Hier kanst Du was lernen: ![]() 4) Die Ergebnismenge des Selects lässt sich recht einfach verwerten: Grundsätzlich empfehel ich hier mal reinzuschauen: ![]() Viel Erfolg! Sherlock |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Hi Sherlok,
Zitat:
- als Werkzeug oder Programme: Delphi XE7 Trial Version, Toad for Oracle(Zugriffstool zu Datenanalyse) - Oracle-Client v11 installiert - TNSNAMES.ORA auch in den Ordner reinkopiert, wo der oracle-client installiert ist Zitat:
Danke erstmal... VG blema |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Na, dann muss ja FireDAC mit drin sein.
Mach Dir ein neues VCL-Projekt und leg auf die leere Form folgende Komponetnen ab:
In der Connection gibst Du unter Params zumindest DataBase, UserName und Password an. In der Query musst du die Property Connection auf die TFDConnection, die Du eben eingefügt hast setzen. die Query führt kann per Rechtsklick zum Abfrageeditor, indem Du das SQL eingeben kannst. Zum Programmlauf solltest Du zum passenden Zeitpunkt die Connection herstellen, indem Du die
Delphi-Quellcode:
Methode verwendest. Die Query führst Du per
Online
Delphi-Quellcode:
aus. Auf die Felder eines Ergebnissatzes (also einem Satz aus der Ergebnismenge) kommst Du mit
Open
Delphi-Quellcode:
.
Query.FieldByName('EinDBFeld').asInteger
Das sollte Dir sehr viel helfen. Das CSV ist am Ende nicht weiter schwer, das müsstest Du Dir zusammensuchen können. Sherlock |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Die Komponenten TFDConnection und TFDQuery sind da...
Ich habe deine Anweisungen befolgt, aber es läuft immer noch nicht?!
Zitat:
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
Die schicken dich mit Admin-Rechten auf die Oracle-Datenbank? Au Mann...
Du schriebst, dass die TNSNAMES vorhanden ist: liegt sie auch tatsächlich unter network/ADMIN (oder ähnlich)? Dann solltest du mal da rein schauen und dir die Verbindungsdaten dort herauslesen (bis auf den Benutzer...). Grüße Mikhal |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Jetzt musst Du doch erstmal nur die Query mit nem SQL beglücken. Dann ausführen und Du bekommst Satzweise eine Ergebnismenge. Hier mal ein Ansatz für den csv-Export:
![]() Sherlock |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
Zitat:
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
Aber, danke VG blema |
AW: Daten aus OracleDB mit Delphi in csv exportieren
zu FireDAC kann ich dir nichts sagen, habe hier nur den lokalen Zugriff, müsste ich mir zu Hause anschauen. Ich setze hier UniDAC von Devart ein, ist das Pendant zu FireDac, aber...
Ein guter Anfang wäre ein Doppelklick auf die Komponenten FdConnection. Grüße Mikhal |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
Hi,
der Zugriff auf Oracle-DB funktioniert. Ich habe mit folgende Komponenten hingekriegt:
ich bedanke mich. Jetzt muss ich "nur noch" den csv-Export in Delphi programmieren. Vielen DAnk. VG blema |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Hallo,
ich habe schon par Testdaten aus OraDB in csv exportieren können, aber es fehlt der Spaltenname der Tabelle. kann mir bitte eine dabei helfen.
Delphi-Quellcode:
danke vorab
procedure TForm1.Export_Button2Click(Sender: TObject);
var List: TStringList; SpaltenName : String; DatenFeld: String; I: Integer; begin SpaltenName := ''; List := TStringList.Create; try FDQuery1.First; while not FDQuery1.Eof do begin //SpaltenName := ''; DatenFeld := ''; for I := 0 to FDQuery1.FieldCount - 1 do begin if DatenFeld > '' then DatenFeld := DatenFeld + ''; DatenFeld := DatenFeld + '' + FDQuery1.Fields[I].AsString + ' | '; end; List.Add(DatenFeld); FDQuery1.Next; end; finally List.SaveToFile('C:\Projekte\oraTOcsv.csv'); List.Free; end; end; VG blema |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Hallo,
da ich FD nicht kenne nur ein Schuss ins Blaue.. Gibt es da nicht
Delphi-Quellcode:
Was Dir die Feldname in einer Liste übergibt.
FDQuery1.Fields.GetFieldNames(list: TStrings)
Die Felder könntest Du dann mit ihren Feldname anstatt ihrer Indizes ansprechen. Grüße Klaus |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Die Spaltennamen aber bitte nicht da schreiben, wo dein Kommentar steht, sondern vor der while-Schleife! Evtl geht dann auch ein FDQuery1.Fields[I].Fieldname (kenne FD auch nicht) analog zu deinem bisherigen Code:
Delphi-Quellcode:
for I := 0 to FDQuery1.FieldCount - 1 do
begin if DatenFeld > '' then DatenFeld := DatenFeld + ''; DatenFeld := DatenFeld + '' + FDQuery1.Fields[I].Fieldname + ' | '; end; |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Hi, ich habe gerade das in meinem Programm eingebaut, aber es ist immer noch wie unter #13. Kein Fehler aber auch keine SpaltenName.
Code:
VG blema
var
List: TStringList; bm: TBookmark; SpaltenName : String; DatenFeld: String; I: Integer; begin SpaltenName := ''; List := TStringList.Create; try FDQuery1.First; for I := 0 to FDQuery1.FieldCount - 1 do begin if SpaltenName > '' then SpaltenName := SpaltenName + ''; SpaltenName := SpaltenName + '' + FDQuery1.Fields[I].Fieldname; end; while not FDQuery1.Eof do begin DatenFeld := ''; for I := 0 to FDQuery1.FieldCount - 1 do begin if DatenFeld > '' then DatenFeld := DatenFeld + ''; DatenFeld := DatenFeld + '' + FDQuery1.Fields[I].AsString + ' | '; end; List.Add(DatenFeld); FDQuery1.Next; end; |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Ich hab auf die Schnelle jetzt keinen Fehler gefunden, aber was sollen diese Zeilen denn bewirken, ausser nichts:
Delphi-Quellcode:
if SpaltenName > '' then
SpaltenName := SpaltenName + '';
Delphi-Quellcode:
if DatenFeld > '' then
DatenFeld := DatenFeld + ''; |
AW: Daten aus OracleDB mit Delphi in csv exportieren
ok, bei SpaltenName ist unnötig, aber bei DatenFeld, wenn in einem Feld nichts steht, soll das auch in csv dargestellt werden können!
VG blema |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
Delphi-Quellcode:
Du hängst an Datenfeld einen leeren String an und daher kannst Du Dir das sparen.
if DatenFeld > '' then
DatenFeld := DatenFeld + ''; Und dann kommt die nächste Zeile, welche immer ausgeführt wird.
Delphi-Quellcode:
DatenFeld := DatenFeld + '' + FDQuery1.Fields[I].AsString + ' | ';
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
danke für die Tipps. Die Ausgabe funktioniert zwar nicht so wie es sein soll, aber immerhin es wird sowohl Spaltenname als auch Datenfeld angezeigt.
Delphi-Quellcode:
Also das Problem ist, das: eine Zeile Spaltenname angezeigt und die nächste dann das Datenfeld, usw...und wie kriegt man hin, dass die Breite des Datenfeldes und Spalten-Breite gleich groß sind?
var
List: TStringList; SpaltenName : String; DatenFeld: String; I: Integer; begin SpaltenName := ''; List := TStringList.Create; try FDQuery1.First; SpaltenName := '| '; for I := 0 to FDQuery1.FieldCount -1 do begin SpaltenName := SpaltenName + '' + FDQuery1.Fields[I].Fieldname + ' | '; end; while not FDQuery1.Eof do begin DatenFeld := '| '; for I := 0 to FDQuery1.FieldCount - 1 do begin DatenFeld := DatenFeld + '' + FDQuery1.Fields[I].AsString + ' | '; end; List.Add(SpaltenName); List.Add(DatenFeld); FDQuery1.Next; end; finally List.SaveToFile('C:\Projekte\oraTOcsv.csv'); List.Free; end; end; Besten Dank VG blema |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Hallo,
bei einem csv File ist es nicht zwingend notwendig das die Spalten gleich groß sind. Der Spaltentrenner ist das "," und die Programme (Excel) welche das csv File dann einlesen trennen die Spalten anhand des Spaltetrenners und nich anhand der Spaltengröße. Grüße Klaus |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Hallo Klaus,
ich habe gerade die csv Datei mit Excel geöffnet. Leider werden die Spalten auch nicht getrennt ^^. Es wird die ganze Datei in eine Spalte angezeigt. noch 'n Fehler^^..danke für den Tipp. Aber, dass der Spaltename wiederholt wird, der Fehler ist immer noch drin. VG blema |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Delphi-Quellcode:
Zu Excel,
var
List: TStringList; SpaltenName : String; DatenFeld: String; I: Integer; begin SpaltenName := ''; List := TStringList.Create; try FDQuery1.First; SpaltenName := '| '; for I := 0 to FDQuery1.FieldCount -1 do begin SpaltenName := SpaltenName + '' + FDQuery1.Fields[I].Fieldname + ' | '; end; // List.Add(SpaltenName) hier einfügen while not FDQuery1.Eof do begin DatenFeld := '| '; for I := 0 to FDQuery1.FieldCount - 1 do begin DatenFeld := DatenFeld + '' + FDQuery1.Fields[I].AsString + ' | '; end; List.Add(SpaltenName); // hier entfernen List.Add(DatenFeld); FDQuery1.Next; end; finally List.SaveToFile('C:\Projekte\oraTOcsv.csv'); List.Free; end; end; Excel öffnen, Data Tab öffnen, aus TextDatei importieren. Dann kannst Du in Excel den Spaltetrenner einrichten. '|' ist kein csv Spaltentrenner. Grüße Klaus |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
Zitat:
Zu beachten ist auch: Kein Trennzeichen vor der ersten Spalte Keine Leerzeichen hinzufügen. Denke auch bitte daran, dass Du Strings eventuell auch noch "quoten" und/oder "escapen" musst. |
AW: Daten aus OracleDB mit Delphi in csv exportieren
jo, es klappt. Fehlerhaft war es das Trennzeichen und die Position der Ausgabe von der SpaltenName. Jetzt kann die csv-Datei auch mit Excel problemlos angezeigt werden.
Vielen Dank. VG blema |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
Jetzt muss ich das Programm erweitern mit eine möglichkeit mit Auswahl, z.B:
- die ausgabe mit mehreren Feldern: wie Kundennr. name, ort, tarif, zeitraum, verbrauch für den zeitraum usw. den "select" habe ich schon. Das ist aus mehrere Tabellen. ... Frage: kann man irgendwie mithilfe von DBComboBox einen Filter(Auswahl) aufbauen/zusammenbauen? Vlt. ein Link oder kl. Bspl. Danke VG blema |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
Beispiel:
Dein Programm macht aus dieser Tabelle folgende Ausgabe, wenn das Trennzeichen ',' ist:
Code:
So und nun teste die Ausgabe einmal in Excel.
Spalte1,Spalte2,Spalte3
x1,du,111 x2,er und ich,222 x3,du, er und ich,333 x4,ich,444 |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Hi,
die ausgabe mit dem Trennzeichen:
Code:
; *funktioniert gut und wird in Excel ordnungsgemäß dargestellt
Code:
, *csv-Datei in Excel nur in eine Spalte dargestellt
Code:
hier nochmal mein Prog.:
(#09) oder #09 *csv-Datei in Excel nur in eine Spalte dargestellt
Delphi-Quellcode:
vg blema
var
List: TStringList; SpaltenName : String; DatenFeld: String; I: Integer; begin List := TStringList.Create; try FDQuery1.First; SpaltenName := ''; for I := 0 to FDQuery1.FieldCount -1 do begin SpaltenName := SpaltenName + FDQuery1.Fields[I].Fieldname + #09; end; List.Add(SpaltenName); while not FDQuery1.Eof do begin DatenFeld := ''; for I := 0 to FDQuery1.FieldCount - 1 do begin DatenFeld := DatenFeld + '' + FDQuery1.Fields[I].AsString + #09; end; List.Add(DatenFeld); FDQuery1.Next; end; finally List.SaveToFile('C:\Projekte\oraTOcsv.csv'); List.Free; end; |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
Beim Import in Excel muß als Trennzeichen TAB eingestellt werden. Dann funktioniert es zuverlässig.
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
Es funktioniert nur dann und das mit JEDEM Trennzeichen zuverlässig, wenn die Daten "escaped" werden. |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
Und weil ich trockener workoholic (faul) bin habe ich mir vor "Jahrzehnten" mal überlegt, für welches Zeichen die Wahrscheinlichkeit am höchsten ist, damit ich ohne "escapen" auskomme. Ich kam zum Schluß, dass das TAB-Zeichen innerhalb einer Excel-Zelle nicht vorkommt und damit war die Sache für mich klar. |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
Aber das CSV-Format ist ja nicht Excel vorbehalten, sondern allgemein zur Weitergabe von Daten mehr oder weniger geeignet. |
AW: Daten aus OracleDB mit Delphi in csv exportieren
Zitat:
|
AW: Daten aus OracleDB mit Delphi in csv exportieren
So, und genau das würde bei Dir dann auch passieren, wenn in Deinen Daten, welche Du aus der Datenbank herausliesst das Trennzeichen vorkommt.
Also zum Beispiel, wenn Dein Trennzeichen ',' ist und in Deinen Daten welche Du ausliesst der Text 'Er, du und ich' steht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz