powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как проверить, что в курсоре есть записи?
13 сообщений из 13, страница 1 из 1
Как проверить, что в курсоре есть записи?
    #36271488
Hannibass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый вечер!
Подскажите! Есть SELECT, который делает выборку записей в именованный курсор.Как узнать, есть ли записи в этом курсоре?
Вот код.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
*** Вводим через форму отчетные месяц и год ***

LOCAL iMonth,cYear
iMonth = ThisForm.Spinner1.Value
cYear  = Thisform.Text1.Value

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

SELECT Payments.date_pay, Payments.name_pay, Payments.sum_pay ;
	FROM cassa!payments ;
	WHERE iMonth == Payments.rep_month AND VAL(cYear) == Payments.rep_year ;
	ORDER BY Payments.date_pay ;
	INTO CURSOR EXPENSE
USE  EXPENSE
IF RECCOUNT()> 0  

*** Если в курсоре EXPENSE есть записи то выводим их в превью отчета ***
	
REPORT FORM cassa\reports\expenses_month.frx TO PRINTER PROMPT PREVIEW IN SCREEN NOCONSOLE
ELSE

*** Иначе выводим превью отчета, который сообщает, что искомых записей не найдено ***

	REPORT FORM cassa\reports\no_records.frx TO PRINTER PROMPT PREVIEW IN SCREEN NOCONSOLE
ENDIF

*** Выходим из этой формы ***
ThisForm.Release()
VFP6 говорит, что файл Expense.dbf не существует. Что в общем верно, такой таблицы не существуе.
Как быть?
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36271500
Nnnnnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Hannibass,

_TALLY
Содержит число записей, обработанных самой последней выполнявшейся табличной командой... и т.д.

Если записи есть, то Tally не 0
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36271502
Hannibass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, попробую!
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36271505
Hannibass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nnnnnn !
Спасибо . Сработало.
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36271666
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Hannibass,
Сомневаюсь, что сработало должным образом (если конечно вышеприведенный код остался без изменения)

1. Команда SELECT ... INTO CURSOR создает курсор (временную таблицу-результат выборки), причем рабочая область, в которой он создается, автоматически становится текущей. Если в исходной таблице не нашлось записей, удовлетворяющих условию, он просто будет пустым (reccount()=0). Вы же пытаетесь переоткрыть его заново USE EXPENSE, вот Fox и ругается на попытку открытия несуществующей таблицы;

2. Выбор месяца целесообразней и понятнее для пользователей оформить в виде ComboBox, а Spinner использовать для ввода года. Отпадает необходимость в изменении типа переменной cYear.

3. == хотя и не приводит к ошибке, традиционно имеет другое назначение: точное сравнение строковых выражений.
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36271668
Nnnnnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GermanGM,

вот честно, текст кода не читала =) человек спросил как записи подсчитать - я подсказала.
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36271692
Hannibass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GermanGM! Спасибо за советы!
1) Попробую и такой код(Т.е. уберу USE EXPENSE), отпишу результат.
2) Твоим советом буду пользоваться в дальнейшем. Действительно, лучше делать проверку на корректность данных, если Year будед типа INTEGER! (ЭТО МОЯ ПЕРВАЯ ПРОГРАММА)
3)Чем воспользоваться здесь взамен ==?

Nnnnnn!
Но твоя подсказка очень хорошо сработала!
СПАСИБО!
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36271700
Hannibass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GermanGM
1) Код работает.Значит ошибку давало USE EXPENSE.
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36271715
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hannibass,

3) "одинарным" =.
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36271771
Hannibass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GermanGM
Ты хочешь сказать, что при одинарном = будет совпадение (.T.), я считал, что это похоже на оператор присвоения, но в этом контксте- НЕТ? В чем будет отличие здесь между "=" и "=="?
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36271806
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HannibassВ чем будет отличие здесь между "=" и "=="?
В твоем случае (для чисел) оба оператора равнозначны.

Отличия есть при сравнении строк. Запусти:
Код: plaintext
1.
2.
3.
SET COLLATE to "RUSSIAN"
SET EXACT OFF
? 'QWE' = 'qwe', 'QWE' == 'qwe'
? 'QWE' = 'qw', 'QWE' == 'qw'

== дает .T. только если строки полностью идентичны, независимо от настроек среды.
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36271807
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hannibass, =) если сравниваете НЕсимвольные выражения, разницы не будет.
...
Рейтинг: 0 / 0
Как проверить, что в курсоре есть записи?
    #36272149
Hannibass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понял, отличия только при символьном типе.
Спасибо.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как проверить, что в курсоре есть записи?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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