![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите метод ;преобразования 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 файлами и пихай при помощи его из стринг-листа строки, но естественно строку
сначала надо разобрать по полям...