Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Неверная фильтрация, ADO, доступ к текстовым файлам через Jet [D7]


DmitryNekl ©   (2005-08-31 12:06:00) 

Здравствуйте!

Надеюсь на вашу помощь.

Ситуация такая. Есть csv-файл, который грузится в динамически создаваемые ADO-компоненты:

 ADOTable1:=TADOTable.Create(Form1);
 ADOTable1.Name:='ADOTable1';
 ADOTable1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + ExtractFilePath(Application.ExeName) + ';Extended Properties=text;Persist Security Info=False';

 ADOTable1.TableName:='base#csv';

 DataSource1:=TDataSource.Create(Form1);
 DataSource1.Name:='DataSource1';
 DataSource1.DataSet:=ADOTable1;

 DBGrid1:=TDBGrid.Create(Form1);
 DBGrid1.Name:='DBGrid1';
 DBGrid1.Parent:=Form1;
 DBGrid1.Align:=alClient;
 DBGrid1.DataSource:=DataSource1;

 ADOTable1.Active:=True;


Кроме того, используется файл schema.ini:

[base.csv]
ColNameHeader=True
Format=Delimited(;)
MaxScanRows=500
CharacterSet=ANSI
Col1="Col1" Char Width 100
Col2="Col2" Char Width 100
Col3="Col3" Char Width 255
Col4="Col4" Char Width 100
Col5="Col5" Float
Col6="Col6" Char Width 100


В csv-файле 5-ая колонка содержит цифры, как целые, так и дробные. Разделитель пробовал менять (точка или запятая), ничего не меняется, в гриде отображается запятая. Проблема: при выполнении фильтрации


ADOTable1.Filter:='Col5=0,5';
ADOTable1.Filtered:=True;


отображаются данные с Col5=5, а не 0,5.

Подскажите, плз, как решить проблему?


Anatoly Podgoretsky   (2005-09-01 01:01:00) [1]

Фильтры и запросы делаются без учета региональных настроек, используется универсальная нотация, через точку.


Palladin   (2005-08-31 20:52:00) [2]

А чего забавного? Не задумывался, что в Delphi числа-константы с плавающей точкой записываются именно через точку, а не запятую, вне зависимости от региональных настроек


DmitryNekl   (2005-08-31 13:58:00) [3]

Дык поле-то не текстовое... не помогает.
Решил! :) Забавно... в условии фильтрации вместо запятой точку прописал. Все заработало :)


Slym   (2005-08-31 13:28:00) [4]

ADOTable1.Filter:='Col5="0,5"';?


Наверх

Титульная страница Поиск, карта сайта Написать письмо