Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/27: Рейтинг темы: голосов - 27, средняя оценка - 4.56
zremas
70 / 70 / 6
Регистрация: 19.07.2011
Сообщений: 333
1

Загрузка CSV в ClientDataSet

30.05.2012, 22:09. Просмотров 4907. Ответов 6
Метки нет (Все метки)

Замучился с концепцией ClientDataSet.

Суть простая - открыть CSV файл и прочитать его в ClienTDataSet.
Сделал приложение - в нем читается CSV и загружается в ClientDataSet и показывается в гриде.

Проблема возникает сразу после загрузки: то ему нужен DataSetProvider, то Missing DataSet, если даже указать dtp.
0
Вложения
Тип файла: zip ReadFromCSV.zip (10.1 Кб, 101 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2012, 22:09
Ответы с готовыми решениями:

Загрузка XML-файла в ClientDataSet - Delphi 10 Seattle
Всем доброго времени суток! Ребята, подскажите. Суть вопроса в заголовке. С...

Загрузка данных из XML файла в ClientDataSet (xml как база данных)
Написал обработчик xml по примерам из инета, суть состоит в том чтобы считать...

ClientDataSet
С чем связана ошибка "Access violation at address 509EDA07 in module...

ClientDataSet сортировка
Добрый день, у меня есть ClientDataSet, DbGrid, DataSource. Данные отображаются...

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

6
perepe4a
35 / 67 / 10
Регистрация: 03.02.2012
Сообщений: 362
31.05.2012, 15:51 2
У тебя 3х-звенная архитектура? ЗАчем ты используешь ClientDataSet ?
0
zremas
70 / 70 / 6
Регистрация: 19.07.2011
Сообщений: 333
31.05.2012, 23:36  [ТС] 3
Затем, что надо строить графики для таких файлов

Delphi
1
 ... FieldByName('Field3').AsDateTime := StrToDateTime(FieldVals[2],MySettings); // 2 - вариант, когда читается файл без T и Z (...,2012-04-05 15:50:53.112,...)
в FieldVals[2] - при отладке показывает значение только Datе часть.
В случае применения варианта со StringReplace она полную строку обрабатывает, а тут только первый кусок и спотыкается на Time порции.
0
Вложения
Тип файла: zip ReadFromCSV2.zip (649.8 Кб, 114 просмотров)
Аватар
298 / 219 / 8
Регистрация: 31.05.2012
Сообщений: 520
31.05.2012, 23:50 4
Если есть желание помучиться с ClientDataSet-ом не в 3-звенке, то это можно сделать используя LocalConnection + ADOQuery + DataSetProvider. Можно и с помощью ClientDataSet.CreateDataSet, но тогда инфу в него прийдется ручками запихнуть
0
zremas
70 / 70 / 6
Регистрация: 19.07.2011
Сообщений: 333
01.06.2012, 00:42  [ТС] 5
Цитата Сообщение от Аватар Посмотреть сообщение
Если есть желание помучиться с ClientDataSet-ом не в 3-звенке, то это можно сделать используя LocalConnection + ADOQuery + DataSetProvider. Можно и с помощью ClientDataSet.CreateDataSet, но тогда инфу в него прийдется ручками запихнуть
В атачменте проект полный. Там и исходный файл для чтения лежит.
Суть в том, что там будет 8 файлов по ....100,000 - 200,000 (записей-показателей счетчиков).
Пока я тренируюсь с одним из них. Читаю CSV в ClientDataSet.
По каждому из датасетов надо показать график. Показываю все пока в TDBChart.
100,000 читает и показывает в гриде за 10 сек, потом нудно (35 сек) грузит в чарт и показывает график.
8 чартов по 45 сек хиловато получается, придется подождать пока все графики зальются.

Еще проблема навязалась, не может прочитать в DateTime поле напрямую строковое значение "23/02/2012 13:34:56.305".
0
Аватар
298 / 219 / 8
Регистрация: 31.05.2012
Сообщений: 520
01.06.2012, 23:44 6
Нагородили серьёзно. Следующий код открывает CSV мигом. Для преобразования данных наделайте калькулируемых полей и в OnCalcField заполните их. С TDBChart не подскажу, сами оптимизируйте
Код
ADOQuery.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ReadFromCSV2\;'+
                           'Extended Properties="text;HDR=YES;FMT=Delimited"';
ADOQuery.SQL:='SELECT * FROM TrendMotorFreq.csv';
ADOQuery.Active:=True;
2
zremas
70 / 70 / 6
Регистрация: 19.07.2011
Сообщений: 333
02.06.2012, 06:27  [ТС] 7
Спасибо. Надо с ADO попробовать тоже.

Как я понял из информации в сети эти T и Z - ISO формат даты

В XE2 есть возможность применить функцию ISODateToDateTime. Там эти разделители включены в маску даты. Попробовал - сработало.
файл 100 000 строк читает в среднем 8-10 секунд.
Больше всего времени занимает загрузка в график в TChart - это еще 30-40 секунд в зависимости от мощности машины.
0
02.06.2012, 06:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2012, 06:27

XML и ClientDataSet
Обращаюсь к файлу xml по средством XMLTransformProvider1 -> ClientDataSet1 ->...

Soap-->clientdataset-->DBGrid
странно ведёт себя программа- пока есть едигственный обработчик нажатия на...

ClientDataSet - Дата и время
Привет! Делаю базу данных на Delphi 7 через ClientDataSet.FieldDefs и у меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru