|
|
|
Requery()
|
|||
|---|---|---|---|
|
#18+
На основе таблицы Myfile (5-буферизация) строю LV lvMyfile (5-буферизация) с фильтром-параметром по idOTDEL. Я хочу после редактирования в LV с разными значениями параметра, потом уже решать: "Сохранять или не сохранять изменения?" Как я понимаю, после изменения параметра LV обновляется. Поэтому перед очередной сменой значения параметра LV я должен делать TableUpdate(.t.,.t.,'lvMyfile'), чтобы скинуть изменения в буфер таблицы. А в конце-концов, наигравшись с различными вариантами LV, сделать Код: plaintext 1. Т.е. последовательность действий, например, при удалении: 0) Requery('lvMyfile') cо значением-1 для параметра для LV Код: plaintext 1. 2. 3. 4. 5. Видимо, Requery('lvMyfile') работает не с буфером таблицы, а с ней самой? (В Help VFP-9 на эту функцию не уточняется, откуда она черпает данные) Тогда как реализовать мою мечту? Соорудить новое LV верхом на уже имеющемся LV? Т.е. сделать еще одну "кальку с листа", как выражается Владимир М., в своей статье о LV и буферизации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 05:58 |
|
||
|
Requery()
|
|||
|---|---|---|---|
|
#18+
Когда в любом SQL-запросе, не обязательно в Local View, указывается имя базы, т.е. синтаксис вроде SELECT ... FROM data3!kart_doc То это означает "брать данные непосредственно из таблицы" (файла). А вот если используется синтаксис вроде SELECT ... FROM kart_doc то в этом случае сначала ищется рабочая область, в которой открыта таблица с алиасом (заметь, НЕ именем таблицы), совпадающем с указанным именем. И вот только если такой рабочей области не найдено, то далее осуществляется поиск таблицы (файла) с указанным именем. Опция (Buffering=.T.) - имеет смысл при буферизации, а буферизация - это свойство рабочей области, а не самой таблицы. Отсюда и такой различный результат. Т.е. надо отредактировать выражение Select-SQL с тем, чтобы убрать имя контейнера базы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 13:33 |
|
||
|
Requery()
|
|||
|---|---|---|---|
|
#18+
Hi Владимир! > Т.е. надо отредактировать выражение Select-SQL с тем, чтобы убрать имя > контейнера базы данных. И добавить в текст запроса опцию WITH (Buffering = .T.) чтобы при выборке учитывалось текущее состояние буфера, а не "начальное". При этом вроде бы перестаёт работать визуальная часть View Designer-а, но не думаю что это очень уж существенная потеря ;) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 02:17 |
|
||
|
Requery()
|
|||
|---|---|---|---|
|
#18+
Попутно возник такой вопрос: Доселе я пользовался созданным в Дизайнере LV, таким образом, что LV оставался в дизайнерской оболочке вместе с БД. И я к нему обращался, фактически, как к обычному Alias, когда делал Add в DataEnvironment какой-нибудь формы. Само собой, в Дизайнере я мог просмотреть и сгенерированный код и вносить в него изменения. Но при коррекции LV, старый код реанимировался. А можно ли этот код с моими изменениями взять и вставить в куда-нибудь в Load формы (или куда там его еще обычно вставляют? вопрос!), а потом уже пользоваться им, как обычным Alias. Или это - прерогатива Дизайнера содержать все вьюшки у себя "дома"? :) А то их так много накапливается.... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 13:45 |
|
||
|
Requery()
|
|||
|---|---|---|---|
|
#18+
Hi men dea! > Доселе я пользовался созданным в Дизайнере LV, таким образом, что LV > оставался в дизайнерской оболочке LV не имеет никакой связи с дизайнером. И разницы между View созданным в дизайнере или созданным командой CREATE SQL VIEW нет никакой. > вместе с БД. Именно в БД и хранится описание View - при этом дизайнер тут совершенно не важен. > Но при коррекции LV, старый код реанимировался. Непонятно. > А можно ли этот код с моими изменениями взять и вставить в куда-нибудь в > Load формы Нет так делать не стоит - View создаётся 1 раз и всё - при этом способ его создания значения не имеет. Пересоздавать же view при каждом запуске формы совершенно не нужно - а в многопользовательской базе так и вовсе нельзя! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2006, 20:05 |
|
||
|
Requery()
|
|||
|---|---|---|---|
|
#18+
"При этом вроде бы перестаёт работать визуальная часть View Designer-а, но не думаю что это очень уж существенная потеря ;)..." Какая визуальная часть имеется в виду, я не понял. Вроде все видно, за исключением следующего момента: Согласно вашим рецептам, командным способом я создал представление: с WITH (Buffering=.T.) В дизайнере посмотрел SQL-код новоявленного LV. Внешне ничем не отличается от представления, созданного дизайнером, хотя работает, конечно, иначе. Теперь вопросы: 1. Можно ли создать представление, учитывающее буферизацию области, дизайнерским способом? 2. Каким либо программным способом, кроме косвенных, можно определить разницу между представлениями с WITH (Buffering=.T.) и WITH(Buffering=.F.)? 3. Прочитал статью Владимира М. о "2-х кальках при LV и буферизации таблицы" (извиняюсь, что не даю ссылку, но, думаю, автор вспомнит, о чем речь) Есть ли принципиальная разница, если работаешь с Buffering=.T. или Buffering=.F. , если таблица содержит AutoInc-поле, кроме существования возможности заглянуть в будущее его значения? Мне смутно представляется цель, ради которой мне это потребуется? По-моему, Фокс сам все сделает в момент внесения новой записи в таблицу, избавив меня от излишних хлопот. Или же я сам в представлении должен присвоить это "будущее значение" автоинкрементному полю, ибо автоинкрементность не наследуется LV? Или я опять все не так понимаю? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 12:15 |
|
||
|
Requery()
|
|||
|---|---|---|---|
|
#18+
men dea"При этом вроде бы перестаёт работать визуальная часть View Designer-а, но не думаю что это очень уж существенная потеря ;)..." Какая визуальная часть имеется в виду, я не понял. Вроде все видно, за исключением следующего момента: Согласно вашим рецептам, командным способом я создал представление: с WITH (Buffering=.T.) В дизайнере посмотрел SQL-код новоявленного LV. Внешне ничем не отличается от представления, созданного дизайнером, хотя работает, конечно, иначе. Теперь вопросы: 1. Можно ли создать представление, учитывающее буферизацию области, дизайнерским способом? А в чем проблема? Создаешь в дизайнере, потом влезаешь в код SQL (там где ты его смотришь) и ручками вносишь исправления: 1) Необходимо выброисть ссылку на базу данных 2) Добавить хинт with (buffering = .T.) Т.е., если сам дизайнер строит конструкцию вида FROM MyBase!MyTable то после исправления должно получиться FROM MyTable with (buffering = .T.) Но вот после этого дизайнер и начнет "капризничать". Дескать - не могу показать таблицы-источники. Правка будет возможна только в самом коде SQL без средств собственно дизайнера men dea2. Каким либо программным способом, кроме косвенных, можно определить разницу между представлениями с WITH (Buffering=.T.) и WITH(Buffering=.F.)? В смысле? Что именно необходимо определить? Есть такая опция или нет? men dea3. Прочитал статью Владимира М. о "2-х кальках при LV и буферизации таблицы" (извиняюсь, что не даю ссылку, но, думаю, автор вспомнит, о чем речь) Есть ли принципиальная разница, если работаешь с Buffering=.T. или Buffering=.F. , если таблица содержит AutoInc-поле, кроме существования возможности заглянуть в будущее его значения? Мне смутно представляется цель, ради которой мне это потребуется? Зависит от того, находится ли источник запроса в режиме буферизации или нет. И откуда запрос будет брать данные - из буфера или из исходной таблицы. В общем, может быть разница, а может - не быть... men deaПо-моему, Фокс сам все сделает в момент внесения новой записи в таблицу, избавив меня от излишних хлопот. Или же я сам в представлении должен присвоить это "будущее значение" автоинкрементному полю, ибо автоинкрементность не наследуется LV? Или я опять все не так понимаю? :) Ты сначала определись, что именно хочешь получить. Т.е. какую цель перед собой ставишь. Затем уже можно будет говорить об использовании тех или иных инструментов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 18:18 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33566622&tid=1592010]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 438ms |

| 0 / 0 |
