Wahrscheinlich sind viele schon einmal auf das Problem gestoßen, eine CSV-Datei als DataSet in Delphi zu verwenden.
Lassen Sie uns einen Blick auf eine der Lösungen für dieses Problem werfen. Wir werden die CSV-Datei über TADOQuery verbinden und einen Bericht aus diesen Daten in FastReport VCL 6 erstellen.
Erstellen Sie ein Projekt und fügen Sie die folgenden Komponenten hinzu.
1 2 3 4 5 6 7 8 |
OHLC_Query: TADOQuery; OHLC_Source: TDataSource; OHLC_DB: TfrxDBDataset; frxReport1: TfrxReport; frxDesigner1: TfrxDesigner; frxChartObject1: TfrxChartObject; ButtonShowReport: TButton; ButtonDesignReport: TButton; |
Um eine Verbindung zur CSV-Datei herzustellen, verwenden wir die Komponente OHLC_Query: TADOQuery-Komponente.
Richten Sie sie ein, indem Sie die Eigenschaft ConnectionString setzen:
1 |
OHLC_Query.ConnectionString :=’Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\;Extended Properties="text;";Persist Security Info=False’
|
Als Nächstes müssen Sie die Datei "Schema.ini" gemäß der Dokumentation auf der Microsoft-Website erstellen:
Und fügen Sie sie dem Projektordner hinzu.
Analysieren wir das Beispiel unserer Demo-CSV-Datei (EURUSD_200201_200410.csv), sie hat die folgende Struktur:
Die Daten werden mit dem ";" getrennt
Die Daten werden in einer anschaulicheren Form dargestellt, sie haben 9 Spalten:
Erstellen wir eine Textdatei und speichern sie als schema.ini
Diese Datei sollte laut der Dokumentation auf der Microsoft-Website folgenden Aufbau haben:
schema.ini | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[EURUSD_200201_200410.csv] ColNameHeader=True Format=Delimited(;) DecimalSymbol=. TextDelimiter=' CharacterSet=ANSI DateTimeFormat=yyyymmdd Col1=TICKER char Col2=PER integer Col3=DATE date Col4=TIME char Col5=OPEN float Col6=HIGH float Col7=LOW float Col8=CLOSE float Col9=VOL integer |
Nehmen Sie die notwendigen Einstellungen für OHLC_Source und OHLC_DB vor:
1 2 3 |
OHLC_Source.DataSet := OHLC_Query; OHLC_DB.DataSource := OHLC_Source; OHLC_DB.UserName := 'OHLC'; |
Erstellen Sie eine Vorlage und speichern Sie sie als DemoCSV.fr3
Und verbinden Sie das DataSet mit der Vorlage
Als nächstes fügen Sie die Ereignisse ButtonDesignReportClick, ButtonShowReportClick und FormCreate hinzu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
procedure TFormDemoCSV.ButtonDesignReportClick(Sender: TObject); begin frxReport1.DesignReport; end; procedure TFormDemoCSV.ButtonShowReportClick(Sender: TObject); begin frxReport1.ShowReport(); end; procedure TFormDemoCSV.FormCreate(Sender: TObject); begin frxReport1.LoadFromFile('./DemoCSV.fr3') end; |
Anwendungen starten
Wenn Sie auf die Schaltfläche ButtonShowReport klicken, wird ein Bericht erstellt.
Herzlichen Glückwunsch, Sie haben die CSV-Datei als DataSet in Delphi eingebunden und aus diesen Daten einen Bericht in FastReport VCL 6 erstellt!
Download-Link: DemoCSV.zip