powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / перенесение данных из n-колво txt в dbf
8 сообщений из 8, страница 1 из 1
перенесение данных из n-колво txt в dbf
    #39163223
badwolf_alina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет)ребята спасайте...не могу разобраться.
дано 5 тхт файлов одинаковой структуры требуется создать и перенести данные в dbf. сделала по шаблону(т.к новичок)но вот беда в таблицу записывает только 1ую строку из txt-файлов (т.е в dbf только 5 строк по одной из каждого txt ).следовательно я что то намудрила с циклом.помогите плииз)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
procedure adir2
CLOSE ALL
CLOSE DATABASES
set default to d:\lucru\zad6\
set console  off
set alternate to adir.lista1
set alternate on
public stroka,ifp,file_name
create table lista1(p10 char(2)  , namer char(17) , JUD char(2) , NAMEJ char(15),dostup char(2))
use lista1
clear
if empty(sys(2000,"n*.txt"))=.f.
file_name = sys(2000,"n*.txt")
append blank
IFP=FOPEN(file_name)
do while .t.
stroka=fgets(ifp) 
replace p10 with substr(stroka,1,3)
replace namer with substr (stroka,3,17)
replace JUD with substr (stroka,21,2)
replace NAMEJ with substr (stroka,24,15)
replace dostup with substr (stroka,42,3)
exit
 enddo
endif
do while .t.
file_name=sys(2000,"n*.txt",1)
IFP=FOPEN(file_name)
 DO WHILE .T.
 stroka=fgets(ifp)
exit
 enddo
if empty (file_name)=.t.
exit
endif
append blank
replace p10 with substr(stroka,1,3)
replace namer with substr (stroka,3,17)
replace JUD with substr (stroka,21,2)
replace NAMEJ with substr (stroka,24,15)
replace dostup with substr (stroka,42,3)
enddo
set alternate to
close databases
return
...
Рейтинг: 0 / 0
перенесение данных из n-колво txt в dbf
    #39163281
badwolf_alina,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Procedure adir2
	Close All
	Close Databases
	Set Default To d:\lucru\zad6\
	Set Console  Off
	Set Alternate To Adir.lista1
	Set Alternate On
	Public stroka,ifp,file_name
	Create Table lista1(p10 Char(2), namer Char(17), JUD Char(2), NAMEJ Char(15), dostup Char(2))
	*		Use lista1
	Clear
	If Empty(Sys(2000,"n*.txt"))=.F.
		file_name = Sys(2000,"n*.txt")
		Append Blank
		ifp=Fopen(file_name)
		Do While Feof(ifp)
			stroka=Fgets(ifp)
			Replace p10 With Substr(stroka,1,3), ;
				namer With Substr (stroka,3,17), ;
				JUD With Substr (stroka,21,2), ;
				NAMEJ With Substr (stroka,24,15), ;
				dostup With Substr (stroka,42,3)
			*			Exit
		Enddo
	Endif
	Do While .T.
		file_name=Sys(2000,"n*.txt",1)
		If Empty (file_name)=.T.
			Exit
		Endif
		ifp=Fopen(file_name)
		Do While Feof(ifp)
			stroka=Fgets(ifp)
			*			Exit
			Append Blank
			Replace p10 With Substr(stroka,1,3), ;
				namer With Substr (stroka,3,17), ;
				JUD With Substr (stroka,21,2), ;
				NAMEJ With Substr (stroka,24,15), ;
				dostup With Substr (stroka,42,3)
		Enddo
	Enddo
	Set Alternate To
	Close Databases
	Return


Обратите внимание на измененный порядок некоторых кусков текста.

ps: И откройте для себя пункт Beautify в контекстном меню редактора кода.
...
Рейтинг: 0 / 0
перенесение данных из n-колво txt в dbf
    #39163282
badwolf_alina,

добавчик: не FEOF(, а Not FEOF(
...
Рейтинг: 0 / 0
перенесение данных из n-колво txt в dbf
    #39163335
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один добавчик.

В первом цикле команду Append Blank надо также включить внутрь цикла do while как это было сделано во втором цикле. Иначе будет постоянное перетирание содержимого одной записи

Чтобы подобных проблем не было, поставьте рядом

Код: sql
1.
2.
APPEND BLANK
REPLACE ... WITH ...



PS: Если использование функций чтения низкого уровня FOPEN() не обязательно, то можно выполнить загрузку командой APPEND FROM TYPE SDF. Только надо будет увеличить размерность всех полей на 1. У Вас похоже в качестве разделителя пробел стоит. А тип SDF предполагает, что разделителей между "полями" в тексте нет

Код: sql
1.
2.
3.
4.
create table lista1(p10 char(3)  , namer char(18) , JUD char(3) , NAMEJ char(16), dostup char(3))

file_name = sys(2000,"n*.txt")
APPEND FROM (file_name) TYPE SDF
...
Рейтинг: 0 / 0
перенесение данных из n-колво txt в dbf
    #39163384
Penner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Filetostr()+Alines()+Getwordnum()
...
Рейтинг: 0 / 0
перенесение данных из n-колво txt в dbf
    #39163588
badwolf_alina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо всем ,всем)всё отлично сработала)спасибо за помощь)
...
Рейтинг: 0 / 0
перенесение данных из n-колво txt в dbf
    #39163709
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
badwolf_alinareplace p10 with substr(stroka,1,3)
replace namer with substr (stroka,3,17)


Насколько я понимаю, 3-й символ попадает в оба поля?
и посмотри

Append from
...
Рейтинг: 0 / 0
перенесение данных из n-колво txt в dbf
    #39163763
badwolf_alina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
glamisbadwolf_alinareplace p10 with substr(stroka,1,3)
replace namer with substr (stroka,3,17)


Насколько я понимаю, 3-й символ попадает в оба поля?
и посмотри

Append from

replace p10 with substr(stroka,1,2) я исправила...там только 2 символа
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / перенесение данных из n-колво txt в dbf
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]