:: Архив конференции по VFP до 2005 года
requery
Кэт
Автор

Сообщений: 408
Дата регистрации: 11.11.2002
Цитата из Максимова:
"Особенность заключается только в случае использования параметризированных View.
В этом случае, чтобы при открытии формы не возникал запрос на
ввод значения параметра View в свойствах View
в DataEnvironment следует установить значение NoDataOnLoad=.T.,
а в методе Init-формы следует задать значение параметра и
выполнить перезапрос View, примерно так:
LOCAL ParamView
ParamView=1
=ReQuery("MyLocalView") """""

Вродь делаю так
1-добавлено в окружение параметрическое вью
2-Свойство Cursor NoDataOnLoad=.T.
3-Создала дополнительный метод Myrequery() в котором
WAIT CLEAR
WAIT WINDOW("Подождите пожалуйста," +CHR(13)+;
"идет выборка данных.....") NOWAIT
THISFORM.LockScreen= .T.

&& сохранить ControlSource каждой колонки
with ThisForm.grid1
local nColumnIndex
for m.nColumnIndex = 1 to .ColumnCount
.Columns(m.nColumnIndex).Comment = .Columns(m.nColumnIndex).ControlSource
endfor
endwith

*Формируем параметры вью
*THISForm.Cntwhere1 -это контейнер выбора дат(первой и второй),
*в ините задано умолчание за последние 3 месяца
*с этими свойствами все нормально.
DATE1=THISForm.Cntwhere1.returndate1
DATE2=THISForm.Cntwhere1.returndate2


ThisForm.grid1.RecordSource=""
=REQUERY('osnova1')
ThisForm.grid1.RecordSource="osnova1"

&& восстановить ControlSource каждой колонки
with ThisForm.grid1
local nColumnIndex
for m.nColumnIndex = 1 to .ColumnCount
if !empty(.Columns(m.nColumnIndex).Comment)
.Columns(m.nColumnIndex).ControlSource = .Columns(m.nColumnIndex).Comment
endif
endfor
endwith

thisForm.Refresh()
THISFORM.LockScreen=.f.
WAIT CLEAR


4-это метод вызываю в ините формы.
Сессия дефолтная, вообще надо бы приватную, но пока
с дефолтной не могу разобраться!
Все нормально, вьюха формируется, все корректно,
выбирается согласно датам по умолчанию(THISForm.Cntwhere1.returndate1)

5-Значит меняю в контейнере выбора дат интервал дат
Повтрно вызываю метод Myrequery()
Если предстоящая выборка по измененным датам
не будет отличаться!, то все корректно.

Проблемы возникают если выборка должна измениться
(ну по количеству записей должно быть например меньше, выбираю например
за последний месяц), то вываливает ошибку 1494,
""" [Определение представления было изменено]
Изменилось определение представления в базе данных.
В такое представление нельзя выдать повторный запрос.
Закройте представление, а затем откройте его снова.
Чтобы исключить возможность изменения представления,
откройте базу данных в эксклюзивном режиме."""""

Как изменилось представление?
Ну наверно изменилось, коль я туда передала параметры другие
Ну и чего он мне предлагает?
Сделала я так
LOCAL DATE1,DATE2
DATE1=THISForm.Cntwhere1.returndate1
DATE2=THISForm.Cntwhere1.returndate2
ThisForm.grid1.RecordSource=""
IF USED ('osnova1')
SELECT osnova1
USE
ENDIF
USE osnova1
=REQUERY('osnova1')
Вродь все нормально работает.

Но чего то мне это мне нравиться,
ладно, в этой форме я буду вызывать
этот метод, но при работе планируется
вызывать и другие формы, а там уж геморой начнется с вызыванием метода
этой формы
Да и приватно й сессси не находит он такой алиас USE osnova1
Все понятно, проблемы решаемы, но большоими усилиями...
Подскажите чего не правильно делаю...
Почему тока REQUERY('osnova1') не прокатывает?
и как это побороть?
Спасибо заранее
Ratings: 0 negative/0 positive
Re: requery
AnatolyS

Сообщений: 4565
Откуда: Санкт-Петербург
Дата регистрации: 21.01.2002
Чтобы ответить на Ваш вопрос необходимо взглянуть на Ваш запрос, так как ошибка кроется именно в нем.
Ratings: 0 negative/0 positive
Re: requery
Кэт
Автор

Сообщений: 408
Дата регистрации: 11.11.2002
Вот формирование вьюхи
CREATE SQL VIEW osnova1 AS ;
SELECT Osnova.id_boln,Osnova.istor_boles,;
Osnova.fio, Osnova.pol_o, Osnova.in_oitr,;
Osnova.date_postup, Osnova.ist_post_o,;
Osnova.xar_post_o, Osnova.povtor_post,;
Osnova.date_rozden, Osnova.vozrast,;
Osnova.novor, Osnova.massa, Osnova.srok_gest,;
Osnova.ration_o, Osnova.adres, Osnova.diagn_o,;
Osnova.codmkb_o, Osnova.diag_osn, Osnova.dias_kon,;
Osnova.diag_osl, Osnova.diad_sop, Osnova.diag_fon,;
Osnova.diag_pa_os, Osnova.diag_pa_ko, ;
Osnova.diag_pa_osl, Osnova.diag_pa_sop,;
Osnova.diag_pa_fon, Osnova.rasx_ds_o, ;
Osnova.reserv, Osnova.rkc, Osnova.isxod_o,;
Osnova.date_perev, Osnova.kommens,;
NVL(A.pol,Space(10))as pol,;
NVL(D.diagnos,Space(50))as diagnos,;
NVL(E.ration,Space(50))as ration,;
NVL(F.xarak_post ,Space(50))as xarak_post,;
NVL(G.isxod ,Space(50))as isxod ,;
NVL(H.Ist_post ,Space(50))as Ist_post,;
NVL(I.rasx_ds ,Space(50))as rasx_ds;
FROM oitr!Osnova;
LEFT JOIN oitr!pol A ON A.id_pol = Osnova.pol_o;
LEFT JOIN oitr!ref_diagnos D ON D.id_diagnos = Osnova.diagn_o;
LEFT JOIN oitr!ref_ration E ON E.id_ration = Osnova.ration_o;
LEFT JOIN oitr!ref_xarak_post F ON F.id_xar_pos = Osnova.xar_post_o ;
LEFT JOIN oitr!ref_isxod G ON G.id_isxod = Osnova.isxod_o;
LEFT JOIN oitr!ref_ist_post H ON H.id_ist_pos = Osnova.ist_post_o;
LEFT JOIN oitr!ref_rasx_ds I ON I.id_rasx_ds =Osnova.rasx_ds_o;
WHERE BETWEEN(Osnova.date_postup,?DATE1,?DATE2);
ORDER BY date_postup DESCending

*WHERE Osnova.date_postup BETWEEN ?DATE1 .AND. ?DATE2;

DBSetProp('osnova1',"View","SendUpdates",.T.) && Делаем представление обновляемым
DBSetProp('osnova1',"View","BatchUpdateCount",1)
DBSetProp('osnova1',"View","CompareMemo",.T.)
DBSetProp('osnova1',"View","FetchAsNeeded",.F.)
DBSetProp('osnova1',"View","FetchMemo",.T.)
DBSetProp('osnova1',"View","FetchSize",100)
DBSetProp('osnova1',"View","MaxRecords",-1)
DBSetProp('osnova1',"View","Prepared",.F.)
DBSetProp('osnova1',"View","ShareConnection",.F.)
DBSetProp('osnova1',"View","UpdateType",1)
DBSetProp('osnova1',"View","UseMemoSize",255)
DBSetProp('osnova1',"View","Tables","oitr!osnova") && Указываем таблицы для обновления
DBSetProp('osnova1',"View","WhereType",3)


* Указываем какое поле представления что обновляет

* Почитала, что надо указать ключевые поля(хотя мне не надо обновлять их)-не помогает
DBSetProp(osnova1+".id_boln","Field","DataType","I")
DBSetProp(osnova1+".id_boln","Field","UpdateName","oitr!osnova.id_boln")
DBSetProp(osnova1+".id_boln","Field","KeyField",.T.)
DBSetProp(osnova1+".id_boln","Field","Updatable",.T.)


DBSetProp('osnova1'+".istor_boles","Field","DataType","I")
DBSetProp('osnova1'+".istor_boles","Field","UpdateName","oitr!osnova.istor_boles")
DBSetProp('osnova1'+".istor_boles","Field","KeyField",.F.)
DBSetProp('osnova1'+".istor_boles","Field","Updatable",.T.)

DBSetProp('osnova1'+".fio","Field","DataType","C(15)")
DBSetProp('osnova1'+".fio","Field","UpdateName","oitr!osnova.fio")
DBSetProp('osnova1'+".fio","Field","KeyField",.F.)
DBSetProp('osnova1'+".fio","Field","Updatable",.T.)

DBSetProp('osnova1'+".pol_o","Field","DataType","I")
DBSetProp('osnova1'+".pol_o","Field","UpdateName","oitr!osnova.pol_o")
DBSetProp('osnova1'+".pol_o","Field","KeyField",.F.)
DBSetProp('osnova1'+".pol_o","Field","Updatable",.T.)

DBSetProp('osnova1'+".in_oitr","Field","DataType","L")
DBSetProp('osnova1'+".in_oitr","Field","UpdateName","oitr!osnova.in_oitr")
DBSetProp('osnova1'+".in_oitr","Field","KeyField",.F.)
DBSetProp('osnova1'+".in_oitr","Field","Updatable",.T.)

DBSetProp('osnova1'+".date_postup","Field","DataType","D")
DBSetProp('osnova1'+".date_postup","Field","UpdateName","oitr!osnova.date_postup")
DBSetProp('osnova1'+".date_postup","Field","KeyField",.F.)
DBSetProp('osnova1'+".date_postup","Field","Updatable",.T.)

DBSetProp('osnova1'+".ist_post_o","Field","DataType","I")
DBSetProp('osnova1'+".ist_post_o","Field","UpdateName","oitr!osnova.ist_post_o")
DBSetProp('osnova1'+".ist_post_o","Field","KeyField",.F.)
DBSetProp('osnova1'+".ist_post_o","Field","Updatable",.T.)

DBSetProp('osnova1'+".xar_post_o","Field","DataType","I")
DBSetProp('osnova1'+".xar_post_o","Field","UpdateName","oitr!osnova.xar_post_o")
DBSetProp('osnova1'+".xar_post_o","Field","KeyField",.F.)
DBSetProp('osnova1'+".xar_post_o","Field","Updatable",.T.)

DBSetProp('osnova1'+".povtor_post","Field","DataType","L")
DBSetProp('osnova1'+".povtor_post","Field","UpdateName","oitr!osnova.povtor_post")
DBSetProp('osnova1'+".povtor_post","Field","KeyField",.F.)
DBSetProp('osnova1'+".povtor_post","Field","Updatable",.T.)

DBSetProp('osnova1'+".date_rozden","Field","DataType","D")
DBSetProp('osnova1'+".date_rozden","Field","UpdateName","oitr!osnova.date_rozden")
DBSetProp('osnova1'+".date_rozden","Field","KeyField",.F.)
DBSetProp('osnova1'+".date_rozden","Field","Updatable",.T.)

DBSetProp('osnova1'+".vozrast","Field","DataType","C(50)")
DBSetProp('osnova1'+".vozrast","Field","UpdateName","oitr!osnova.vozrast")
DBSetProp('osnova1'+".vozrast","Field","KeyField",.F.)
DBSetProp('osnova1'+".vozrast","Field","Updatable",.T.)

DBSetProp('osnova1'+".novor","Field","DataType","L")
DBSetProp('osnova1'+".novor","Field","UpdateName","oitr!osnova.novor")
DBSetProp('osnova1'+".novor","Field","KeyField",.F.)
DBSetProp('osnova1'+".novor","Field","Updatable",.T.)

DBSetProp('osnova1'+".massa","Field","DataType","N(5)")
DBSetProp('osnova1'+".massa","Field","UpdateName","oitr!osnova.massa")
DBSetProp('osnova1'+".massa","Field","KeyField",.F.)
DBSetProp('osnova1'+".massa","Field","Updatable",.T.)

DBSetProp('osnova1'+".srok_gest","Field","DataType","N(4,1)")
DBSetProp('osnova1'+".srok_gest","Field","UpdateName","oitr!osnova.srok_gest")
DBSetProp('osnova1'+".srok_gest","Field","KeyField",.F.)
DBSetProp('osnova1'+".srok_gest","Field","Updatable",.T.)

DBSetProp('osnova1'+".ration_o","Field","DataType","I")
DBSetProp('osnova1'+".ration_o","Field","UpdateName","oitr!osnova.ration_o")
DBSetProp('osnova1'+".ration_o","Field","KeyField",.F.)
DBSetProp('osnova1'+".ration_o","Field","Updatable",.T.)

DBSetProp('osnova1'+".adres","Field","DataType","C(40)")
DBSetProp('osnova1'+".adres","Field","UpdateName","oitr!osnova.adres")
DBSetProp('osnova1'+".adres","Field","KeyField",.F.)
DBSetProp('osnova1'+".adres","Field","Updatable",.T.)

DBSetProp('osnova1'+".diagn_o","Field","DataType","I")
DBSetProp('osnova1'+".diagn_o","Field","UpdateName","oitr!osnova.diagn_o")
DBSetProp('osnova1'+".diagn_o","Field","KeyField",.F.)
DBSetProp('osnova1'+".diagn_o","Field","Updatable",.T.)

DBSetProp('osnova1'+".codmkb_o","Field","DataType","I")
DBSetProp('osnova1'+".codmkb_o","Field","UpdateName","oitr!osnova.codmkb_o")
DBSetProp('osnova1'+".codmkb_o","Field","KeyField",.F.)
DBSetProp('osnova1'+".codmkb_o","Field","Updatable",.T.)

DBSetProp('osnova1'+".diag_osn","Field","DataType","C(254)")
DBSetProp('osnova1'+".diag_osn","Field","UpdateName","oitr!osnova.diag_osn")
DBSetProp('osnova1'+".diag_osn","Field","KeyField",.F.)
DBSetProp('osnova1'+".diag_osn","Field","Updatable",.T.)

DBSetProp('osnova1'+".dias_kon","Field","DataType","C(50)")
DBSetProp('osnova1'+".dias_kon","Field","UpdateName","oitr!osnova.dias_kon")
DBSetProp('osnova1'+".dias_kon","Field","KeyField",.F.)
DBSetProp('osnova1'+".dias_kon","Field","Updatable",.T.)

DBSetProp('osnova1'+".diag_osl","Field","DataType","C(50)")
DBSetProp('osnova1'+".diag_osl","Field","UpdateName","oitr!osnova.diag_osl")
DBSetProp('osnova1'+".diag_osl","Field","KeyField",.F.)
DBSetProp('osnova1'+".diag_osl","Field","Updatable",.T.)

DBSetProp('osnova1'+".diad_sop","Field","DataType","C(50)")
DBSetProp('osnova1'+".diad_sop","Field","UpdateName","oitr!osnova.diad_sop")
DBSetProp('osnova1'+".diad_sop","Field","KeyField",.F.)
DBSetProp('osnova1'+".diad_sop","Field","Updatable",.T.)

DBSetProp('osnova1'+".diag_fon","Field","DataType","C(50)")
DBSetProp('osnova1'+".diag_fon","Field","UpdateName","oitr!osnova.diag_fon")
DBSetProp('osnova1'+".diag_fon","Field","KeyField",.F.)
DBSetProp('osnova1'+".diag_fon","Field","Updatable",.T.)


DBSetProp('osnova1'+".diag_pa_os","Field","DataType","C(50)")
DBSetProp('osnova1'+".diag_pa_os","Field","UpdateName","oitr!osnova.diag_pa_os")
DBSetProp('osnova1'+".diag_pa_os","Field","KeyField",.F.)
DBSetProp('osnova1'+".diag_pa_os","Field","Updatable",.T.)

DBSetProp('osnova1'+".diag_pa_ko","Field","DataType","C(50)")
DBSetProp('osnova1'+".diag_pa_ko","Field","UpdateName","oitr!osnova.diag_pa_ko")
DBSetProp('osnova1'+".diag_pa_ko","Field","KeyField",.F.)
DBSetProp('osnova1'+".diag_pa_ko","Field","Updatable",.T.)

DBSetProp('osnova1'+".diag_pa_osl","Field","DataType","C(50)")
DBSetProp('osnova1'+".diag_pa_osl","Field","UpdateName","oitr!osnova.diag_pa_osl")
DBSetProp('osnova1'+".diag_pa_osl","Field","KeyField",.F.)
DBSetProp('osnova1'+".diag_pa_osl","Field","Updatable",.T.)

DBSetProp('osnova1'+".diag_pa_sop","Field","DataType","C(50)")
DBSetProp('osnova1'+".diag_pa_sop","Field","UpdateName","oitr!osnova.diag_pa_sop")
DBSetProp('osnova1'+".diag_pa_sop","Field","KeyField",.F.)
DBSetProp('osnova1'+".diag_pa_sop","Field","Updatable",.T.)

DBSetProp('osnova1'+".diag_pa_fon","Field","DataType","C(50)")
DBSetProp('osnova1'+".diag_pa_fon","Field","UpdateName","oitr!osnova.diag_pa_fon")
DBSetProp('osnova1'+".diag_pa_fon","Field","KeyField",.F.)
DBSetProp('osnova1'+".diag_pa_fon","Field","Updatable",.T.)

DBSetProp('osnova1'+".rasx_ds_o","Field","DataType","I")
DBSetProp('osnova1'+".rasx_ds_o","Field","UpdateName","oitr!osnova.rasx_ds_o")
DBSetProp('osnova1'+".rasx_ds_o","Field","KeyField",.F.)
DBSetProp('osnova1'+".rasx_ds_o","Field","Updatable",.T.)

DBSetProp('osnova1'+".reserv","Field","DataType","C(50)")
DBSetProp('osnova1'+".reserv","Field","UpdateName","oitr!osnova.reserv")
DBSetProp('osnova1'+".reserv","Field","KeyField",.F.)
DBSetProp('osnova1'+".reserv","Field","Updatable",.T.)



DBSetProp('osnova1'+".rkc","Field","DataType","L")
DBSetProp('osnova1'+".rkc","Field","UpdateName","oitr!osnova.rkc")
DBSetProp('osnova1'+".rkc","Field","KeyField",.F.)
DBSetProp('osnova1'+".rkc","Field","Updatable",.T.)

DBSetProp('osnova1'+".isxod_o","Field","DataType","I")
DBSetProp('osnova1'+".isxod_o","Field","UpdateName","oitr!osnova.isxod_o")
DBSetProp('osnova1'+".isxod_o","Field","KeyField",.F.)
DBSetProp('osnova1'+".isxod_o","Field","Updatable",.T.)

DBSetProp('osnova1'+".date_perev","Field","DataType","D")
DBSetProp('osnova1'+".date_perev","Field","UpdateName","oitr!osnova.date_perev")
DBSetProp('osnova1'+".date_perev","Field","KeyField",.F.)
DBSetProp('osnova1'+".date_perev","Field","Updatable",.T.)

DBSetProp('osnova1'+".kommens","Field","DataType","M NOCPTRANS")
DBSetProp('osnova1'+".kommens","Field","UpdateName","oitr!osnova.kommens")
DBSetProp('osnova1'+".kommens","Field","KeyField",.F.)
DBSetProp('osnova1'+".kommens","Field","Updatable",.T.)



[i][small][color=Gray]Отредактировано (14.02.04 02:54)


------------------
Ratings: 0 negative/0 positive
Re: requery
AnatolyS

Сообщений: 4565
Откуда: Санкт-Петербург
Дата регистрации: 21.01.2002
1) Чтобы не зависеть от длин полей лучше всего отказаться от конкретных значений в функции SPACE:

NVL(A.pol,Space(LEN(A.pol)))as pol,;
NVL(D.diagnos,Space(LEN(D.diagnos))) as diagnos,;
NVL(E.ration,Space(LEN(E.ration)))as ration,;
NVL(F.xarak_post ,Space(LEN(F.xarak_post)))as xarak_post,;
NVL(G.isxod ,Space(LEN(G.isxod)))as isxod ,;
NVL(H.Ist_post ,Space(LEN(H.Ist_post)))as Ist_post,;
NVL(I.rasx_ds ,Space(LEN(I.rasx_ds)))as rasx_ds;

либо прописать типы полей pol, diagnos, ration, xarak_post, isxod, ist_post, rasx_ds с помощью dbsetprop - их у Вас, как раз, и нет.

2) Попробуйте привести в порядок JOIN-ы:
...
FROM oitr!Osnova;
LEFT JOIN oitr!pol A ON Osnova.pol_o = A.id_pol;
LEFT JOIN oitr!ref_diagnos D ON Osnova.diagn_o = D.id_diagnos;
LEFT JOIN oitr!ref_ration E ON Osnova.ration_o = E.id_ration;
LEFT JOIN oitr!ref_xarak_post F ON Osnova.xar_post_o = F.id_xar_pos;
LEFT JOIN oitr!ref_isxod G ON Osnova.isxod_o = G.id_isxod;
LEFT JOIN oitr!ref_ist_post H ON Osnova.ist_post_o = H.id_ist_pos;
LEFT JOIN oitr!ref_rasx_ds I ON Osnova.rasx_ds_o = I.id_rasx_ds;
...

Удачи.
Ratings: 0 negative/0 positive
Re: requery
Syberex

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Что бы не писать такие запросы вручную
и не определять свойства полей каждый раз
во время работы формы - есть виды хранимые в базе
данных, причем они быстрей работают!




------------------
Ratings: 0 negative/0 positive
Re: requery
AnatolyS

Сообщений: 4565
Откуда: Санкт-Петербург
Дата регистрации: 21.01.2002
Да? Быстрее работают? А мне казалось, что у них просто способ создания разный. Здесь приведен ручной, Вы предпочитаете дизайнер вида. Уверяю Вас, что это не влияет на скорость выполнения вида Да, создать быстрее с помощью дизайнера, но есть случаи, когда дизайнер не справляется с задачей формирования корректного запроса. Пример Кэт из их числа.

В качестве упражнения попробуйте составить с помощью дизайнера вида такого рода запрос.
Ratings: 0 negative/0 positive
Re: requery
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Цитата:
NVL(A.pol,Space(10))as pol,;
NVL(D.diagnos,Space(50))as diagnos,;
NVL(E.ration,Space(50))as ration,;
NVL(F.xarak_post ,Space(50))as xarak_post,;
NVL(G.isxod ,Space(50))as isxod ,;
NVL(H.Ist_post ,Space(50))as Ist_post,;
NVL(I.rasx_ds ,Space(50))as rasx_ds;
Тут ещё 7 раз преверь соответствие размера поля прицепляемой
таблицы и размера SPACE() - конечно все поля должны быть текстовые, иначе
надо не SPACE юзать...
А потом ещё можно и в списке DBSETPROP-ов эти поля прописать (DataType-ы их
по крайней мере).
99% ошибок указанного рода идут от того, что размер некоторого поля
представления измеяется при перезапросе, т.е. например если A.pol имеет тип
C(20), то в зависиомости от целого ряда условий (параметров запроса,
физического следования записей в таблице) в результате выборки первым может
попасть либо реальное поле - и тогда размер будет 20, либо "пропущенное"
(т.е. NULL) и тогда размер будет 10. При перезапросах всё может
перевернуться и возникнет указанная ошибка.
P.S. Для обычного REQUERY() шаманить с гридом не надо - он не разрушается,
НО Если потом будет сделан переход от прямого REQUERY() к чему-то более
навороченному (скажем БД переедет на какой-нить SQL сервер, и захочется
вместо RV юзать SQL Pass Through - тады код "сохранения грида" пригодится.)
P.P.S. Код "сохранения грида" IMHO гораздо логичнее поместить в метод самого
грида... Я скажем его вообще навесил на ASSING-метод дополнительного
свойства моего класса грида lReconstructing - когда свойство переходит в
.T. - грид "сохраняется", когда в .F. - "восстаавливается". И ещё - я не
юзаю Comment для сохранения, а добавляю прям в рантайме через AddProperty
(IF PEMSTATUS(This, "имя_свойства", 5) чтоб не добавлять уже существующее
свойство) свои свойства для "хранения" установок...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: requery
Syberex

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Цитата:
но есть случаи, когда дизайнер не справляется с задачей формирования корректного запроса. Пример Кэт из их числа.
Согласен! Предлагаю один раз из кода занести в контейнер базы вид,
затем открыть дизайнер (не трогая вкладку Filter) проставить галочки для полей
и сохранить.
Конечно код запроса терять нельзя, но в проге он не понадобится.




------------------
Ratings: 0 negative/0 positive
Re: requery
Кэт
Автор

Сообщений: 408
Дата регистрации: 11.11.2002
Начинаю отвечать всем, вернее спрашивать
1)Для Syberex
>Что бы не писать такие запросы вручную
>и не определять свойства полей каждый раз
>во время работы формы - есть виды хранимые в базе
>данных, причем они быстрей работают!
Извините меня конечно, но Вы невнимательно прочли вопрос
Я не создаю ЗАПРОС, а создаю "модифицируещее" представление
>Вот формирование вьюхи
>CREATE SQL VIEW osnova1 AS ;
>SELECT Osnova.id_boln,Osnova.istor_boles,;...............
И даже при таком (!-метода создания как у меня,
если я не ошибаюсь, оно все равно будет храниться в
контейнере баз, и я не буду каждый раз пересоздавать его
для получения результатов, а буду вызывать его только на выполнение.
А так для надежности, вообще то можно оформить эту
програмку как служебную функцию и в ЭКСЛЮЗИВНОМ
режиме войти в БД и изменить.
*Это я так про себя думаю, так что поправьте профи.
2)
>затем открыть дизайнер (не трогая вкладку Filter) проставить галочки для полей
>и сохранить.
Вообще то, как бы я не пыталась, создав приемлимо работающее
представление(см. ниже как), не могла открыть его в дизайнере на
модификацию.
Вопрос:
-то ли это по определению не получиться, создавая представление програмно?
-то ли оно у меня опять не правильно создано.

Для Анатолия:
1) попытка отказаться от длин полей таким способом не катит
>Чтобы не зависеть от длин полей лучше всего отказаться от конкретных значений в функции SPACE:
типа NVL(A.pol,Space(LEN(A.pol)))as pol,;
Все равно приводит, вероятно, к тому, что при разных выборках, попадают
первыми разные значения и размерность поля изменяется.
Потому вариант Игоря Королева , с жестким заданием размера полей
здесь подходит
2)
>Попробуйте привести в порядок JOIN-ы:
Все привела, и поняла почему- усе подходит


Для Игоря Королева.
Очень Вам благодарна, наставили на путь истинный.....
1)
>99% ошибок указанного рода идут от того, что размер некоторого поля
>представления измеяется при перезапросе
Статистика вещь упрямая, потому бодала по Вашему варианту, и
в конце концов привела все поля к необходимым, жестким размерам.
2)
>P.P.S. Код "сохранения грида" IMHO гораздо логичнее поместить в метод самого
>грида... Я скажем его вообще навесил на ASSING-метод дополнительного......
Не мне конечно с Вами дискутировать, не все подводные камни я могу почувствовать,
но для меня проще написать(А по прошествии времени и понять свой код)
10 лишних строчек кода в одном методе,
чем создавать лишние свойства, и потом в них разбираться.
Помимаю, что это на любителя, прошу женщин не пинать. :-0.

еще возникает параллельно вопрос:
Метод Myrequery()
Вот задали параметры
LOCAL DATE1,DATE2
DATE1=THISForm.Cntwhere1.returndate1
DATE2=THISForm.Cntwhere1.returndate2
=REQUERY('osnova1')
Все нормально вызываем в этой форме.

Вот вызвали другую форму из
этой на редактирование записи
DO FORM redosnova1 WITH 'red'
В форме redosnova1 тоже необходимо
REQUERY()
Понятно, что просто вызвать
REQUERY() не покатит, надо передать(задать) параметры
Вопрос, как сделать
1)Может в методе Myrequery()
сделать их глобальной переменной
PUBLIC DATE1,DATE2
DATE1=THISForm.Cntwhere1.returndate1
DATE2=THISForm.Cntwhere1.returndate2
и оставить просто REQUERY()
2)ВЫзывать метод так
MyformName.Myrequery()
Как сделать лучше?или 3-й вариант какой...
С учетом использоваия приватных сессий!!
Спасибо большое.
Ratings: 0 negative/0 positive
Re: requery
Syberex

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Кэт
Работаю с приватными сессиями, для параметров
в видах делаю глобальные переменные,
перед вызовом Requery() в эти переменные заносим
нужные значения и вызываем его (Requery()...)
Формы сприватными сессиями не должны запутаться,
так как обновления одновременно в нескольких происходить
не должны... (в крайних случаях можно об этом специально
позаботится и обновлять по очереди)

Цитата:
Вообще то, как бы я не пыталась, создав приемлимо работающее
представление(см. ниже как), не могла открыть его в дизайнере на
модификацию.
Проверю сам и напишу результат. Конечно на своем запросе...

Цитата:
Я не создаю ЗАПРОС, а создаю "модифицируещее" представление
Модифицируемый вид (курсор)... или представление (кому как...)
На самом деле это курсор... по крайней мере для Фокса...
Если создавать его каждый раз при выполнении программы,
то наверняка и получите такую фразу
Цитата:
[Определение представления было изменено]
Цитата:
и я не буду каждый раз пересоздавать его
для получения результатов, а буду вызывать его только на выполнение.
Вижу вы на првильном пути...

Цитата:
А так для надежности, вообще то можно оформить эту
програмку как служебную функцию и в ЭКСЛЮЗИВНОМ
режиме войти в БД и изменить.
Пользователям это не нужно, а контейнере базы не потеряется ...
Конечно спецом можно придумать ситуации -
но все проверить вы не сможете и не надо!
Если файл базы есть на диске - открываем, дальше без проблем...




------------------
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 3 (Гостей: 3)

© 2000-2024 Fox Club 
Яндекс.Метрика