Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];

Вниз

заполнение БД данными из текстового файла   Найти похожие ветки 

 
grab   (2001-12-11 14:13) [0]

Уважаемые мастера, не могли бы вы объяснить новичку порядок заполнения таблицы данными (цифры, даты и т.д.) из текстового файла в таблицу Делфи. Может, есть какой-то другой способ организации такой БД? Текстовые файлы сами по себе уникальны, и закачиваются в БД ежедневно. Заранее благодарен.


 
Val   (2001-12-11 14:22) [1]

Cчитываете данные из текстового файла, преобразовываете в нужный формат и записываете в таблицу Table1.FieldByName("fname").As..:=данные;
Вообще-то ваш вопрос задан очень пространно.


 
grab   (2001-12-11 14:27) [2]

а каким образом считывать данные? есть какая-то функция?


 
Val   (2001-12-11 14:35) [3]

хелп по AssignFile,Reset,Read,CloseFile и т.д.


 
Romul   (2001-12-11 15:09) [4]

Посмотри в хэлпе компонент TStringList. Очень удобно им пользоваться.


 
grab   (2001-12-11 17:56) [5]

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


 
Cossys   (2001-12-11 18:19) [6]

Проще иметь уже скелет таблицы (пустышку), которую и заполняеш. Пользоваться Readln не советую - команда чисто досовская, поэтому если в Вашем файлике встретится нечто вроде chr(255) - считка прекращается. Используйте TMemo или, как сказал Romul, компонент TStringList.
frmA.Memo1.Clear;
frmA.Memo1.Lines.LoadFromFile(frmA.opnDlg1.FileName);
Далее (если досовский файл структурирован) в теле цикла (for i:=0 to Memo1.Lines.Count-1) считываете...

Пример:
NAME TYPE
Коля Ламер
Вася Юзер
Петя Хакер

for i:=0 to Memo1.Lines.Count-1
begin
Table1.Insert;
Table1.Fields[0].Value:=Copy(Memo1.Lines[i], 3, 4);
Table1.Fields[1].Value:=Copy(Memo1.Lines[i], 9, 5);
Table1.Post;
end;

Удачи!


 
grab   (2001-12-11 18:33) [7]

Спасибо,Cossys ©! Структура файла типа такого:
08=01022001=01012001=31012001=05022001=2359=589642=21=000025087=#02МТН25.G21=
#1=1
1010012801=668803
1110012801=261900
5010012801=2148835
6010012801=1562509
5110012801=813000
6110012801=583000
5010022801=494842
6010022801=500013
5110022801=190000
6110022801=192000
5010072801=476576
6010072801=476576
5110072801=183000
6110072801=183000
5019112801=1307352
6019112801=1307352
5119112801=500000
6119112801=500000
2025282801=1629
2125282801=638
равно - разделитель, до равно - шифры счетов и их признаки, валюты и т.д., после равно - в копейках или в номиналах, это все должно быть разбросано по отдельным ячейкам, в первой строке - даты.
Цифру из первого столбца еще надо разбивать на составляющие, т.е. первые две цифры - признак счета, после них четыре цифры - счет, потом три цифры - валюта и т.д.


 
Cossys   (2001-12-11 19:07) [8]

Да Вы банкир, да еще и с Украины! Знакомые до боли цифры! Поосторожнее Вы были с такими табличками тут на форуме...




 
grab   (2001-12-11 19:21) [9]

пример нашел на одном из сайтов, тоже в форуме, цифры все левые


 
andey   (2001-12-11 20:09) [10]

Я тоже как-то думал но абстрактно.
текст разбивал на ячейки.
Вот Функция:
Function GetWord(var S: String): String;
const
Letters: set of Char = ["a".."z", "A".."z", "А".."я", "0".."9"];
begin
Result := "";
while (S<> "") and not (S[1] in Letters) do
Delete(S,1,1);
while (S<> "") and (S[1] in Letters) do
begin
Result:=Result+S[1];
Delete(s,1,1)
end;
end; //GetWord Выделение слова из строки

Загоняй текст в Мемо и читай по строчно
обрабатывай этой функцией и раскидывай по полям.
Скинул свою рогу попробуй.


 
grab   (2001-12-11 20:23) [11]

как все серьезно... в Экселе это просто цирк, работает, но весело
спасибо!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.023 c
3-42357
Cossys
2001-12-11 18:02
2002.01.14
Хитрый фильтр - никак не работает


4-42623
Семён
2001-11-10 09:36
2002.01.14
Создание главной формы с помощью WinApi


14-42558
MJH
2001-11-19 09:39
2002.01.14
Good Idea 4 Forums!


14-42569
Besa
2001-11-14 14:42
2002.01.14
Сертифицирование в Инете?


3-42354
irq
2001-12-11 14:44
2002.01.14
DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский