for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
   :: Помощь сайту :: 

With Buffering в LocalView
qws

Сообщений: 49
Откуда: Kryukov-na-Dnepr
Дата: 12.09.05 13:03:50ОтветитьЦитировать
Можно ли в дизайнере LocalView впихнуть With Buffering (для VFP9.0) ??
Ratings: 0 negative/0 positive

Re:_With_Buffering_в_LocalView
Igor Korolyov

Сообщений: 30611
Дата: 12.09.05 13:26:51ОтветитьЦитировать
Hi qws!

Можно - в окне SQL. Только View Designer будет постоянно стремиться разрушить эту опцию. При попытке закрыть окно SQL например, хотя если СРАЗУ закрыть окно дизайнера (при этом SQL окно закроется автоматом) то всё запомнится - потому простой совет - забей на дизайнер - т.е. возьми оттуда (из окна SQL) скрипт, сохрани как prg и правь дальше как угодно.




------------------
WBR, Igor
Ratings: 0 negative/0 positive

Re:_With_Buffering_в_LocalView
qws

Сообщений: 49
Откуда: Kryukov-na-Dnepr
Дата: 12.09.05 13:45:09ОтветитьЦитировать
Спасибо (большое - полтонны?)
Ratings: 0 negative/0 positive

Re:_With_Buffering_в_LocalView
Ден1
Гость
Автор
Дата: 21.09.05 10:49:10ОтветитьЦитировать
Здравствуйте!
Пишу программу, связанную с обработкой документооборота.
Возникла необходимость в построении одного Local View на основании данных другого.

В первом LocalView (далее LV1) хранятся данные о том какие документы являются
приложениями к каким документам,
то есть один документ - родительский и много дочерних
и все они подшиты в какую-то папку.(id_papk,id_main_doc,id_doc).
LV1 отображается с помощью TreeView.

Когда пользователь переподключает один дочерний документ к другому главному (если изначально они были соединены ошибочно) , мне необходимо автоматически копировать часть аттрибутов из главного документа в дочерние.

Необходимо создать еще одно Local View котрое касалось бы только тех документов, которые были переподключены пользователем, на основе LV1 (with buffering=.t.) и основной таблицы, где хранятся все аттрибуты всех документов.

А теперь, собственно, вопрос.
Из ответа уважаемого Игоря Королева, я понял, что можно создать prg файл на основе кода, сгенерированного дизайнером. Но мне нужно, чтобы результирующее Local View было обновляемым, а в коде дизайнера для этого используются dbsetprop, которые, как я понял, пишут определение Local View в dbc файл. Будет ли такая конструкция вести себя правильно в многопользовательской программе, когда создавать это Local View начнут одновременно несколько пользователей?
Заранее благодарен.

Ratings: 0 negative/0 positive

Re:_With_Buffering_в_LocalView
AleksM
[Админ]

Сообщений: 17704
Дата: 21.09.05 10:53:09ОтветитьЦитировать
1. DBSETPROP только настраивает LV/RV
2. Пишется LV/RV в базу через CREATE SQL VIEW ...
3. Глядя что ты вкладываешь в термин "обновляемое".
Ratings: 0 negative/0 positive

Re:_With_Buffering_в_LocalView
Ден1
Гость
Автор
Дата: 21.09.05 11:08:48ОтветитьЦитировать
обновляемое - это значит, что по комманде Tableupdate в соотв таблицу должны записаться те поля, котрые я укажу как Updatable.
Если LV пишется в базу при CREATE SQL VIEW - следует ли из этого, что чтобы пользователи не полезли друг на друга, надо каждому пользователю создавать это LV со своим именем? (Будет столько одинаковых по структуре LV - сколько пользователей)
Ratings: 0 negative/0 positive

Re:_With_Buffering_в_LocalView
AleksM
[Админ]

Сообщений: 17704
Дата: 21.09.05 11:12:10ОтветитьЦитировать
Цитата:
чтобы пользователи не полезли друг на друга, надо каждому пользователю создавать это LV со своим именем
Да. Например, можешь формировать его динамически <ViewName>_<UserName>
Ratings: 0 negative/0 positive

Re:_With_Buffering_в_LocalView
Ден1
Гость
Автор
Дата: 21.09.05 11:31:47ОтветитьЦитировать
Спасибо - с именами понятно.
А насчет dbsetprop я вот что имел ввиду. Если использовать в коде программы Dbsetprop то, если потом открыть дизайнер LV и посмотреть, что прописано в базе - то увидишь все те изменения, которые вносил с помощью dbsetprop. И насколько я понял - эти изменения останутся навсегда, то есть будут сохранены в dbc файле.
Если же изменить настройки LV с помощью cursorsetprop - то изменения в дизайнере не отобразятся и будут существовать только до конца исполнения программы. Просто я попробовал писать код с использованием dbsetprop и cursorsetprop и c dbsetprop показалось удобнее, однако
я не представлял, что будет, если все пользователи одновременно полезут писать в dbc, поэтому везде где надо использовал cursorsetprop. Но теперь, поскольку каждый пользователь будет работать строго со своим LV эта проблема снимается, правда возникает еще один дополнительный вопрос - сильно ли замедлит исполнение программы создание динамического LV?
Я то все пытался заставить дизайнер создать LV c with buffering=.t., а потом использовать его как все остальные, заранее описанные LV.
Ratings: 0 negative/0 positive

Re:__With_Buffering_в_LocalView
Igor Korolyov

Сообщений: 30611
Дата: 21.09.05 14:43:39ОтветитьЦитировать
Hi Ден1!

Так НЕ пишут. Если уж действительно надо чтобы у каждого пользователя было
СВОЁ ОПИСАНИЕ представления (не отобранные в него данные, а именно SQL код и
свойства), то создаётся локальная БД (т.е. каждому пользователю своя) для
хранения таких представлений.
Вообще наверное проще сейчас работать с CursorAdapter - он позволяет вообще
не хранить ничего в dbc, при этом сами его настройки, и даже текст запросов
весьма гибко изменяются... Т.е. на основе CAD можно нарисовать ОДИН класс,
который будет работать несколько по разному для разных пользователей.




------------------
WBR, Igor
Ratings: 0 negative/0 positive

Re:__With_Buffering_в_LocalView
Ден1
Гость
Автор
Дата: 22.09.05 06:20:31ОтветитьЦитировать
Hi Igor!

Наверно я сумбурно объяснил. Если бы можно было создать LV c
With buffering=.t. в дизайнере, то мне вообще никаких динамических
LV не нужно было бы.
Если я правильно понял, было предложено, создать на основе кода дизайнера, свой prg с нужным мне With buffering и просто встроить этот prg в код программы. Но эта процедура, как и вся программа, будет исполнятся при каждом запуске, у каждого пользователя, следовательно каждый пользователь будет пытаться создать LV и все эти LV будут с одинаковой структурой. Чтобы LV все-таки создались придется дать им разные имена.

Я только недавно перешел на Vfox9 c FPD2.6 и многого еще не знаю. С Cursor Sdapter, например, вообще не сталкивался - не возникало необходимости. Если есть идеи как сделать более правильно - буду благодарен.
Ratings: 0 negative/0 positive

Re:__With_Buffering_в_LocalView
AleksM
[Админ]

Сообщений: 17704
Дата: 22.09.05 06:28:00ОтветитьЦитировать
Если дело только в Buffering, то ненадо из программы каждый раз запусать код создания представления. Этот код даже в проект можно не включать. Достаточно выполнить его один раз на этапе проектирования для создания этого LV.
Ratings: 0 negative/0 positive

Re:__With_Buffering_в_LocalView
Ден1
Гость
Автор
Дата: 22.09.05 06:35:46ОтветитьЦитировать
Спасибо!
Действительно, все гениальное просто. Только потом не забыть, что к данному LV в дизайнере вообще нельзя прикасаться, а то все что нужно сотрет и придется запускать эту процедуру создания LV заново.
Ratings: 0 negative/0 positive

Re:__With_Buffering_в_LocalView
AleksM
[Админ]

Сообщений: 17704
Дата: 22.09.05 06:44:59ОтветитьЦитировать
Лучше всегда LV/RV ручками создавать. И од создания всегда под рукой и надёжней.
Ratings: 0 negative/0 positive

Re:___With_Buffering_в_LocalView
Igor Korolyov

Сообщений: 30611
Дата: 22.09.05 13:50:23ОтветитьЦитировать
Hi AleksM!

Цитата:
Лучше всегда LV/RV ручками создавать
Поддерживаю!
В дизайнере можно создать "шаблон" - чтобы не мучится со всеми этими
многочисленными DBSETPROP() - потом в prg его и на дизайнер забить




------------------
WBR, Igor
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут писать в этом форуме.

On-line: 37 po2  and Guests: 36


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