powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / RemoteView и ORACLE
12 сообщений из 12, страница 1 из 1
RemoteView и ORACLE
    #34307432
omorozov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с загадочной особенностью 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
RemoteView и ORACLE
    #34307518
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну Вы увидели не странность, а достоинство

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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