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

Вниз

Нужно скопировать из текст.файла в таблицу dbf значения...   Найти похожие ветки 

 
Ангелика   (2002-08-09 15:38) [0]

Уважаемые мастера! Буду очень благодарна, если кто-нибудь поможет разобраться. Нужно скопировать из текст.файла строку, разбить на составляющие подстроки и их записать в соответствующие поля таблицы dbf. После исполнения нижеследующего кода в таблице поля оказываются пустыми, за исключением поля Summa, где для всех записей записано значение "0.00". Не подскажете, в чем тут дело?

procedure TForm1.SpeedButtonClick(Sender: TObject);
var Ft1: Textfile;
s : string;
sInterval, sPhone, sPhoneOld : string[7];
sDate: string[16];
sKod : string[10];
sBphone : string[15];
sSumma : string[14];
nsSumma : real;
sTariff : string[12];
pp,ii:byte;
begin
aa.Active := True;
aa.Append;
aa.First;
assignFile(Ft1,"53609.txt");
reset(Ft1);
while not EOF(Ft1) do
begin
readln(Ft1,s); // здесь значение Watch List
// становится равным s=#$1A
// и больше не меняется
aa.Edit;
sPhone:=(copy(s,1,7));
aa.FieldValues["phone"]:= sPhone;
sDate:=copy(s,32,5)+copy(s,42,6);
aa.FieldValues["call_date"]:=sDate;
sKod:=copy(s,49,10);
aa.FieldValues["kod"]:=sKod;
sBphone:=copy(s,80,15);
aa.FieldValues["bphone"]:=sBphone;
sInterval:=copy(s,111,7);
aa.FieldValues["interval"]:=sInterval;
sTariff:=copy(s,124,10);
aa.FieldValues["tariff"]:=sTariff;
sSumma:=trim(copy(s,133,10));
PP:=Pos(",",sSumma);
Delete(sSumma,PP,1);
Insert(".",sSumma,PP);
sSumma:=trim(sSumma);
nSsumma:=StrToFloat(sSumma);
aa.FieldValues["SUMMA"]:=nSsumma;
aa.Next;
end;
end;


 
SaS13   (2002-08-09 15:42) [1]

aa.Post


 
Val   (2002-08-09 15:52) [2]

>SaS13 © (09.08.02 15:42)
пост произойдет при переходе от записи к записи.
>Ангелика (09.08.02 15:38)
а у вас значения в ваших переменных до вставки есть?


 
Ангелика   (2002-08-09 15:54) [3]

Спасибо за отклик!
Добавила
aa.Post
Теперь в выходной таблице в поле Summa появились значения "0"
Наверное что-то еще не так...


 
ZrenBy   (2002-08-09 15:58) [4]

readln(Ft1,s); // здесь значение Watch List
// становится равным s=#$1A
// и больше не меняется
Конечно s - пустое
Что есть Ft1 ?


 
SaS13   (2002-08-09 15:59) [5]

procedure TForm1.SpeedButtonClick(Sender: TObject);
var Ft1: Textfile;
s : string;
sInterval, sPhone, sPhoneOld : string[7];
sDate: string[16];
sKod : string[10];
sBphone : string[15];
sSumma : string[14];
nsSumma : real;
sTariff : string[12];
pp,ii:byte;
begin
aa.Active := True;
aa.Append; // - бессмысленно, след. оператор отменит
aa.First; // при открытии необязателен
assignFile(Ft1,"53609.txt");
reset(Ft1);
while not EOF(Ft1) do
begin
readln(Ft1,s); // здесь значение Watch List
// становится равным s=#$1A
// и больше не меняется
aa.Edit; // наверное Insert надо
sPhone:=(copy(s,1,7));
aa.FieldValues["phone"]:= sPhone;
sDate:=copy(s,32,5)+copy(s,42,6);
aa.FieldValues["call_date"]:=sDate;
sKod:=copy(s,49,10);
aa.FieldValues["kod"]:=sKod;
sBphone:=copy(s,80,15);
aa.FieldValues["bphone"]:=sBphone;
sInterval:=copy(s,111,7);
aa.FieldValues["interval"]:=sInterval;
sTariff:=copy(s,124,10);
aa.FieldValues["tariff"]:=sTariff;
sSumma:=trim(copy(s,133,10));
PP:=Pos(",",sSumma);
Delete(sSumma,PP,1);
Insert(".",sSumma,PP);
sSumma:=trim(sSumma);
nSsumma:=StrToFloat(sSumma);
aa.FieldValues["SUMMA"]:=nSsumma;
aa.Next; // а здесь Post
end;
end;


 
Johnmen   (2002-08-09 15:59) [6]

aa.Append
aa.First;

aa.Next;

- выкинуть

вместо aa.Edit; - aa.Append; и после - aa.Post

(А вообще-то надо много и упорно читать книги...)


 
Ангелика   (2002-08-09 16:00) [7]

>Val (09.08.02 15:52)
Нет в переменных до вставки значени нет. Значения в них считываются из текстового файла.


 
Ангелика   (2002-08-09 16:20) [8]

>ZrenBy (09.08.02 15:58)
FT1 - переменная, ассоциированная с внешним текстовым файлом
>Johnmenn (09.08.02 15:59)
Насчет книг Вы, разумеется правы. Извините, что занимаю Ваше время, уверяю, только из необходимости получения быстрого результата.
Кстати, после всех манипуляций, предложенных Вами, результат, к сожалению не изменился.


 
ZrenBy   (2002-08-09 16:23) [9]

Что за формат у "53609.txt" ?
Может ReadLn сразу натыкается на нечто ?


 
Val   (2002-08-09 16:23) [10]

>Ангелика (09.08.02 16:00)
приведите получившейся код.
вы не поняли, я спрашиваю, значения из файла в переменные считываются нормально?


 
Ангелика   (2002-08-09 16:40) [11]

>Val (09.08.02 16:23)
Из текстового файла строка считывается в переменную строковую переменную s. В этой переменной наблюдаю в WATCH LIST значение s=#$1A. Остальные переменные заполняю значениями посредством функции Copy(s,...,...).

Получившийся код
procedure TForm1.SpeedButtonClick(Sender: TObject);
var Ft1: Textfile;
s : string;
sInterval, sPhone, sPhoneOld : string[7];
sDate: string[16];
sKod : string[10];
sBphone : string[15];
sSumma : string[14];
nsSumma : real;
sTariff : string[12];
pp,ii:byte;
begin
aa.Active := True;
assignFile(Ft1,"53609.txt");
reset(Ft1);
while not EOF(Ft1) do
begin
readln(Ft1,s); // здесь значение Watch List
// становится равным s=#$1A
// и больше не меняется
aa.Append; // замена на Insert или Edit ничего не меняет
sPhone:=(copy(s,1,7));
aa.FieldValues["phone"]:= sPhone;
sDate:=copy(s,32,5)+copy(s,42,6);
aa.FieldValues["call_date"]:=sDate;
sKod:=copy(s,49,10);
aa.FieldValues["kod"]:=sKod;
sBphone:=copy(s,80,15);
aa.FieldValues["bphone"]:=sBphone;
sInterval:=copy(s,111,7);
aa.FieldValues["interval"]:=sInterval;
sTariff:=copy(s,124,10);
aa.FieldValues["tariff"]:=sTariff;
sSumma:=trim(copy(s,133,10));
PP:=Pos(",",sSumma);
Delete(sSumma,PP,1);
Insert(".",sSumma,PP);
sSumma:=trim(sSumma);
nSsumma:=StrToFloat(sSumma);
aa.FieldValues["SUMMA"]:=nSsumma;
aa.Post
end;
end;
> ZrenBy (09.08.02 16:23)
Файл текстовый, кажется создан под DOSом (это присылают из Телекома). Вообще-то сейчас они уже перешли на формат dbf, но у нас затребовали отчет за 2000 год, а раньше эта информация так не обрабатывалась, такой программы не было).




 
Val   (2002-08-09 16:43) [12]

хм, так у вас считать из файла не выходит, а не в таблицу вставить.


 
Leran2002   (2002-08-09 16:51) [13]


> Ангелика (09.08.02 16:40)

Удали из таблицы все записи, а затем запусти новый вариант, и посмотри будут ли записи в таблице... Мне кажется дело в
> Val © (09.08.02 16:43)




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

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

Наверх





Память: 0.48 MB
Время: 0.007 c
1-95806
ErmSergey
2002-08-20 09:29
2002.08.29
Определение позиции символа над которым находится указатель мыши


4-96025
LKBlack
2002-06-27 10:33
2002.08.29
На чистом API програмно дорисовать к иконке,на иконку есть HICON


1-95884
Novenkij
2002-08-18 15:35
2002.08.29
Помогите с оптимизацией


1-95878
skyslider
2002-08-18 04:11
2002.08.29
Как узнать какая строка выделена в StringGrid


1-95852
snoup
2002-08-17 22:00
2002.08.29
Как сделать чтобы в мемо определенный текст был например красного





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский