Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / перенесение данных из n-колво txt в dbf / 8 сообщений из 8, страница 1 из 1
04.02.2016, 17:26
    #39163223
badwolf_alina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенесение данных из n-колво txt в dbf
всем привет)ребята спасайте...не могу разобраться.
дано 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
04.02.2016, 18:41
    #39163281
перенесение данных из n-колво txt в dbf
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
04.02.2016, 18:42
    #39163282
перенесение данных из n-колво txt в dbf
badwolf_alina,

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

В первом цикле команду 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
04.02.2016, 21:53
    #39163384
Penner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенесение данных из n-колво txt в dbf
Filetostr()+Alines()+Getwordnum()
...
Рейтинг: 0 / 0
05.02.2016, 10:21
    #39163588
badwolf_alina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенесение данных из n-колво txt в dbf
спасибо всем ,всем)всё отлично сработала)спасибо за помощь)
...
Рейтинг: 0 / 0
05.02.2016, 11:45
    #39163709
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенесение данных из n-колво txt в dbf
badwolf_alinareplace p10 with substr(stroka,1,3)
replace namer with substr (stroka,3,17)


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

Append from
...
Рейтинг: 0 / 0
05.02.2016, 12:22
    #39163763
badwolf_alina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенесение данных из n-колво txt в dbf
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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / перенесение данных из n-колво txt в dbf / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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