Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Импорт текстового файла в БД 
:(
    Опции темы
Sh@dow
Дата 1.7.2004, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.7.2004

Репутация: нет
Всего: 1



Господа профи! Помогите новичку.
Требуется средствами дельфи загрузить текстовый файл с раздилителями в БД.
Причем первые 3 строки в одну таблицу остальные в другую.
За пример заранее благодарен.

P.S. Уважаемый Модератор если такая тема и была уже большая просьба оставьте топик хотя бы до завтрешнего утра.
PM MAIL   Вверх
Maverick
Дата 1.7.2004, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



БД какая? Локальная? Удаленная?

1) Настрой ODBC-соединение, используя текст-драйвер....
2) Подключи таблицу (компонент TTable), а лучше запрос (компонент TQuery) к этому соединению... Увидишь - никакой разницы... Работает как с таблицой....
3) Подключи нормальные таблицы к другим тэйблам...
3) Если новичок, воспользуйся компонентом BatcMove... Настрой Source и Destination... Источник и приемник....


--------------------
smile
PM ICQ GTalk   Вверх
Sh@dow
Дата 1.7.2004, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.7.2004

Репутация: нет
Всего: 1



А если приходиться загружать много файлов?
PM MAIL   Вверх
<Spawn>
Дата 1.7.2004, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Допустим, разделитель точка с запятой(;)

Код
procedure LoadFromFileToDataBase(const FileName: string);
type
 TDBRec = array[0..FIELDS_COUNT] of string;
var
 List: TStringList;
 intCounter: integer;
 NewRec: TDBRec;

 function GetRec(strLine: string): TDBRec;
 var
   intPos, intCounter: integer;
 begin
   intPos := Pos(strLine, ';');
   intCounter := 0;
   while intPos <> 0 do
   begin
     Result[intCounter] := Copy(strLine, 1, intPos - 1);
     Delete(strLine, 1, intPos);
     intPos := Pos(strLine, ';');
     Inc(intCounter);
   end;
 end;

begin
 try  
   List := TStringList.Create;
   List.LoadFromFile(FileName);
   for intCounter := 0 to 2 do
   begin
     NewRec := GetRec(List[intCounter]);
     myFirstDataSet.AppendRecord(NewRec.Field1, NewRec.Field2, NewRec.Field3....);
   end;
   myFirstDataSet.Post;
   for intCounter := 3 to List.Count - 1 do
   begin
     NewRec := GetRec(List[intCounter]);
     mySecondDataSet.AppendRecord(NewRec.Field1, NewRec.Field2, NewRec.Field3....);
   end;
   mySecondDataSet.Post;
 finally
   FreeAndNil(List);
 end;
end;


Все это примерно - набирал без Дельфи. Короче идея в том, что сначала создаешь экземпляр класса TStringList, затем загружаешь твой файл. После чего читаешь с первой по 3-ю строки, извалекаешь значения между разделителями и сохраняешь их в наборе данных. Так же делаешь с оставшимися данными. После чего сохраняешь наборы данных в базе.

Это сообщение отредактировал(а) <Spawn> - 1.7.2004, 12:54


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Sh@dow
Дата 1.7.2004, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.7.2004

Репутация: нет
Всего: 1



Всем большое спасибо! Испробовал и первый вариант и второй. Остановился всё таки на втором.
Зря только просидел весь день с компонентой QStrings 6.01.412
PM MAIL   Вверх
Sh@dow
Дата 1.7.2004, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.7.2004

Репутация: нет
Всего: 1



А подскажите еще как сменить кодировку?
PM MAIL   Вверх
<Spawn>
Дата 1.7.2004, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Кодировку чего? Конкретнее, пожалуйстаsmile.gif


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Sh@dow
Дата 1.7.2004, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.7.2004

Репутация: нет
Всего: 1



точнее перекодировки строк из OEM в ANSI
PM MAIL   Вверх
<Spawn>
Дата 1.7.2004, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Используй OemToChar


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Sh@dow
Дата 1.7.2004, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.7.2004

Репутация: нет
Всего: 1



все вроде хорошо ...но только я использую ADO и при добавлении записей из TStringList прога начинает глючить. Как я понял в даном коде ты использовал Ttable. В чем может быть ошибка?
PM MAIL   Вверх
<Spawn>
Дата 1.7.2004, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



AppendRecord - это метод TDataSet, который инкапсулирован в TDataSource. Ты же при для хранения полученого набора данных используешь TDataSource? Так в чем проблема?


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Sh@dow
Дата 1.7.2004, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.7.2004

Репутация: нет
Всего: 1



myFirstDataSet.AppendRecord(NewRec.Field1, NewRec.Field2, NewRec.Field3....);
объясни плиз эту строчку NewRec.Field1, NewRec.Field2, NewRec.Field3..... может я чего нибудь пропустил?
PM MAIL   Вверх
<Spawn>
Дата 1.7.2004, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Sh@dow Эт я ошибся - говорил же, что без IDE писал. Нужно так

Код
myFirstDataSet.AppendRecord(NewRec[0], NewRec[1], NewRec[2]....);



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.