Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / RemoteView и ORACLE / 12 сообщений из 12, страница 1 из 1
05.02.2007, 18:18
    #34307432
omorozov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
Столкнулся с загадочной особенностью RemoteView в ORACLE 8, 9
1. Есть простейшая таблица: ключ и Наименование
2. Добавляю запись через RemoteView в VFP9 (ключ создается через тригер в ОРАКЛЕ)
3. делаю TABLEUPDATE(), изменения сохраняются.
4. Редактирую Наименование, делаю TABLEUPDATE(), изменения сохраняются.
5. Редактирую Наименование через DBA Studio или SQL Navigator, commit

Теперь если в любое время попробовать изменить запись, которая редактировалась в
DBA Studio или SQL Navigator, через RemoteView в VFP9, TABLEUPDATE()
возвращает .f. и изменения не сохраняются.
В чем дело?
...
Рейтинг: 0 / 0
05.02.2007, 19:07
    #34307518
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
ну Вы увидели не странность, а достоинство

через массив ошибок получите код
if !TABLEUPDATE(....)
AERROR(aErrorArray)
messgebox(....) или что-то делайте


запись потрогали пока вы думали
это правильно,
скажите на клиенте, что запись изменена другим пользователем

пусть юзер на клиенте обновит свой курсор

и лучше пользоваться курсорадаптером
...
Рейтинг: 0 / 0
05.02.2007, 19:15
    #34307536
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
курсорадаптер, в отличии от простого склэкзека - умный и навороченный посредник,
берет на себя основной груз работы с сервером, конвертирования данных, облегчает разработку,
позволяет избежать массы ошибок при разработке, связанных с обрезанием длины полей, несоответсвия типов данных и т.д., позволяет абстрагироваться на некий объект-сущность.

курсорадаптер в отличии от ремоутвью имеет массу преимуществ.
Это объект, не требует хранить вью в БД, позволяет оч. просто создать универсальный
класс-посредник, который можно просто и удобно наследовать.
...
Рейтинг: 0 / 0
05.02.2007, 21:46
    #34307771
Vch1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
Способ который вы пытаетесь применить для обновления данных Оракла не обеспечивает безопасность базы. Продумаете политику безопасности и вы откажитесь от RemoteView. Основые положения политики безопасности: View - только для чтения с правами только select, обновления - только через хранимые процедуры с правами доступа только execute, доступа к таблицам и другим объектам у пользователей нет вообще. Хранимые процедуры выполняют проверку прав доступа и корректность данных, т.о. обеспечивается безопасность не зависимо от того вызвана процедура из приложения фокса или другого приложения. Клиентское приложение выполняет только предварительный контроль.
...
Рейтинг: 0 / 0
06.02.2007, 01:29
    #34307890
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
omorozovСтолкнулся с загадочной особенностью RemoteView в ORACLE 8, 9 ...
А какое поведение, по Вашему мнению, должно быть в описанной ситуации?

Как минимум, есть два варианта: либо сообщить пользователю, что пока он думал "о судьбах мира", кто-то уже изменил те же самые данные, либо молча затереть изменения сделанные другим пользователем.

Какой из этих двух сценариев правильный?

Оба правильные. Все зависит от конкретной задачи. Более того, разработчики FoxPro уже предусмотрели оба варианта. За этим следит второй параметр функции TableUpdate()

Есть переведенный Help на русском, правда смысл второго параметра в этом переводе не вполне ясен.

TABLEUPDATE () Функция
...
Рейтинг: 0 / 0
06.02.2007, 09:14
    #34308106
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
2 Vch1

использование ХП имеет оч.важный недостаток -
удорожание стоимости разработки и поддержки

- если систематически изменяется структура таблиц,
то Вы вынуждены постоянно править ХП.
- при разработке Вы заранее закладываете ошибки,
связанные с обрезанием полей при апдейте, проблемы
с актульностью данных на клиенте.

курсорадаптер позволяет облегчить жизнь разработчику, т.к.
автоматически преобразовывает данные, автоматически добавляет, удаляет, изменяет
данные, имеет встроенный алгоритм контроля целостности и поддержки актуальности данных у клиента.

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

курсорадаптер позволяет сократить расходы на разработку, создать визуальные средства,
обмануть пользователя и заставить его самого конструировать сложные запросы.

есть ГОСТ по безопасности, если необходимо я уточню,
требованиям которого технология ФП-КА-СКЛ соответствует.
...
Рейтинг: 0 / 0
06.02.2007, 10:14
    #34308269
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
да еще, и если уж так хочется сохраняться херез ХП,
то и этот трюк реализуем с пом.КА,
описыванием свойства апдейтсмд в которое достаточно прописать
вызов ХП с нужными параметрами и подергавшись дополнительно в событиях
...
Рейтинг: 0 / 0
06.02.2007, 13:12
    #34309108
omorozov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
Vch1Способ который вы пытаетесь применить для обновления данных Оракла не обеспечивает безопасность базы. Продумаете политику безопасности и вы откажитесь от RemoteView. Основые положения политики безопасности: View - только для чтения с правами только select, обновления - только через хранимые процедуры с правами доступа только execute, доступа к таблицам и другим объектам у пользователей нет вообще. Хранимые процедуры выполняют проверку прав доступа и корректность данных, т.о. обеспечивается безопасность не зависимо от того вызвана процедура из приложения фокса или другого приложения. Клиентское приложение выполняет только предварительный контроль.
В принципе я в основном RemoteView для чтения и использую,
просто решил попробовать, раз есть возможность редактирования данных,
и интересно понять механизм ошибки.
Блокировки быть не должно, т.к. измения в DBA были сделаны, и он закрыт.
Буду разбираться с кусорами, спасибо за совет.
...
Рейтинг: 0 / 0
06.02.2007, 13:15
    #34309122
omorozov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
alex11100ну Вы увидели не странность, а достоинство

через массив ошибок получите код
if !TABLEUPDATE(....)
AERROR(aErrorArray)
messgebox(....) или что-то делайте


запись потрогали пока вы думали
это правильно,
скажите на клиенте, что запись изменена другим пользователем

пусть юзер на клиенте обновит свой курсор

и лучше пользоваться курсорадаптером
В том и проблема, что редактирую запись в "монопольном" режиме,
никаких других подключений к таблице нет.
aerror(1)=95
aerror(2)= Statement is not allow in interactive mode
aerror(2)= View1
остальные Null
...
Рейтинг: 0 / 0
06.02.2007, 13:40
    #34309245
omorozov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
ВладимирМ omorozovСтолкнулся с загадочной особенностью RemoteView в ORACLE 8, 9 ...
А какое поведение, по Вашему мнению, должно быть в описанной ситуации?

Как минимум, есть два варианта: либо сообщить пользователю, что пока он думал "о судьбах мира", кто-то уже изменил те же самые данные, либо молча затереть изменения сделанные другим пользователем.

Какой из этих двух сценариев правильный?

Оба правильные. Все зависит от конкретной задачи. Более того, разработчики FoxPro уже предусмотрели оба варианта. За этим следит второй параметр функции TableUpdate()

Есть переведенный Help на русском, правда смысл второго параметра в этом переводе не вполне ясен.

TABLEUPDATE () Функция
В том и проблема, что редактирую запись в "монопольном" режиме,
никаких других подключений к таблице нет.
Поэтому непонятен источник ошибки.
...
Рейтинг: 0 / 0
06.02.2007, 14:55
    #34309573
omorozov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
Вот где собака порылась, изменил updatetype на key field only,
и все помирились
...
Рейтинг: 0 / 0
06.02.2007, 21:59
    #34310752
Vch1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RemoteView и ORACLE
alex11100

Я полностью согласен с вами по поводу приятностей курсорадаптера. Но база оракла используется для многопользовательских систем в которой разные группы пользователей имеют разные права на доступ и управление данными. И эти права нужно обеспечить не только со стороны родного клиентского приложения, написанного на фоксе, но и со строны стронних приложений. Например: установлен plsql developer и пользователь пытается с его помощью получить доступ к данным. Такие требования безопасности обеспечить только с помощью внешнего приложения не представляется возможным. Нужно использовать средства оракла (или другой СУБД). Я применяю подход когда запросы поступают в курсор фокса через Views оракла. Views только для чтения. А все изменения выполняются только через хранимые процедуры оракла. Права на хранимые процедуры только execute и то только тем пользователям, которые имеют права на редактирирование. Прав на другие объекты оракла у пользователей нет. Права на редактирование прописыватся в таблицах оракла, доступа к которым у пользователей нет, только у хранимой процедуры.
А вот то что курсор фокса это очень хорошее средство я полностью с вами согласен. На основе курсоров создаются интеллектуальные гриды в клиентской части. Равного по их потенциалу средства в других системах программирования на сегодня нет.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / RemoteView и ORACLE / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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