Наверно многие сталкивались с проблемой подключения CSV-файла в качестве DataSet в Delphi.
Предлагаю вам одно из решений данной проблемы. Мы подключим CSV-файла через TADOQuery и построим отчет из этих данных в FastReport VCL.
Создадим проект и добавим следующие компоненты.
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; |
Для подключения к CSV-файлу будем использовать компонент OHLC_Query: TADOQuery.
Настроим его, указав нужную ConnectionString:
1 |
OHLC_Query.ConnectionString :=’Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\;Extended Properties="text;";Persist Security Info=False’
|
Далее вам также нужно будет написать свой Schema.ini файл в соответствии с документацией на веб-сайте Microsoft:
И добавить его в папку проекта.
Разберем на примере нашего демо CSV-файла (EURUSD_200201_200410.csv) , он имеет такую структура:
Данные разделены с помощью символа “;”
Данные представлены в более наглядном виде, они имею 9 столбцов:
Давайте создадим текстовый файл и сохраним его под называние schema.ini
Этот файл должен иметь следующую структуру согласно с документацией на веб-сайте Microsoft:
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 |
Устанавливаем нужные настройки для OHLC_Source и OHLC_DB:
1 2 3 |
OHLC_Source.DataSet := OHLC_Query; OHLC_DB.DataSource := OHLC_Source; OHLC_DB.UserName := 'OHLC'; |
Создаем шаблон и сохраним его под названием DemoCSV.fr3
И подключим DataSet к шаблону
Далее дабавим события ButtonDesignReportClick, ButtonShowReportClick и FormCreate:
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; |
Запустим приложения
При нажатии на кнопку ButtonShowReport строится отчет.
Поздравляем, вы подключили CSV-файла в качестве DataSet в Delphi и постоили отчет из этих данных в FastReport VCL.
Ссылка для скачивания: DemoCSV.zip