Prawdopodobnie wielu z Was napotkało problem z używaniem pliku CSV jako zestawu danych w Delphi.
Przyjrzyjmy się jednemu z rozwiązań tego problemu. Połączymy plik CSV za pośrednictwem TADOQuery i zbudujemy raport z tych danych w FastReport VCL 6.
Utwórz projekt i dodaj następujące składniki.
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; |
Aby połączyć się z plikiem CSV, użyjemy komponentu OHLC_Query: TADOQuery.
Ustaw go, używając właściwość ConnectionString:
1 |
OHLC_Query.ConnectionString :=’Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\;Extended Properties="text;";Persist Security Info=False’
|
Następnie należy również napisać plik schematu.ini zgodnie z dokumentacją w witrynie firmy Microsoft w sieci Web:
I dodać go do folderu projektu.
Przeanalizujmy przykład naszego pliku DEMO CSV (EURUSD_200201_200410.csv), ma następującą strukturę:
Dane są oddzielone za pomocą ";"
Dane są prezentowane w bardziej wizualnej formie, mają 9 kolumn:
Utwórzmy plik tekstowy i zapiszmy go jako schema.ini
Ten plik powinien mieć następującą strukturę zgodnie z dokumentacją w witrynie firmy Microsoft w sieci Web:
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 |
Ustaw niezbędne konfiguracje OHLC_Source i OHLC_DB:
1 2 3 |
OHLC_Source.DataSet := OHLC_Query; OHLC_DB.DataSource := OHLC_Source; OHLC_DB.UserName := 'OHLC'; |
Tworzenie szablonu i zapisywanie go jako DemoCSV.fr3
I połącz zestaw danych z szablonem
Następnie dodaj buttonDesignReportClick, ButtonShowReportClick i FormCreate wydarzenia:
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; |
Uruchamianie aplikacji
Po kliknięciu przycisku ButtonShowReport zostanie utworzony raport.
Gratulacje, zamieściłeś plik CSV jako zestaw danych w Delphi i zbudowałeś raport z tych danych w FastReport VCL 6!
Link dopobrania: DemoCSV.zip