Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Reports  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
Чего-то немогу догнать...
Есть 2 курсора, я их проиндексировал

SELECT ....
INDEX ON cur_firm.code TO cur_firm
SELECT ....
INDEX ON cur_serv.code TO cur_serv
SET RELATION TO code INTO cur_firm

затем хочу посмотреть их в отчете (прилагается) но неполучатеся...
может кто подскажет что я делаю не так.

К сообщению приложен файл (Reports.zip - 2Kb) cкачать
16 дек 04, 14:14    [1185748]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
А ты часом не перепутал

SELECT ....
INDEX ON cur_serv.code TO cur_serv
SELECT ....
INDEX ON cur_firm.code TO cur_firm
SET RELATION TO code INTO cur_serv
16 дек 04, 14:25    [1185806]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
Parent cursor - cur_firm
chield - cur_serv
связь один-много
16 дек 04, 14:55    [1185966]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
Ну так а вязал то ты наоборот.
Я тебе селекты и переставил.
16 дек 04, 14:58    [1185984]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
И релайшин подправил
16 дек 04, 14:59    [1185990]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
и как это я сам прохлопал...
теперь в отчет попадает только первая запись из cur_firm
16 дек 04, 15:13    [1186043]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
Укажи в Data Grouping что ты группируешь по cur_firm.code, т.к. поле code есть в обеих таблицах нужно как то определиться :)
16 дек 04, 15:22    [1186099]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
что-то еще не так...
я все изменил - но всеравно в отчет попадает только 1-я запись из cur_firm и 1-я запись из cur_serv
16 дек 04, 15:26    [1186130]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
Тогда выложи кусок таблиц, чтобы можно было посмотреть вживую.
16 дек 04, 15:28    [1186143]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
да там ничего необычного нету.
создай два курсора cur_firm (code i,name c(50)) cur_serv (code i, date d,topic c(50), price n(9,2))
16 дек 04, 16:26    [1186429]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
В том то и дело, что у меня все кажет путем, а у тебя - нет.
16 дек 04, 16:31    [1186461]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161

SELECT firm.code,firm.name,firm.city,firm.director,firm.phone_g,firm.date,firm.type FROM firm WHERE &prFilt ORDER BY code ASC INTO CURSOR cur_firm NOFILTER READWRITE
INDEX ON cur_firm.code TO cur_firm

SELECT serv.date,serv.topic,serv.price,serv.theme,serv.code,serv.type,RECNO() AS rec FROM serv WHERE serv.code = cur_firm.code HAVING BETWEEN(serv.date,d_from,d_to) INTO CURSOR cur_serv NOFILTER READWRITE
INDEX ON cur_serv.code TO cur_serv

REPORT FORM SYS(2003)+"\REPORTS\serv" PREVIEW
16 дек 04, 16:52    [1186569]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
А ты проверял ЧТО у тебя в курсоры отобралось?
16 дек 04, 17:09    [1186668]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
да, в проекте в гридах все видно.
там простые условия, по дате, по названию фирмы и т.д.
также отчет должен работать и по всей табилице (без отбора)
16 дек 04, 17:12    [1186680]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
Вот ради эксперимента открой исходные таблицы с алиасами курсоров, повяжи их и запусти отчет га предпросмотр. Что будет?
16 дек 04, 17:19    [1186729]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Команда SET RELATION организует связь вида один-к-одному. Чтобы организовать связь вида один-ко-многим необходимо дать еще команду SET SKIP. Т.е. в твоем случае это будет что-то вроде:

SELECT cur_serv
INDEX ON code TAG code
SELECT cur_Firm
SET RELATION TO code INTO cur_serv
SET SKIP cur_serv

Для организации связи индекс нужен только в подчиненной таблице. Индекс в главной таблице обеспечит нужный порядок следования.

Хотя, если таблицы - это результат SQL-запросов, то логичнее сделать одну общую таблицу, связывающую cur_serv и cur_firm и не мудрить с Relation.
16 дек 04, 17:39    [1186827]     Ответить | Цитировать Сообщить модератору
 Re: Reports  [new]
Alex Sheff
Member

Откуда: Луцк, Украина
Сообщений: 161
блин, как же это я о SET SKIP TO забыл... стыдно стало аж покраснел...
Большое спасибо Владимиру
16 дек 04, 18:53    [1187059]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить