How to connect a CSV file as a DataSet in Delphi

2020-05-12

Probably many have encountered the problem of using a CSV file as a DataSet in Delphi.

Let's have a look at  one of the solutions to this problem. We will connect the CSV file via TADOQuery and build a report from this data in FastReport VCL.

Create a project and add the following components.

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;

 

To connect to the CSV file, we will use the OHLC_Query: TADOQuery component.

Set it up by setting the ConnectionString property:

1
OHLC_Query.ConnectionString :=’Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\;Extended Properties="text;";Persist Security Info=False

Next, you will also need to write your Schema.ini file in accordance with the documentation on the Microsoft website:

https://docs.microsoft.com/en-us/sql/odbc/microsoft/schema-ini-file-text-file-driver?view=sql-server-ver15

And add it to the project folder.

Let's analyze the example of our demo CSV file (EURUSD_200201_200410.csv), it has the following structure:

Data is separated using the “;”

The data is presented in a more visual form, they have 9 columns:

Let's create a text file and save it as schema.ini

This file should have the following structure according to the documentation on the Microsoft website:

https://docs.microsoft.com/en-us/sql/odbc/microsoft/schema-ini-file-text-file-driver?view=sql-server-ver15

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

Set the necessary settings for OHLC_Source and OHLC_DB:

1
2
3
OHLC_Source.DataSet := OHLC_Query;
OHLC_DB.DataSource := OHLC_Source;
OHLC_DB.UserName := 'OHLC';

Create a template and save it as DemoCSV.fr3

Design DemoCSV.fr3

And connect the DataSet to the template

   

Next, add the ButtonDesignReportClick, ButtonShowReportClick, and FormCreate events:

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;

Launch applications

When you click on the ButtonShowReport button, a report is built.

Congratulations, you included the CSV file as a DataSet in Delphi and built a report from this data in FastReport VCL!

Download link: DemoCSV.zip

November 20, 2024

Localization and Language Switching in FastReport VCL

FastReport VCL supports 40 languages for interface localization and allows you to change the language on the fly through menus or code, without recompilation.
August 12, 2024

How to build and install the Postgres plugin in FastReport .NET

This article describes how to connect to the database using the FastReport .NET plugin for the report designer from Visual Studio via the NuGet server.
December 11, 2023

New S3 transport (Amazon) in FastReport VCL

In this article, we will look at the new transport in S3 (Amazon) for FastReport VCL, which is an object storage of files and buckets.
Fast Reports
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2024 Fast Reports Inc.