powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Локальные представления с параметром
11 сообщений из 11, страница 1 из 1
Локальные представления с параметром
    #32984891
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В теме http://]http://forum.foxclub.ru/read.php?f=5&i=110344&t=110344 затронулся разговор о применении в локальном представлении опции Where в виде:
Код: plaintext
WHERE  EVALUATE(?tcWhereString) = ( .T. )
Попробовал и не получилось. При выполнении запроса из окна Command, получаю сообщение об ошибке. Что нет закрывающей скобки ")". Хотя никакого отношения к ней не имеет места. Мой пример:

Код: 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.
Structure for table:  OSTAT.DBF
Number of data records:        1968     
Date of last update:            28 . 03 . 2005 
Code Page:    1251 
Field Field Name  Type       Width  Dec   Index   Collate  Nulls
  1    ID_MATER     Integer     4              Asc   Machine   No
  2    ACCCOD1      Character   12                             No     Счет
  3    NOMCOD       Character   11                             No     Ном.номер
  4    NOMNAM       Character   40                             No
  5    AMOUNT       Numeric     11        3                      No
  6    UNICOD       Character   5                              No
  7    PRICE        Numeric     12        2                      No
  8    SUMM         Numeric     15        2                      No
  9    L_PRINT      Logical     1                              No
** Total **                   112 

SELECT Ostat.id_mater, Ostat.acccod1 AS schet, Ostat.nomcod AS nom_nom,;
  Ostat.nomnam, Ostat.amount AS kol_vo, Ostat.unicod AS ed_izm,;
  Ostat.price AS cena, Ostat.summ, Ostat.l_print;
 FROM ;
     v_mater!ostat;
 WHERE  EVALUATE(?tcWhereString) = ( .T. );
 ORDER BY Ostat.acccod1, Ostat.nomcod

tcWhereString = "Ostat.acccod1='10.07'"

А при работе в форме вообще выдает пустое множество, хотя по факту это не так.

И в Helpе по SELECT - SQL Command нашел вот такую фразу:
Including the EVALUATE( ) function in the WHERE clause of an SQL query can return incorrect data.

Т.е. в параметризированном представлении я не д.б. использовать EVALUATE() в опции WHERE.
А как нужно составить представление с неопределенным заранее ограничением? Скажите у кого был опыт.
...
Рейтинг: 0 / 0
Локальные представления с параметром
    #32984917
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СА
А как нужно составить представление с неопределенным заранее ограничением? Скажите у кого был опыт.

Идеальный вариант в таком случае создавать виды на лету во временной бд и это только в том случае, если виды у вас модифицируемые. Если модифицировать источник данных не надо, то формировать SQL запросы проще всего на лету:

Код: plaintext
1.
lcSQL = [select * from table where ]+lcExrp +[ into cursor tresult]
&lcSQL
...
Рейтинг: 0 / 0
Локальные представления с параметром
    #32984919
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята! У меня кончился халявный Интернет на этот месяц. Результаты могу посмотреть только вечером. Извиняйте.
...
Рейтинг: 0 / 0
Локальные представления с параметром
    #32984925
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков
Идеальный вариант в таком случае создавать виды на лету во временной бд и это только в том случае, если виды у вас модифицируемые. Если модифицировать источник данных не надо, то формировать SQL запросы проще всего на лету:

Код: plaintext
1.
lcSQL = [select * from table where ]+lcExrp +[ into cursor tresult]
&lcSQL

Как раз и хотелось бы модифицировать LV. И во-вторых этот LV хочу использовать в форме, а ограничение составлять по мере надобности. Посмотрите рассуждения в теме: http://forum.foxclub.ru/read.php?f=5&i=110344&t=110344
...
Рейтинг: 0 / 0
Локальные представления с параметром
    #32984939
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз источник данных надо модифицировать, тогда чем плохо генерить виды на лету во временной бд?
...
Рейтинг: 0 / 0
Локальные представления с параметром
    #32984956
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковРаз источник данных надо модифицировать, тогда чем плохо генерить виды на лету во временной бд?
Завтра на работе проработаю. Спасибо за совет.
...
Рейтинг: 0 / 0
Локальные представления с параметром
    #32985413
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С EVAL() действительно много заморочек и в обсуждении на FOXCLUB ее использование было предложено как вариант, но остается еще старая добрая макроподстановка: select * from ... where &lcWhereString
...
Рейтинг: 0 / 0
Локальные представления с параметром
    #32987467
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Владимир СА!

Тебе в той теме был дан ответ - ссылки на соответствующие обсуждения. А EVALUATE() естественно работать и не должен.
Кратко - условие должно выглядеть как WHERE &?lcWhere - но в VFP8 оно "напрямую" не вводится (хотя работает), а в VFP9 нужно определить параметр (например в виде строки 1=1) на момент СОЗДАНИЯ и ОТКРЫТИЯ предстваления - в отличие от более старых версий, где оно нужно лишь на момент реального перезапроса данных (т.е. REQUERY() или USE БЕЗ опции NODATA).

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Локальные представления с параметром
    #32989698
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi, Igor Korolyov!
Извини, плохо разобрал твое последнее сообщение в форуме foxclub. И тебе пришлось снова ответить. На работе проработаю. Спасибо и AleksMed, честно скажу еще не успел проанализировать. На работе идет пока большая отчетность, и Foxом не успеваю поработать. Да еще Интернет на этот месяц закончился.
...
Рейтинг: 0 / 0
Локальные представления с параметром
    #32991891
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi, Igor Korolyov!
Создавая программно LV вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE SQL VIEW Lv_ostat_2 ;
AS SELECT Ostat.id_mater, Ostat.acccod1 AS schet, Ostat.nomcod AS nom_nom,;
  Ostat.nomnam, Ostat.amount AS kol_vo, Ostat.unicod AS ed_izm,;
  Ostat.price AS cena, Ostat.summ, Ostat.l_print;
 FROM v_mater!ostat;
 WHERE &?tcWhereString;
 ORDER BY Ostat.acccod1, Ostat.nomcod
и производя выполнение этого кода система выдает сообщение об ошибке: Syntax error (Error 10).
Попробовал опцию WHERE записать в виде:
Код: plaintext
 WHERE ?&tcWhereString;
LV записывается в базу. НО! При выполнении команды:
Код: plaintext
USE lv_ostat_2 AGAIN IN  0 

сразу выдается сообщение об ошибке: SQL parameter is missing (Error 1493).

Hi, Анатолий Широков!
Код: plaintext
1.
lcSQL = [select * from table where ]+lcExrp +[ into cursor tresult]
&lcSQL
По моему создает только курсор. Как я в нем изменю данные не меняя в форме перестроение GRIDа, куда курсор будет прицеплен. Для этого и имеется в Foxе представления с параметром, для которых имеется команда REQUERY(). Или я чего то не понял. И данные в исходной таблице придется менять ручками вручную, что не очень хорошо.
...
Рейтинг: 0 / 0
Локальные представления с параметром
    #32992319
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Владимир!

> и производя выполнение этого кода система выдает сообщение об ошибке: Syntax error (Error 10).

Блин, ну запусти ПОИСК на foxclub.ru - ищи по многострадальному "lcWhere" - и всё разъяснится.
Да, там всё зависит от версии фокса, о чём я уже неоднократно писал.

> Попробовал опцию WHERE записать в виде:

Бессмысленно - это не даст того-же результата.

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


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