Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.29;
Скачать: CL | DM;

Вниз

Нужно скопировать из текст.файла в таблицу 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
1-95895
777
2002-08-18 19:09
2002.08.29
Комбинации


3-95728
Nikolai_S
2002-08-09 13:09
2002.08.29
Как из UDL-файла получить ConnectionString без TADOConnection?


4-96021
Ally
2002-06-26 13:59
2002.08.29
WideChar в RichEdit


3-95690
Chak
2002-08-08 15:50
2002.08.29
Invalid BLOB handle in record buffer.


3-95706
Andrew2
2002-08-08 15:28
2002.08.29
Получить список алиасов