Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
LocalView's помогите (to Igor Korolyov or anybody)
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov (из темы: <почему 'LocalView_а' - а не 'LocalView'>) Hi help123! К слову - использовать такие "многоуровневые" представления нужно с ОЧЕНЬ большой осторожностью, и лишь ПОЛНОСТЬЮ понимая ограничения и особенности такого использования. Иначе будет больше проблем, чем пользы. Приветствую Вас. А еще хотелось бы знать из практики - какие есть особенности использования вот таких вот вложеных представлений до трех уровней . Просто уже подошел к написанию отчета в проэкте, а он достаточно сложный, и как не мудрил, а вот без таких вот вложенных представлений не обойтись (по крайней мере пока). И вот еще столкнулся с проблемами: - 1) при Requery одного из представлений вылетает ошибка: View definition has been changed , у меня там есть поле где используется переменная ?v_reck6: SUM(IIF(Mparent.receiverk=?v_reck6,IIF(Mparent.dakt={},Mchild.netto4k,Mchild.clear),0)) AS rec6tn - 2) задолбали эти переменные в полях в LV (у меня их там 6 штук). Ну везде в DE формы стоит NoDataOnLoad = .T., а запросы на переменные все равно вылетают перед запуском формы. Вот от этого и становится грусно PS:создал новую тему, сори, не пинайте сильно....... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 11:33 |
|
||
|
LocalView's помогите (to Igor Korolyov or anybody)
|
|||
|---|---|---|---|
|
#18+
... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 13:35 |
|
||
|
LocalView's помогите (to Igor Korolyov or anybody)
|
|||
|---|---|---|---|
|
#18+
Продолжаю сам с собой......... мой LocalView: - mparent.sellerk - SUM(IIF(Mparent.receiverk=?v_reck1,IIF(Mparent.dakt={},Mchild.netto4k,Mchild.clear),0)) AS rec1tn - SUM(IIF(Mparent.receiverk=?v_reck2,IIF(Mparent.dakt={},Mchild.netto4k,Mchild.clear),0)) AS rec2tn - SUM(IIF(Mparent.receiverk=?v_reck3,IIF(Mparent.dakt={},Mchild.netto4k,Mchild.clear),0)) AS rec3tn - SUM(IIF(Mparent.receiverk=?v_reck4,IIF(Mparent.dakt={},Mchild.netto4k,Mchild.clear),0)) AS rec4tn - SUM(IIF(Mparent.receiverk=?v_reck5,IIF(Mparent.dakt={},Mchild.netto4k,Mchild.clear),0)) AS rec5tn - SUM(IIF(Mparent.receiverk=?v_reck6,IIF(Mparent.dakt={},Mchild.netto4k,Mchild.clear),0)) AS rec6tn filter: mparent.dsend >= date()-day(date())+1 mparent.dsend <= gomonth(date(),1)-day(gomonth(date(),1)) group by: mparent.sellerk при этом поле Mparent.receiverk (код ролучателя) у меня в таблице - Character длиной 10 символов. а переменные v_reck1,2,3,4,5,6 могут быть разной длины. Может это влияет на ошибку. Люди.... откликнитесь.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 16:52 |
|
||
|
LocalView's помогите (to Igor Korolyov or anybody)
|
|||
|---|---|---|---|
|
#18+
Может поможет вот такая информация: убрал все переменные и временно написал вместо их один сужествующий код получателя - '9991'. РАБОТАЕТ.... тоесть может дело в переменных... (в списке параметров LV эти параметры-переменные были обьявлены) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 17:06 |
|
||
|
LocalView's помогите (to Igor Korolyov or anybody)
|
|||
|---|---|---|---|
|
#18+
Да не надрывайся ты так, Игорь выходит в Internet в основном по вечерам, а на данный сайт заглядывает раз в 2...3 дня, так что если хочешь его дождаться, то не суетись, и запаcись терпением. У него еще и работа есть ;) ========= Твоя проблема заключается в том, что размерность поля в команде Select-SQL в FoxPro определяется по первой записи. Например, возьмем выражение: IIF(...,MyTab.MyField,0) Если по условию в первой записи получится значение 0, то данное поле получит рамерность N(1). Вне зависимости от того, какие значения будут в других записях. Ну, и соответсвенно, если в первой записи получится значение MyTab.MyField, то в результирующей выборке будет размерность поля MyField. Как следствие, после перезапроса может поменяться размерность поля. Отсюда и сообщение об ошибке. Уровнять размерность полей можно 2 способами 1) Указываешь в нулевом значении столько нулей, какова нужная размерность IIF(...,MyTab.MyField,000000000) 2) Делаешь вычисляемое выражение IIF(..., MyTab.MyField, MyTab.MyField-MyTab.MyField) Разница даст 0, но размерность будет взята из размерности полей, участвующих в выражении =========== У тебя переменные прописаны в свойствах Local View? Если делал View через дезайнер, то в режиме модификации View пункт меню Query->View Parameters. Там надо просто указать имя и тип параметра. Если делал View "ручками", то это свойство DBSetProp("MyView","VIEW","ParameterList","v_reck1,'C' ") =========== Теперь, какие проблемы с LocalView созданными на базе других LocalView. По сути, Local View - это оычный Select-SQL результат которого записывается в курсор. Т.е. если отвлечся от Local View, то по сути ты делаешь примерно следующее: Код: plaintext 1. 2. Таким образом, чтобы получить View3 необходимо предварительно получить View2, а чтобы получить View2 надо предварительно получить View1. Иерархия вызовов. Причем принципиально важен порядок вызовов. Я как-то не проверял, как в этом случае будет работать Requery("View3"), но подозреваю, что автоматического обновления View1 и View2 может и не произойти. Тогда принципиально важным будет вызывать Requery() в определенной последовательности. Собственно, наверно, именно это и происходит. Ты делаешь, вероятно, сначала Requery('View3'), но для его переоткрытия необходимо сделать Requery('View2'), а переменные для View2 еще не определены. Вот и идет перезапрос этих переменных. Но здесь я не уверен. Просто не проверял. Ну, и есть шанс "зациклится" с вызовами, хотя на этот предмет тоже не проверял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 22:00 |
|
||
|
LocalView's помогите (to Igor Korolyov or anybody)
|
|||
|---|---|---|---|
|
#18+
Спасибо большое за советы..... Вроди все делаю правильно но параметр перед запуском формы все равно запрашивает.... Если будет у кого-то время, то посмотрите пример, который я выложил .. (там форма problems, в DE этой формы находится LV у которого установлено NoDataOnLoad=.T. - но параметр v_rec1 (charecter) все равно запрашивается перед запуском формы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2004, 10:23 |
|
||
|
LocalView's помогите (to Igor Korolyov or anybody)
|
|||
|---|---|---|---|
|
#18+
Похоже проблема в самом View. Использование настройки NoDataOnLoad=.T. эквивалентно команде USE MyView NODATA Так вот, с вычисляемым выражением это не помогает. Срабатывает только в том случае, если параметр использован на закладке Filter, что вобщем-то логично. Поскольку открыть-то сам View необходимо, чтобы вычислить размерность полей. А для этого необходимо знать параметр! У тебя единственный выход: исключить View из DataEnvironment и открывать его вручную. Либо в методе LOAD-формы, либо в методе INIT-формы. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2004, 13:00 |
|
||
|
LocalView's помогите (to Igor Korolyov or anybody)
|
|||
|---|---|---|---|
|
#18+
Hi ВладимирМ! Спасибо за поддержку :) > У него еще и работа есть ;) У него ещё и новый год на носу. Ик! [Sorry, skipped] Блин, тока отправил в старой ветке, а оказывается ты всё по полочкам уже и разложил :) Ну да ничего: много - не мало :) > Если делал View "ручками", то это свойство > DBSetProp("MyView","VIEW","ParameterList","v_reck1,'C' ") Кстати никогда не пользовался этим "свойством" - ибо никогда не позволяю фоксу самому свой диалог ввода параметров показывать - тока через заранее созданные переменные... Ну это ещё отчасти и потому что повсеместно использую конструкцию с макро-пармером - а её ввести САМ фокс в этом "автоматическом" диалоге отчего-то не можёт. [Sorry, skipped] > Иерархия вызовов. Причем принципиально важен порядок вызовов. Абсолютно точно! > Я как-то не проверял, как в этом случае будет работать Requery("View3"), > но подозреваю, что автоматического обновления View1 и View2 может и не > произойти. Именно так плохо всё и будет :( > Тогда принципиально важным будет вызывать Requery() в определенной > последовательности. Вот вот. А плюс к тому и моё замечание по тому как фокс изначально открывает курсоры размещённые в DE. Если же ещё и вспомнить о том как непросто ОБНОВЛЯТЬ такие конструкции - ибо TableUpdate лишь пропихнёт данные из буфера View3 в буфер View2 - а оттуда ещё ой как далеко до базовой таблицы %( Потому и не стоит себе жизнь усложнять... C наступающим!!! Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2004, 19:14 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1595147]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 291ms |
| total: | 438ms |

| 0 / 0 |
