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

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

Подскажите метод ;преобразования CSV файла в DBF. [D5, Win95/98]


sasha123 ©   (2002-09-27 08:44:00) 

Все дело в том что то как у меня получается работает очень медленно:
----
StringList.LoadFromFile(CSV файл)
StringGrid.CommaText:=каждая строка StringList"а
а затем уже StringGrid сохраняю построчно в DBF
----
но у меня CSV файл содержит 31000 строк и при работе по такому методу ну уж оччччень тормозит.


sniknik   (2002-09-27 15:30:00) [1]

В смысле обыкновенный? :-))
опять мой глюк. прочитал что пользуются ADO а решил что это ты, почемуто. :-(

разница между Field и FieldByName в том что первый по смещению поле ищет а второй разбирает строку имен находит смещение и вызывает первый метод. и так для каждого поля каждой строки.


sasha123   (2002-09-27 14:28:00) [2]

2ЮЮ: Никаких 31000 строк в StringGrid"е я не создаю. Строка всего одна и служит для разбивки строки StringList"а на колонки.
И неужели такая большая разнница м\у Field и FieldByName.

2sniknik: Весь прикол в том что используется обыкновенный TQuery


sniknik   (2002-09-27 13:59:00) [3]

сорри это меня сглюкнуло :-), проверял оказывается при основном подключении к mdb файлу (родной для джета)
строка подключения была
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:\Base.mdb;Persist Security Info=False
запрос на переброску
SELECT * INTO [dBase IV;DATABASE=D:\].[rrrr#DBF] FROM [Text;DATABASE=D:\].[rrrr#csv]

а когда основное к dbf сделал пошли косяки. еще раз corry.


sniknik   (2002-09-27 13:39:00) [4]

что говорит? может PapamCheck в true стоит. (я на это первым делом нарвался) там в запросе двоеточие стандартно ADO ждет параметр после него.


sasha123   (2002-09-27 13:33:00) [5]

2 shiknik: Чегото не получается.


ЮЮ   (2002-09-27 13:29:00) [6]

Cначала 31000 строк загрузил в StringList, затем создаешь 31000 строк в StringGrid. Да еще FieldByName вместо Fields[]. И ТТable вместо параметрического запроса на вставку записи.
И откуда только тормоза? :-)


sasha123   (2002-09-27 13:17:00) [7]

2 ЮЮ: Ну я чтоб по файлу не бродить загрузил его в StringList. А затем
for (int i=0;i<ptrStringList->Count;i++)
{
ptrSG->Rows[0]->CommaText=ptrStringList->Strings[i];
TWeekOtchet->Insert();
TWeekOtchet->FieldByName("F1")->Value=ptrSG->Cells[0][0];
TWeekOtchet->FieldByName("F2")->Value=ptrSG->Cells[1][0];
TWeekOtchet->FieldByName("F3")->Value=ptrSG->Cells[2][0];
.....
TWeekOtchet->FieldByName("F10")->Value=ptrSG->Cells[9][0];
TWeekOtchet->Post();
}
Вот по такому методу я и работаю.

2 shiknik: Ща SQL буду пробовать.
2 ALL: Большое и толстое спасибо ВСЕМ кто согласился ответить на заданный вопрос.


sniknik   (2002-09-27 11:58:00) [8]

раз ты используеш ADO то можеш перекачать одним запросом почему не используеш?

при подключении через ADO и Jet к Dbf базе запрос к CSV будет выглядеть сл.образом
SELECT * FROM [Text;DATABASE=D:\].[rrrr#csv]
переделать на Select INTO думаю труда не составит?
попробуй.


ЮЮ   (2002-09-27 11:27:00) [9]

Это я не понял? StringGrid - это TStringGrid, или это TStringList так странно назван?


sasha123   (2002-09-27 11:08:00) [10]

2 ЮЮ: Не понял идею.


ЮЮ   (2002-09-27 10:55:00) [11]

>StringGrid.CommaText
StringGrid - это TStringGrid? А он то зачем? Может лучше сначала перекачать, а затем использовать DBGrid?


sasha123   (2002-09-27 10:44:00) [12]

Спасибо за ответы.
Значит DisableControls уменьшило время конвертации на 15%, но это не предел. Например в FoxPro это делается одно командой и работает ну оччччень быстро.
Сейчас смотрю torry.net


Johnny Smith   (2002-09-27 09:58:00) [13]

2V-A-V (27.09.02 09:30)
Да нет BDE никогда не юзаю. В основном ADO и иногда Advanteg.

Извините, я обращался к sasha123 (27.09.02 08:44) :)))
Сам BDE юзал только на заре туманной юности :))))), пока не занялся программированием профессионально.


V-A-V   (2002-09-27 09:30:00) [14]

Да нет BDE никогда не юзаю. В основном ADO и иногда Advanteg.


Johnny Smith   (2002-09-27 09:24:00) [15]

И юзаете при этом BDE?
Могу посоветовать обратиться к www.torry.net за компонентами прямого обращения к *.dbf-файлам (их там несколько). Может, используете какой-нибудь из них в готовом или допишите что-нибудь (формат dbf достаточно прост).
Еще вопрос: какие-либо визуальные компоненты отражают данные, поступающие в *.dbf-файл? Если да, то задизейблите их - поможет.


V-A-V   (2002-09-27 09:21:00) [16]

попробуй взять любой компонент работающий с dbf файлами и пихай при помощи его из стринг-листа строки, но естественно строку
сначала надо разобрать по полям...


Наверх

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