powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогие пожалуйста!!!
3 сообщений из 3, страница 1 из 1
Помогие пожалуйста!!!
    #35391106
Niara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В программе происходит сверка базы данных по определенному полю и выгрузка подходящих данный в реестр через дополнителью базу данных. В исходящем файле число строк множется на 100. Вижу что формируется две базы. одна с уникальным именем другая "дополнительная". В дополнительной УЖЕ данные помноженные на 100. Незнаю в чем проблема :( не могу понять. Помогите пожалуйста! (FOxPro 2.6)
Привожу текст программы:

m.LookDate = TODAYS-1
m.LookDateEND = TODAYS
store .T. to cstru

do whil .T.

@ 1, 1 SAY "Укажите начальную дату" GET m.LookDate
READ

@ 2, 1 SAY "Укажите конечную дату " GET m.LookDateEND
READ

if m.LookDate>m.LookDateEND
WAIT WINDOW 'Ошибка!Начальная дата больше конечной 'nowa
else
exit
endif

enddo

RELEASE WINDOW WhatDate
SET CURSOR OFF

SELECT 1
USE FILIALS alias filials
store alltrim(FILIALS.MAILPATH5) to out
GO TOP

do while not eof()

m.fname = alltrim(FILIALS.PATH)+"KJ.DBF"
select 0
IF USED('kj')
SELECT kj
ENDIF
use
USE (m.fname) IN 0
SELECT kj

store filials.fil to fil
WAIT WINDOW 'Идет сортировка данных по '+filials.name nowa

select 2
select ALL fdats(kj.dpl,.F.) AS dpl,;
fil as fil,;
kj.kpl,;
kj.fio as fio,;
kj.adr as adr ,;
fpack(kj.sum,7,2,.f.) AS SUM,;
padl(alltri(kj.lc),6,'0') as lc;
From kj,vplat;
WHERE kop="Q" and fdats(kj.dpl,.F.) >= m.LookDate and fdats(kj.dpl,.F.) <= m.LookDateEND and ;
KODPlat=kj.kpl and;
not kj.storno;
into dbf tempz3

if cstru
copy structure to &unikname
select 17
use &unikname
store .f. to cstru
endif

select 17
append from tempz3
select filials
skip
enddo

select 17
go top

store out + substr(dt,1,2)+substr(dt,4,2)+substr(dt,9,2)+'.txt' to namfilda
set textmerge on to &namfilda noshow

store 1 to kol
do while not eof()
\<<kol>>;<<lc>>;<<alltrim(fio)>>;<<alltrim(adr)>>;<<sum>>
kol=kol+1
skip
enddo

set textmerge to

wait window "Выгружен файл "+namfilda+chr(10)+chr(13)
if file (unikname)
pdd ="! del "+unikname
&pdd
endif

return
...
Рейтинг: 0 / 0
Помогие пожалуйста!!!
    #35391229
NiaraВ программе происходит сверка базы данных по определенному полю и выгрузка подходящих данный в реестр через дополнителью базу данных. В исходящем файле число строк множется на 100. Вижу что формируется две базы. одна с уникальным именем другая "дополнительная". В дополнительной УЖЕ данные помноженные на 100. Незнаю в чем проблема :( не могу понять. Помогите пожалуйста! (FOxPro 2.6)
...

Проблема в фрагменте:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select ALL fdats(kj.dpl,.F.) AS dpl,;
fil as fil,;
kj.kpl,; 
kj.fio as fio,; 
kj.adr as adr ,;
fpack(kj.sum, 7 , 2 ,.f.) AS SUM,;
padl(alltri(kj.lc), 6 ,'0') as lc;
From kj,vplat;
WHERE kop="Q" and fdats(kj.dpl,.F.) >= m.LookDate and fdats(kj.dpl,.F.) <= m.LookDateEND and ;
KODPlat=kj.kpl and; 
not kj.storno;
into dbf tempz3 
Просто в нем не задано условие соединения таблиц kj и vplat. Поэтому в результате выполнения данного селекта получается "декартово произведение" двух таблиц, то есть для каждой записи таблицы vplat выдаются ВСЕ записи таблицы kj, удовлетворяющие условию Where...
В общем, надо быть внимательнее...

Всего!
...
Рейтинг: 0 / 0
Помогие пожалуйста!!!
    #35391555
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. Интересный кусок:

IF USED('kj')
SELECT kj
ENDIF
use
USE (m.fname) IN 0
SELECT kj


Если я его правильно понял, то в m.fname - таблица с именем "kj" и таблицы
с одинаковым именем ("kj") лежат в разных папках, а переменная "m.fname"
содержит полный путь до этого файла.
В этом случае можно сначала определить может это таже таблица и тратить
время на перереоткрытие не требуется:

IF !(USED('kj') or dbf('kj')=upper(m.fname))
USE (m.fname) IN select('kj') alias kj
ENDIF
SELECT kj

+ раз уж идет цикл по условию !eof() - есть scan ... endscan
+ рациональнее сначала пройти по одной фирме, потом по другой (опять таки
время на переоткрытие файла)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогие пожалуйста!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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