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

Откуда:
Сообщений: 493
Коллеги!

У меня ОДНО-пользовательское приложение на VFP 9.
В нем, в частности, я формирую отчет с помощью процедуры.
Используется имя r для разных вещей - и таблиц и запросов и отчетов - расширения файлов разные.


PROCEDURE r
DELETE FILE r.dbf
DO r.qpr && Создается таблица r.dbf
SELECT r
*BROWSE
REPORT FORM r TO PRINTER NOCONSOLE
SELECT r
USE
RETURN

Проблема вот в чем - с BROWSE все работает, без BROWSE появляется сообщение, что ВАРИЭЙБЛ ... ИЗ НОТ ФАУНД и печатается одна строчка из отчета.

Я знаю, что подобный вопрос рассматривался в

https://www.sql.ru/forum/584931/ne-vyhodit-na-pechat-otchet?hl=brow ?????

К сожалению, я никак не пойму, в чем же состоит решение проблемы?
21 мар 19, 13:09    [21839485]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
Dima T
Member

Откуда:
Сообщений: 15297
В том топике предложили вызвать SYS(1104), попробуй так
SELECT r
SYS(1104)
REPORT FORM r TO PRINTER NOCONSOLE 
21 мар 19, 13:16    [21839501]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
UAP
Member

Откуда:
Сообщений: 493
Dima T,

Попробовал.
Та же картина
21 мар 19, 13:25    [21839519]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
Dima T
Member

Откуда:
Сообщений: 15297
UAP
без BROWSE появляется сообщение, что ВАРИЭЙБЛ ... ИЗ НОТ ФАУНД и печатается одна строчка из отчета.

На какую переменную ругается не выяснил?
21 мар 19, 13:28    [21839523]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
UAP
Member

Откуда:
Сообщений: 493
На одно из полей таблицы, которая является главной и единственной на входе отчета
21 мар 19, 13:29    [21839525]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
Dima T
Member

Откуда:
Сообщений: 15297
Поле с алиасом написано?
r.MyField


добавь проверку
SELECT r
wait iif(type('r.MyField') = 'U', 'Нет', 'Есть') window nowait noclear
REPORT FORM r TO PRINTER NOCONSOLE 
21 мар 19, 13:40    [21839538]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
UAP
Member

Откуда:
Сообщений: 493
Dima T,
Без алиаса.
Я везде поубирал
21 мар 19, 13:41    [21839540]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
UAP
Member

Откуда:
Сообщений: 493
Проверил - то же самое
21 мар 19, 13:44    [21839546]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
Dima T
Member

Откуда:
Сообщений: 15297
UAP
Dima T,
Без алиаса.
Я везде поубирал

Подозреваю что алиас меняется вызовом какой-то функции внутри отчета. Правда это не объясняет почему с BROWSE работает.
По ошибке зайди в отладчик и посмотри какой текущий алиас в этот момент ALIAS().

Или попробуй одноименную переменную создать
m.MyField = 'BUG'
SELECT r
REPORT FORM r TO PRINTER NOCONSOLE 
21 мар 19, 13:50    [21839554]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
SYS(1104) - это не о том. Здесь требуется не очистить, а наоборот, наполнить кеш

Файл DBF был создан на диске. Но FoxPro о его содержимом ничего "не знает", поскольку эти данные не были загружены в кеш FoxPro. Ему не с чем работать. Для него имя-то существует, но пока "пустое". Без наполнения данными

По умолчанию, в автоматическом режиме, наполнение кеша произойдет через 5 секунд. Второй параметр в SET REFRESH

Команда BROWSE принудительно считывает данные в кеш немедленно. Не ожидая этих 5 секунд.

Собственно, Вам и надо найти какой-то способ "пнуть" FoxPro на предмет немедленного чтения данных из таблицы в буфер FoxPro. Первое, что напрашивается, это просто переоткрыть таблицу

DO r.qpr && Создается таблица r.dbf 

* Переоткрываем только что созданную таблицу
select r
use
use r.dbf

* Вызываем отчет
REPORT FORM r TO PRINTER NOCONSOLE 


Еще как вариант, можно попробовать GO TOP. Тоже, теоретически, должен немедленно "дернуть" буфер таблицы
21 мар 19, 13:58    [21839565]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
UAP
Member

Откуда:
Сообщений: 493
Dima T,

Пишет, что теперь не определено следующее поле таблицы
21 мар 19, 14:05    [21839574]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
UAP
Member

Откуда:
Сообщений: 493
Все перепроверил - та же картина.

Проверил, что текущий алиас после запроса r

Переписал заново отчет и программу

PROCEDURE r
DELETE FILE r.dbf
DO r.qpr
SELECT r
REPORT FORM r TO PRINTER NOCONSOLE
SELECT r
USE
RETURN

Теперь вообще белый лист
21 мар 19, 14:28    [21839612]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
Dima T
Member

Откуда:
Сообщений: 15297
UAP
Теперь вообще белый лист

А записи в таблице есть?

То что ВладимирМ написал 21839565 пробовал?

У меня идеи кончились. Я ни разу с подобным не сталкивался.
21 мар 19, 15:15    [21839720]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
UAP
Member

Откуда:
Сообщений: 493
Dima T,
Да, я пробовал.
Записи есть, ибо я их вижу с помощью BROWS
21 мар 19, 19:45    [21840098]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
UAP
Member

Откуда:
Сообщений: 493
Это, конечно дикость, но вот, что решает проблему - три строки в нужном месте:

PROCEDURE r

DELETE FILE r.dbf
DO r.qpr
SELECT r

* Вот эти три строки
DEFINE WINDOW w_brow FROM 1,1 TO 2,2
BROWSE WINDOW w_brow TIMEOUT 1
RELEASE WINDOW w_brow

REPORT FORM r.frx TO PRINTER NOCONSOLE

SELECT r
USE

RETURN

На очень стареньком и медленном компьютере пользователь не успевает увидеть маленький "блым" и отчет получается правильным
30 мар 19, 12:28    [21847760]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
glamis
Member

Откуда:
Сообщений: 603
1. Почему создаешь временную таблицу? Используй курсор. Если надо модифицировать - добавь readwrite.
2. Сделай имя курсора более чем 1 символ, скажем _r1 - система понимает Select R как переключение в R-область.
30 мар 19, 17:12    [21847885]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
UAP
Member

Откуда:
Сообщений: 493
glamis,

Я, в реальной программе, использую длинные названия.
Это я тут использую короткие имена, чтобы легче было понять программу.
С курсором я попробую
30 мар 19, 18:06    [21847915]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа отчета  [new]
Dag
Member

Откуда:
Сообщений: 842
UAP
Это, конечно дикость, но вот, что решает проблему - три строки в нужном месте:


На очень стареньком и медленном компьютере пользователь не успевает увидеть маленький "блым" и отчет получается правильным


Похоже на известный косяк FoxPro.
В момент вызова отчета фокус находится в объекте Grid.
30 мар 19, 19:01    [21847940]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить