|
|
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
Столкнулся с загадочной особенностью 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. и изменения не сохраняются. В чем дело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 18:18 |
|
||
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
ну Вы увидели не странность, а достоинство через массив ошибок получите код if !TABLEUPDATE(....) AERROR(aErrorArray) messgebox(....) или что-то делайте запись потрогали пока вы думали это правильно, скажите на клиенте, что запись изменена другим пользователем пусть юзер на клиенте обновит свой курсор и лучше пользоваться курсорадаптером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 19:07 |
|
||
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
курсорадаптер, в отличии от простого склэкзека - умный и навороченный посредник, берет на себя основной груз работы с сервером, конвертирования данных, облегчает разработку, позволяет избежать массы ошибок при разработке, связанных с обрезанием длины полей, несоответсвия типов данных и т.д., позволяет абстрагироваться на некий объект-сущность. курсорадаптер в отличии от ремоутвью имеет массу преимуществ. Это объект, не требует хранить вью в БД, позволяет оч. просто создать универсальный класс-посредник, который можно просто и удобно наследовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 19:15 |
|
||
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
Способ который вы пытаетесь применить для обновления данных Оракла не обеспечивает безопасность базы. Продумаете политику безопасности и вы откажитесь от RemoteView. Основые положения политики безопасности: View - только для чтения с правами только select, обновления - только через хранимые процедуры с правами доступа только execute, доступа к таблицам и другим объектам у пользователей нет вообще. Хранимые процедуры выполняют проверку прав доступа и корректность данных, т.о. обеспечивается безопасность не зависимо от того вызвана процедура из приложения фокса или другого приложения. Клиентское приложение выполняет только предварительный контроль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 21:46 |
|
||
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
omorozovСтолкнулся с загадочной особенностью RemoteView в ORACLE 8, 9 ... А какое поведение, по Вашему мнению, должно быть в описанной ситуации? Как минимум, есть два варианта: либо сообщить пользователю, что пока он думал "о судьбах мира", кто-то уже изменил те же самые данные, либо молча затереть изменения сделанные другим пользователем. Какой из этих двух сценариев правильный? Оба правильные. Все зависит от конкретной задачи. Более того, разработчики FoxPro уже предусмотрели оба варианта. За этим следит второй параметр функции TableUpdate() Есть переведенный Help на русском, правда смысл второго параметра в этом переводе не вполне ясен. TABLEUPDATE () Функция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 01:29 |
|
||
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
2 Vch1 использование ХП имеет оч.важный недостаток - удорожание стоимости разработки и поддержки - если систематически изменяется структура таблиц, то Вы вынуждены постоянно править ХП. - при разработке Вы заранее закладываете ошибки, связанные с обрезанием полей при апдейте, проблемы с актульностью данных на клиенте. курсорадаптер позволяет облегчить жизнь разработчику, т.к. автоматически преобразовывает данные, автоматически добавляет, удаляет, изменяет данные, имеет встроенный алгоритм контроля целостности и поддержки актуальности данных у клиента. курсорадаптер - это объект, который позволяет абстрагироваться (т.е. решать задачу более простым доступным способом), позволяет создать (обвязать класс) универсального посредника, с помощью которого можно создать необходимый и правильный алгоритм взаимодействия клиента и хранилища. курсорадаптер позволяет сократить расходы на разработку, создать визуальные средства, обмануть пользователя и заставить его самого конструировать сложные запросы. есть ГОСТ по безопасности, если необходимо я уточню, требованиям которого технология ФП-КА-СКЛ соответствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 09:14 |
|
||
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
да еще, и если уж так хочется сохраняться херез ХП, то и этот трюк реализуем с пом.КА, описыванием свойства апдейтсмд в которое достаточно прописать вызов ХП с нужными параметрами и подергавшись дополнительно в событиях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 10:14 |
|
||
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
Vch1Способ который вы пытаетесь применить для обновления данных Оракла не обеспечивает безопасность базы. Продумаете политику безопасности и вы откажитесь от RemoteView. Основые положения политики безопасности: View - только для чтения с правами только select, обновления - только через хранимые процедуры с правами доступа только execute, доступа к таблицам и другим объектам у пользователей нет вообще. Хранимые процедуры выполняют проверку прав доступа и корректность данных, т.о. обеспечивается безопасность не зависимо от того вызвана процедура из приложения фокса или другого приложения. Клиентское приложение выполняет только предварительный контроль. В принципе я в основном RemoteView для чтения и использую, просто решил попробовать, раз есть возможность редактирования данных, и интересно понять механизм ошибки. Блокировки быть не должно, т.к. измения в DBA были сделаны, и он закрыт. Буду разбираться с кусорами, спасибо за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 13:12 |
|
||
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
alex11100ну Вы увидели не странность, а достоинство через массив ошибок получите код if !TABLEUPDATE(....) AERROR(aErrorArray) messgebox(....) или что-то делайте запись потрогали пока вы думали это правильно, скажите на клиенте, что запись изменена другим пользователем пусть юзер на клиенте обновит свой курсор и лучше пользоваться курсорадаптером В том и проблема, что редактирую запись в "монопольном" режиме, никаких других подключений к таблице нет. aerror(1)=95 aerror(2)= Statement is not allow in interactive mode aerror(2)= View1 остальные Null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 13:15 |
|
||
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
ВладимирМ omorozovСтолкнулся с загадочной особенностью RemoteView в ORACLE 8, 9 ... А какое поведение, по Вашему мнению, должно быть в описанной ситуации? Как минимум, есть два варианта: либо сообщить пользователю, что пока он думал "о судьбах мира", кто-то уже изменил те же самые данные, либо молча затереть изменения сделанные другим пользователем. Какой из этих двух сценариев правильный? Оба правильные. Все зависит от конкретной задачи. Более того, разработчики FoxPro уже предусмотрели оба варианта. За этим следит второй параметр функции TableUpdate() Есть переведенный Help на русском, правда смысл второго параметра в этом переводе не вполне ясен. TABLEUPDATE () Функция В том и проблема, что редактирую запись в "монопольном" режиме, никаких других подключений к таблице нет. Поэтому непонятен источник ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 13:40 |
|
||
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
Вот где собака порылась, изменил updatetype на key field only, и все помирились ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 14:55 |
|
||
|
RemoteView и ORACLE
|
|||
|---|---|---|---|
|
#18+
alex11100 Я полностью согласен с вами по поводу приятностей курсорадаптера. Но база оракла используется для многопользовательских систем в которой разные группы пользователей имеют разные права на доступ и управление данными. И эти права нужно обеспечить не только со стороны родного клиентского приложения, написанного на фоксе, но и со строны стронних приложений. Например: установлен plsql developer и пользователь пытается с его помощью получить доступ к данным. Такие требования безопасности обеспечить только с помощью внешнего приложения не представляется возможным. Нужно использовать средства оракла (или другой СУБД). Я применяю подход когда запросы поступают в курсор фокса через Views оракла. Views только для чтения. А все изменения выполняются только через хранимые процедуры оракла. Права на хранимые процедуры только execute и то только тем пользователям, которые имеют права на редактирирование. Прав на другие объекты оракла у пользователей нет. Права на редактирование прописыватся в таблицах оракла, доступа к которым у пользователей нет, только у хранимой процедуры. А вот то что курсор фокса это очень хорошее средство я полностью с вами согласен. На основе курсоров создаются интеллектуальные гриды в клиентской части. Равного по их потенциалу средства в других системах программирования на сегодня нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 21:59 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34307890&tid=1589930]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 353ms |

| 0 / 0 |
