powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не выходит на печать отчет
25 сообщений из 25, страница 1 из 1
Не выходит на печать отчет
    #35480288
столкнулся с таким траблом

записываю накладную, и после того как она записалась получаю её номер, делаю выборку по номеру этой накладной и печатаю... и тишина....
Код: plaintext
1.
2.
SELECT * FROM table  INTO CURSOR cur_rep
REPORT FORM накладная TO PRINTER NOCONSOLE

а если сделаю так, то печатает
Код: plaintext
1.
2.
3.
4.
SELECT table
browse
SELECT * FROM table  INTO CURSOR cur_rep
REPORT FORM накладная TO PRINTER NOCONSOLE
только вот этот browse мне совсем не катит... причем интересно, что когда делаю browse, то этой новой записанной накладной не видно, т.е. буд-то она не записалась, но на печать выводится...
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35480304
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, а самому проверить, что же попало в курсор?

Код: plaintext
1.
2.
SELECT * FROM table  INTO CURSOR cur_rep
BROWSE

Надеюсь, в курcе, что на команду Select-SQL влияет настройка SET DELETED?

Также желательно при использовании INTO CURSOR всегда добавлять опцию NOFILTER

Код: plaintext
1.
SELECT * FROM table  INTO CURSOR cur_rep NOFILTER

Также надо проверить, какие именно алиасы стоят в выражениях полей отчета. Есть ли что-то в DataEnvironment отчета.

В общем, направлений два:

1) У отчета явным образом указана таблица-источник и это не курсор
2) В курсор не попадает ни одной записи
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35480336
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
SELECT * FROM table  INTO CURSOR cur_rep
REPORT FORM накладная TO PRINTER NOCONSOLE

Попробуй вот так:
Код: plaintext
1.
2.
3.
SELECT * FROM table  INTO CURSOR cur_rep
SELECT cur_rep
REPORT FORM накладная TO PRINTER NOCONSOLE

а ещё в REPORT, может быть, явно указан принтер, который в данный момент не включён.
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35480360
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может снова GRID виноват?
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35480502
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>
> записываю накладную, и после того как она записалась получаю её
> номер, делаю выборку по номеру этой накладной и печатаю... и тишина....
>
> SELECT * FROM table INTO CURSOR cur_rep
> REPORT FORM накладная TO PRINTER NOCONSOLE
>
> а если сделаю так, то печатает
>
> SELECT table
> browse
> SELECT * FROM table INTO CURSOR cur_rep
> REPORT FORM накладная TO PRINTER NOCONSOLE
> только вот этот browse мне совсем не катит... причем интересно, что когда
> делаю browse, то этой новой записанной накладной не видно, т.е. буд-то она
> не записалась, но на печать выводится...
> Тема Ответить Сообщение

Каким образом происходит запись в таблицу table?
Есть ли на этой таблице какая-нибудь буферизация?


PS очень похоже, что brows "передергивает" указатель записи, после чего сами
данные физически попадают в таблицу.

Попробуй вместо brows сделать goto recno('table') in table, что будет?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35480714
to ВладимирМ

ну тут очевидно второе направление... вот так вот в курсор действительно не попадает ни одной записи..
Код: plaintext
1.
2.
3.
4.
SELECT table
SELECT * FROM table  INTO CURSOR cur_rep
browse
REPORT FORM накладная TO PRINTER NOCONSOLE

а вот так вот (т.е. с browse перред запросом) записи в курсор попадают
Код: plaintext
1.
2.
3.
4.
5.
SELECT table
browse
SELECT * FROM table  INTO CURSOR cur_rep
browse
REPORT FORM накладная TO PRINTER NOCONSOLE

никакой буферизации нет, в датаинвиронмент отчета тоже ничего нет, накладная записывается посредством вызова метода ком-сервера....

нихера не понимаю...
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35480778
q123qw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Небось файлики с именем "table" расплодились по диску, как кролики! ;)
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35480982
вместо table можно подставить любой набор из буков...
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35481455
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так NOFILTER пробовал добавить? Таблица Table заполняется непосредственно перед запросом?

Что возвращает такая конструкция

Код: plaintext
1.
2.
SELECT * FROM table  INTO CURSOR cur_rep NOFILTER
MessageBox("Выбрано записей "+str(_TALLY))

Какая текущая настройка

Код: plaintext
?SET("DELETED")
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35481533
ВладимирМТак NOFILTER пробовал добавить? Таблица Table заполняется непосредственно перед запросом?

Что возвращает такая конструкция

Код: plaintext
1.
2.
SELECT * FROM table  INTO CURSOR cur_rep NOFILTER
MessageBox("Выбрано записей "+str(_TALLY))

Какая текущая настройка

Код: plaintext
?SET("DELETED")


эта конструкция без browse перед селектом возвращает 0, а с browse как и надо...
(тут в примере я селект упростил, в реальности у меня селект из двух таблиц по джойн-условию...)... и ещё раз акцентрирую внимание на то, что с броуз перед запросом всё выбирается как надо, а без броуз ничего не выбирается...
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35481667
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КонецЦиклаэта конструкция без browse перед селектом возвращает 0, а с browse как и надо...
(тут в примере я селект упростил, в реальности у меня селект из двух таблиц по джойн-условию...)... и ещё раз акцентрирую внимание на то, что с броуз перед запросом всё выбирается как надо, а без броуз ничего не выбирается...
BROW может только сместить указатель текущей записи в таблице, для эксперимента замени BROW на SKIP -1

Показывай реальный код. И BROW туда заремленный вставь. Только убедись еще раз что с ним работает, а без него нет.
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35481733
да я уже делал с go recno()... думаю skip тут тоже не поможет...
делал browse timeout 0.1 - не работает, а browse без таймаута работает... причём ещё раз отмечу, что када я делаю browse перед селектом я этой записанной накладной не вижу, но когда я делаю browse после селекта, то она уже отбирается...
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35481754
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что возвращает

Код: plaintext
1.
2.
3.
4.
SELECT ... FROM ... INTO ...
lcAlias = Alias()
BROWSE
MessageBox("До Browse " + m.lcAlias + chr( 13 ) + "После Browse "+Alias())
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35481788
ВладимирМЧто возвращает

Код: plaintext
1.
2.
3.
4.
SELECT ... FROM ... INTO ...
lcAlias = Alias()
BROWSE
MessageBox("До Browse " + m.lcAlias + chr( 13 ) + "После Browse "+Alias())


и до browse и после возвращает имя курсора, в который происходит выборка селектом... курсор пустой...
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35481807
вот так вот
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT Mytable
lcAlias1 = Alias()
BROWSE
SELECT ... FROM Mytable INTO MyCursor
lcAlias = Alias()
BROWSE
MessageBox("До Select " + m.lcAlias1  + chr( 13 ) + "До Browse " + m.lcAlias + chr( 13 ) + "После Browse "+Alias())
возвращает Mytable, MyCursor, MyCursor и в курсор всё отбирается
а вот так вот
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT Mytable
lcAlias1 = Alias()
SELECT ... FROM Mytable INTO MyCursor
lcAlias = Alias()
BROWSE
MessageBox("До Select " + m.lcAlias1  + chr( 13 ) + "До Browse " + m.lcAlias + chr( 13 ) + "После Browse "+Alias())
тоже возвращает Mytable, MyCursor, MyCursor но в курсор НИЧЕГО не отбирается
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35481824
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое MyTable и как она заполняется? Select выполняется сразу после каких-либо модификаций в этой таблице?

Что возвращает

Код: plaintext
1.
2.
?DBF("MyTable")
?DBF("MyCursor")
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35481870
ВладимирМЧто такое MyTable и как она заполняется? Select выполняется сразу после каких-либо модификаций в этой таблице?

Что возвращает

Код: plaintext
1.
2.
?DBF("MyTable")
?DBF("MyCursor")


есть "маршрутные задания": заголовок маршрутного задания Marsh_zad.dbf и содержимое (строки) маршрутного задания Marsh_zad_str.dbf
заводится новое маршрутное задание посредством вызова метода com-сервера
НомерНовогоМЗ = ox.new_marsh_zad()
этот метод чётко возвращает номер нового только, что записанного маршрутного задания
теперь мне его надо распечатать
SELECT Marsh_zad.pole1, Marsh_zad_str.pole2 FROM marsh_zad;
INNER JOIN marsh_zad_str ON Marsh_zad.nomer = Marsh_zad_str.nomer;
WHERE Marsh_zad.nomer = НомерНовогоМЗ INTO CURSOR cur_rep NOFILTER
IF _TALLY > 0
SELECT cur_rep
REPORT FORM marsh_zad TO PRINTER NOCONSOLE
ENDIF

и вот если я перед селектом просто тупо поставлю browse, то _TALLY>0, а не поставлю - _TALLY=0

а ?DBF("Marsh_zad") и ?DBF("cur_rep ") возвращают как и надо путь к dbf-файлу и пусть к tmp-файлу...
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35481993
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другими словами, данные в таблицу заносятся одним клиентом (процессом), а увидеть их надо другим клиентом (процессом)? Сразу после их занесения?

Между вводом данных в файл и появлением этих данных у клиента (в буфере клиента) есть некоторый интервал. Этот интервал определяется вторым параметром настройки

SET REFRESH TO

По умолчанию, этот интервал равен 5 секундам.

При этом, первый параметр этой же настройки определяет время обновления данных при отображении их в BROWSE-окне. По умолчанию, это 0. Т.е. BROWSE-окно считывает данные с диска.

С другой стороны, когда в команде Select-SQL в опции FROM Вы указываете имя, то сначала, анализатор запроса ищет алиас с указанным именем. И, если находит, то использует в качестве источникак данных рабочую область с указанным алиасом. Другими словами, считывает буфер таблицы.


Значит, у Вас есть две стартегии решения задачи:

1. Уменьшить интервал обновления буфера на сколько возможно.
2. Заставить читать данные не из буфера, а напрямую с диска.


Решить эту задачу также можно двумя способами:

1. Установить второй параметр настройки SET REFRESH на минимально допустимое значение (0.01) или установить значение -1, что означает читать данные с диска

Код: plaintext
1.
2.
3.
SET REFRESH TO  0 ,- 1 
SELECT ... FROM ...
SET REFRESH TO   0 ,  5  && сброс настройки в значение по умолчанию

2. Если в опции FROM команды Select-SQL указать расширение таблицы, то данные будут браться не из буфера, а напрямую из таблицы-источника

Код: plaintext
SELECT ... FROM MyTable.dbf INTO ...

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

Код: plaintext
1.
2.
USE IN (SELECT("MyTable"))
SELECT ... FROM MyTable INTO ...
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35482637
нда.... тяжелый случай... ничего не помогает....
SET REFRESH TO 0,-1 ругается на illegal value видимо потому, что 6 версия фокса... если выдержать сравнительно большую паузу перед тем, как нажать ignor, то все на печать выходит, а если нажать на ignor сразу, то ничего не печатается...
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35482883
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то, предупреждать надо о версии FoxPro.

Поскольку в VFP6 минимальное значение может быть равно 1 секунде, то и ставь принудительно секундную задержку

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE Sleep IN Win32API INTEGER  

SET REFRESH TO  5 , 1 
=Sleep( 1000 )   && количество милисекунд задержки  1000  =  1  секунда

SELECT ... FROM ... INTO

SET REFRESH TO  0  && восстанавливаю исходные настройки

В принципе, для организации задержки можно использовать и Inkey(), но это менее надежно, поскольку она "сбрасывается" при нажатии на клавиши.
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35482890
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не оно?

Purges memory cached by programs and data, and clears and refreshes buffers
for open tables.


SYS(1104 [, cAlias | nWorkArea])


Parameters
cAlias
Specifies the alias of a specific table or cursor for which cached memory
is purged.

nWorkArea
Specifies the work area of a specific table or cursor for which cached
memory is purged.

Return Value
Character. SYS(1104) returns the number of bytes that could not be purged.
SYS(1104) returns "0" if all memory is purged.

Remarks
You can improve performance by calling SYS(1104) after executing commands
that make extensive use of memory buffers. This function also clears
internal buffers for open tables, forcing the tables to be refreshed, which
is useful with large tables and in multiuser environments.

Note
The use of SYS(1104) will slow performance in applications that have a
large number of buffered tables open.



begin 666 collapse_all.gif
M1TE&.#EA"P`+`,0``)2HX_3U]0```/'R\O[^_O?W]_GY^>[N[^KKZ_O[^^7F
MY_S\_9NMY>#AXO___]O<W=77U\_0T0``````````````````````````````
M`````````````````````````"'Y! ``````+ `````+``L```4Z( .,)"DZ
M#D$LB5$$8[JV[S"JK!L,QYW7!\1H(2@:!8H1;1=4-$8Z'L+Y& &GC0=DQ,1J
)(P!1J<0(`0`[
`
end

begin 666 note.gif
M1TE&.#EA"@`*`+/_`(V,C?__S/_,`/\%!?]=7<# P-/3T\# P(6%A0("`@``
M`````````````````````"'Y! $```4`+ `````*``H`0 0H$,AI#AD@Z)U*
AR1HB)(8'<N,7&EJG;JV P4GZ&@D2(";<>HF@,.B)```[
`
end

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35483385
Ура! Заработало!
Спасибо, Владимир!!!
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35483651
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Официально SYS(1104) была введена только в VFP7. Не знаю, будет ли она работать в VFP6. Хотя, наверное, можно попробовать. Только в VFP7 еще не было второго параметра. Шло обновление всех данных во всех рабочих областях.

Код: plaintext
1.
2.
=SYS( 1104 )
SELECT ... FROM ... INTO ...
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35483844
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМОфициально SYS(1104) была введена только в VFP7. Не знаю, будет ли она работать в VFP6. Хотя, наверное, можно попробовать.
Если мне память не изменяет, то появилась она "неофициально" в каком-то из последних сервис-паков 6-ки.
...
Рейтинг: 0 / 0
Не выходит на печать отчет
    #35483983
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю как определить официальность, но до выхода 7-ки видел функцию в MSDN
и использовал в VFP6SP5


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


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