|
Cоздание VIEW на FoxPro (допустим к таблице в базе MSSQL)
|
|||
---|---|---|---|
#18+
Предположим такой вариант - очень частый при совместной работе с одной таблицей. Два пользователя создали через VIEW редактируют одну таблицу. Теперь пользователь № 1 удалил запись в то время как пользователь № 2 ее редактировал. Теперь пользователь № 2 производит запись своих изменений (происходят команда lSuccess=TABLEUPDATE(.T.,.T.) затем requery()) и пользователь видит что его строка вместо того чтобы обновится вообще изчезла. Как поступать в таких случаях? Как дать пользователю № 2 знать что строки которую он хочет редактировать уже нет? Или как дать пользователю № 1 знать что строка которую он хочет удалить редактируетсЯ? Заранее спасибо за ответы! Всех с Новым Годом! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2002, 11:13 |
|
Cоздание VIEW на FoxPro (допустим к таблице в базе MSSQL)
|
|||
---|---|---|---|
#18+
Поиск по форумам - тут сто раз такое обсуждалось От себя скажу - лучше вообще не допускать таких ситуаций, когда с одной записью десять человек работают. Нехорошо это :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2003, 11:01 |
|
Cоздание VIEW на FoxPro (допустим к таблице в базе MSSQL)
|
|||
---|---|---|---|
#18+
Не могли бы Вы уточнить где именно искать? Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2003, 15:53 |
|
Cоздание VIEW на FoxPro (допустим к таблице в базе MSSQL)
|
|||
---|---|---|---|
#18+
Искать лучше в форуме Microsoft SQL Server. А вообще лучше не пользоваться Remote View в VFP. Глючные они, и отследить их работу очень тяжело. Лучше вызывать хранимые процедуры. Но это ИМХО. http://nsvisual.com/ph/read.php3?f=5&pnn=1&i=44487&t=44487 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2003, 10:05 |
|
Cоздание VIEW на FoxPro (допустим к таблице в базе MSSQL)
|
|||
---|---|---|---|
#18+
To tygra От себя скажу - лучше вообще не допускать таких ситуаций, когда с одной записью десять человек работают. Нехорошо это :) Конечно, не хорошо, но в хорошо написанной программе все нужно предусмотреть. Самое простое решение которое я пока нашел это: После изменения данных (текущей строки) во VIEW пишем следующее lSuccess=TABLEUPDATE(.F.,.F.) &&- пытаемся сапдейтить данные (текущую строку) && из view в источник на SQL-server IF lSuccess=.F. WAIT wind TABLEREVERT(.F.) && - если попытка неудачна (данная запись была изменена или удалена другим пользователем), то восстанавливаем данную запись во VIEW в исходное состояние messagebox('Данные которые вы пытаетесь изменить, были изменены другим пользователем !',16,' ') endif REQUERY() && - перезапрашиваем измененные другим пользователем данные Перед добавлением новой записи следующее REQUERY() && запрашиваю во view самые последние записи LOCATE FOR num=v_num && ищу есть ли уже запись с данным кодом (primary key) if found() && если есть messagebox('Запись с данным кодом, уже была добавлена другим пользователем !',16,' ') retu .F. endif Хотелось бы конечно заранее знать была ли запись с данным primary key и timestamp удалена, изменена или добавлена. Но пока не додумался как это сделать средствами VFP (может совместными VFP и MSSQL). Если кто подскажет буду рад! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2003, 12:25 |
|
Cоздание VIEW на FoxPro (допустим к таблице в базе MSSQL)
|
|||
---|---|---|---|
#18+
to Alexey Savelyev Ны вы же имеете на клиенте timestamp (t1), перед фиксацией изменений после редактирования, делаете запрос на сервер для primary key получаете timestamp (t2), если t1<>t2, то значит пока вы редактировали запись, кто-то уже внес изменения. Вроде понятно сказал :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2003, 20:25 |
|
|
start [/forum/topic.php?fid=16&fpage=235&tid=1348955]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 114ms |
0 / 0 |