Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удалённое представление на представление / 14 сообщений из 14, страница 1 из 1
15.06.2009, 16:46
    #36041796
mabuse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
Привет, у меня возникла такая проблема. В базе SQL (MS 2005) созданы представления на таблицы в другой базе на том же сервере.
В фоксе создаю представления на эти представления:

crea sql view имя remo conn соединение share as select * from таблица
DBSETPROP(таблица,'view','SendUpdates',.T.)
DBSETPROP(таблица,'view','FetchSize',-1)
lPrimKey=таблица+'.PrimKey'
DBSETPROP(lPrimKey,'field','DataType','i(11)')
DBSetProp(lPrimKey,"Field","KeyField",.T.)
В таблицах есть поле Pimkey, оно является Primary Key.

После добавления записи в созданное представление (например Appen Blank) записи нормально добавляются,
команда tableupdate(.f.,.t.) возвращает .t., но если попытаться удалить только что созданную запись она не удаляется,
так как Pimkey отсутствует в созданной записи.
Я достаю этот ключ с сервера командой

SQLEXEC(cсоединение, "SELECT CAST(IDENT_CURRENT('таблица') AS FLOAT) as cident","cident")

и вставляю в представление

Repl Primkey with cident->cident

Тогда только что добавленные записи должны удаляться. Но это работает в представлениях созданных на таблицы
и не работает в представлениях созданных на представления. Возникает Update Conflict. Requery конечно помагает,
но это не выход на больших объёмах информации.

Подскажите что не так.
...
Рейтинг: 0 / 0
15.06.2009, 17:09
    #36041867
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
...
Рейтинг: 0 / 0
15.06.2009, 17:29
    #36041922
mabuse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
Я знаю как прочитать значение поля со свойством IDENTITY. Вопрос в другом: почему возникает Update conflict при вставке этого самого значения в Remote View если оно создано на серверное Remote View?
...
Рейтинг: 0 / 0
15.06.2009, 17:37
    #36041939
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
после вставки новой записи в буфер
и после сохранения изменений
Вы должны в Вашем курсоре изменить значение ключа
(т.е. ключь должен быть значению ID записи, которое стало на сервере)

если интересно, то для курсорадаптера это достижимо посредством
поочередного сканирования и сохранения
измененных записей в курсоре с процессом запроса
значения айди записи в событии beforeUpdate
либо, задействование автоматического процесса обновления
записей в курсоре посредством настройки списка обновляемых полей.
...
Рейтинг: 0 / 0
15.06.2009, 17:48
    #36041963
mabuse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
прошелмимопосле вставки новой записи в буфер
и после сохранения изменений
Вы должны в Вашем курсоре изменить значение ключа
(т.е. ключь должен быть значению ID записи, которое стало на сервере)
Именно это я и делаю в описанном выше примере, но после изменения ключа, на то которое стало на сервере возникает Update Conflict. Всё работает если представление создано на таблицу. Но в данном случае представление создано на представление.
...
Рейтинг: 0 / 0
15.06.2009, 17:53
    #36041975
Мука
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
Код: plaintext
 Но в данном случае представление создано на представление.
...
Рейтинг: 0 / 0
15.06.2009, 18:05
    #36042012
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
авторсоздано на представление

представление обновляемое?

если на сервере выполнить в кверианалайзере

Код: plaintext
1.
2.
select * from MyView where ....
insert into MyView values ()
delete from  MyView where id=...

работает?
...
Рейтинг: 0 / 0
15.06.2009, 18:14
    #36042030
mabuse
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
прошелмимоавторсоздано на представление

представление обновляемое?

если на сервере выполнить в кверианалайзере

Код: plaintext
1.
2.
select * from MyView where ....
insert into MyView values ()
delete from  MyView where id=...

работает?

Да, более того например SQL Manager без проблем в нём создаёт и тут же удаляет записи. Так что проблема в фоксе.
...
Рейтинг: 0 / 0
15.06.2009, 18:17
    #36042035
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
авторТак что проблема в фоксе.

при использовании КАД
в фоксе проблем не вижу
(создан механизм автообновления списка полей),
либо обработка в событии

Ваш выбор - ремоутвью - я Вам подсказать не смогу.
...
Рейтинг: 0 / 0
15.06.2009, 18:27
    #36042048
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
авторДа, более того например SQL Manager без проблем в нём создаёт и тут же удаляет записи. Так что проблема в фоксе.

профайлером посмотрите что происходит на сервере,
какие команды генерятся,
сравните
...
Рейтинг: 0 / 0
15.06.2009, 20:21
    #36042242
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
mabuseЯ знаю как прочитать значение поля со свойством IDENTITY. Вопрос в другом: почему возникает Update conflict при вставке этого самого значения в Remote View если оно создано на серверное Remote View?
Вы бы все-таки прочитали что там написано. Там приведено несколько споcобов определения кода.

Использование IDENT_CURRENT(), как минимум, не корректно. Ведь оно возвращает значение, присвоенное в любом сенасе работы, любым пользователем. При одновременной работе нескольких пользователей вы получите проблемы.

Для Remote View нет никакой разницы, что является источником данных - собственно таблица или View на ее основе. Раз вы получили Update Conflict, то ищите ошибку у себя. FoxPro тут не при чем. Либо IDENT_CURRENT() вернуло не то, что вы ожидали, либо вы не сделали присвоение этого значения ключевому полю Remote View, либо вы указали это поле как обновляемое.

Лично у меня, все прекрасно отработало по приведенной вам схеме в VFP9. Никаких Update Conflict я не получил.
...
Рейтинг: 0 / 0
16.06.2009, 09:53
    #36042738
Peisov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
Объясните мне, тупому, - почему народ так remote view любит?
...
Рейтинг: 0 / 0
16.06.2009, 11:54
    #36043077
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
авторОбъясните мне, тупому, - почему народ так remote view любит?

потому, что это не объект,
это определенное описание св-в
(хранится или в фоксовой БД или описывается программно в коде)

RV - устаревший механизм, который не имеет событийности.

КАД - это базовый класс, который возможно унаследовать и
создать библиотеку визуальных классов.
КАД имеет свойства и события. КАД удобно настраивать и удобно
хранить эти настройки. При работе с КАД оч. удобно отлаживать
код, понимать все процессы.

Поэтому любители ООП в фокспро любят КАД и не любят RV.
...
Рейтинг: 0 / 0
16.06.2009, 17:18
    #36044263
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённое представление на представление
PeisovОбъясните мне, тупому, - почему народ так remote view любит?
По той причине, что он наглядный . Создается и используется "при помощи мышки". Собственно кодинг (программирование) практически отсутствует.

Объект CursorAdapter - это кодинг при практически полном отсутствии возможности что-то настроить мышкой. Нет наглядности.

Поскольку в форум пишут одни новички, то, естественно, они используют то, что проще понять. Кроме того, в рамках стандартных курсовых все эти дополнительные "навороты" CursorAdapter, собственно, и не нужны. Не того уровня задачи.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удалённое представление на представление / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]