powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select Where UDF
2 сообщений из 2, страница 1 из 1
Select Where UDF
    #32589240
Serg1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не работает у меня такая конструкция. Почему? :
...
use vx
select * from vx;
where ds();
into dbf tim
...
return

Function Ds
Priv e
e=.t.
sele vx
do case
case empty(dat_isp)
e=.f.
return e
case !empty(psp)
e=.f.
return e
case Ff1(dat_isp)>Ff1(date())
e=.f.
return e
endcase
return e

dat_isp D, psp C(2) – поля таблицы vx.

по некоторым условиям записи из vx.dbf в выборку не должны попадать,
остальные – попадают. Только не предлагайте поместить условие прямо в where,
так не всегда можно его корректно сформировать.
К тому же хотелось бы понять – возможно ли формирование условия Where в пользовательской функции, или только явно его надо указывать.
В режиме трассировки, постоянно выполняется функция Ds, но указатель записи в VX почему-то НЕ двигается – все время выполняется проверка первой записи.
Причем без трассировки – программа не виснет, но выборка пуста.
За перемещение указателя записи в select кто отвечает в данном случае?


Помогите пожалуйста разобраться.
...
Рейтинг: 0 / 0
Select Where UDF
    #32589294
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не будет.

Используемые в SELECTах UDFы не должны опираться на предполагаемое положение указателя записи.

Но можно передать dat_isp и psp прямо из запроса как параметры функции Ds
и уже их анализировать.
Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
...
use vx

select * from vx a ;
where ds(a.psp,a.dat_isp);
into dbf tim
...
return

* *****
Function Ds
lparameters lpsp, ldat_isp
local e
e=.t.
if empty(ldat_isp) or !empty(lpsp) or Ff1(ldat_isp)>Ff1(date()
    e=.f.
endif
return e
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select Where UDF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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