powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Из множества dbf-таблиц в одну
9 сообщений из 9, страница 1 из 1
Из множества dbf-таблиц в одну
    #36204385
VanDOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Нужно последовательно загрузить информацию из множества dbf-файлов в один. Все таблицы имеют одинаковый формат. Причем к каждой записи надо "приклеить" имя файла и дату его создания. Помогите плз с кодом.
...
Рейтинг: 0 / 0
Из множества dbf-таблиц в одну
    #36204482
olllo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanDOS спосопов полно всяких разных
Код: plaintext
1.
2.
3.
4.
5.
 1 ) афилес() - цписок файлов
 2 ) а.усе дбф 
    б.потом репласе все пустые поля именем етого фаила
 3 ) цикл по массиву (
      а. аппенд фром 
      б. репласе все пустые поля именем етого фаила)
или
большим селектом - сложно зато одним махом

или
может еще знатоки тутошние подскажут
...
Рейтинг: 0 / 0
Из множества dbf-таблиц в одну
    #36204568
VanDOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olllo, это все конечно красиво.
Но может кодом поможешь?
...
Рейтинг: 0 / 0
Из множества dbf-таблиц в одну
    #36204645
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая структура таблиц и куда, к какому полю это все прикрутить?
...
Рейтинг: 0 / 0
Из множества dbf-таблиц в одну
    #36204824
olllo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoshaS, помогу почему нет но и самому придется репу почесать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
выбираешь одну из баз
use ? (или конкретно пишешъ имя фаила)

potom 
либо добавляешь две колонки этой басе для имени  например cDbf (тип строка ) и для даты  например dData (тип дата) 
(alter смотри help нажми f1)
либо создаёшь новую базу 
(copy stru  смотри help нажми f1) c добовлением этих двух колонок (каких смотри выше)

потом
adir(dbfs) получаешь массиф со списком этих твоих фаилов(смотри help нажми f1)
там уже есть и имя фаила и дата создания и общее количество можно узнать
можно даже фильтр расширений както указать ("dbf") вдруг затесались не дбф фаилы - cmotri help

теперь нужно пробежатьця(цикл) по этому массиву чтобы останавливатьца на каждом фаиле и копироватъ его в ту базу (которая либо новая либо один из них) и записать его имя и дату создания

вот цикл - смотри help - alen() это количество фаилов dbfs(i, 1 ) имя фаила, dbfs(i, 2 ) дата цоздания (уточни в helpe)

for i =  0   to alen(dbfs)
      append from dbfs(i, 1 )
      replace cDbf with dbfs(i, 1 ) ,  dData with dbfs(i, 2 ) for empty(cDbf)
endfor

вот и всё.. вместо empty(cDbf) можешь писать cDbf == ""
есть е тебя фохпро.. поиграися разберёшьця - даже в дедовскоя версии - инсталлиривать ненадо весит 4 мегабайта что ли
...
Рейтинг: 0 / 0
Из множества dbf-таблиц в одну
    #36204883
VanDOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где здесь ошибка кто подскажет?

Код: plaintext
1.
filename="d:\"+ALLTRIM(STR(i))+".dbf"  && i= 1 ,  2 ,  3  и т.д.
USE (filename) IN  0  ALIAS dbfFile EXCLUSIVE

Пишет что таблицы "d:\.dbf" не существует. Почему-то имя не определяет, хотя в отладчике в переменной filename все правильно.
...
Рейтинг: 0 / 0
Из множества dbf-таблиц в одну
    #36204887
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olllo - я не топикстартер, повнимательней пож-та
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SET DEFAULT TO c:\ 02 
LOCAL lnFile, lcFile
lnFile=ADIR(aFile,'*.DBF')
IF lnFile= 0 
	MESSAGEBOX('Таблицы не найдены')
	RETURN
ENDIF 
FOR i= 1  TO 	lnFile
	lcFile=aFile(i, 1 )+'_'+DTOC(aFile(i, 3 ), 1 )
	USE '&aFile(i,1)' IN  0  ALIAS cTmp
	IF i= 1 
		COPY STRUCTURE TO c:\tResalt.dbf
		USE c:\tResalt.dbf IN  0  
		ALTER TABLE tResalt ADD COLUMN FileND c( 40 )
	ENDIF 
	INSERT INTO tResalt SELECT *, lcFile FROM cTmp 
	USE IN cTmp
ENDFOR 	
SELECT tResalt
BROWSE
USE IN tResalt 
RETURN 
...
Рейтинг: 0 / 0
Из множества dbf-таблиц в одну
    #36204916
GoshaS USE '&aFile(i,1)' IN 0 ALIAS cTmpКак только не извращаются...
Код: plaintext
USE (aFile(i, 1 )) IN  0  ALIAS cTmp
...
Рейтинг: 0 / 0
Из множества dbf-таблиц в одну
    #36205002
olllo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanDOSА где здесь ошибка кто подскажет?

Код: plaintext
1.
filename="d:\"+ALLTRIM(STR(i))+".dbf"  && i= 1 ,  2 ,  3  и т.д.
USE (filename) IN  0  ALIAS dbfFile EXCLUSIVE

Пишет что таблицы "d:\.dbf" не существует. Почему-то имя не определяет, хотя в отладчике в переменной filename все правильно. по моему надо указать не i a i(1) или както так ты всё пробуй в командной строке ? "d:\"+ALLTRIM(STR(i))+".dbf"
если в отладчике вцё правильно то цкопируй оттуда
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Из множества dbf-таблиц в одну
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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