powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / редактирование Remote view
25 сообщений из 30, страница 1 из 2
редактирование Remote view
    #35071914
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
В VFP мало что заню, но очень необходимо написать prd, которая устанавливает ODBC connection (например, с Oracle) и позволяет работать (select/update/delete/insert) с удалённой таблицей. На просмотр получилось сделать, а на редактирование нет.
Написал следующее

CREATE DATABASE C:\ora_conn
OPEN DATABASE ('C:\ora_conn')
CREATE CONNECTION ora_conn_test CONNSTRING 'DSN=orabase;UID=user;PWD=123;' DATABASE 'DBTEST'
CREATE SQL VIEW ora_view CONNECTION ora_conn_test as select * from dbtest.testodbc
USE ora_view
CURSORSETPROP("SendUpdates", .T.)
SELECT * from ora_view

Прошу помочь с написание кода.
Заранее спасибо
...
Рейтинг: 0 / 0
редактирование Remote view
    #35071921
Лучше всего сначала нарисовать это используя соответствующий билдер в самом фоксе и посмотреть что он там нагенерит.
...
Рейтинг: 0 / 0
редактирование Remote view
    #35071938
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот он мне примерно такое и нагенерил, но редактировать я это не могу...
А что сделать, чтобы смог не пойму
...
Рейтинг: 0 / 0
редактирование Remote view
    #35071957
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
siriusPНу вот он мне примерно такое и нагенерил, но редактировать я это не могу...
А что сделать, чтобы смог не пойму

Открыть RemoteView в визарде, прставить галки у ключевого поля + поля для изменения, затем поставить галку SendUpdate, сохранить View
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072001
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, действительно после этого можно делать insert/update/delete, но
1. можно делать из командного окна, а из браузера - нет
2. данные не отразились на remote базу
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072052
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Сделать prg такого вида

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
close table all
use ora_view in  0 
cursorsetprop('buffering', 5 , 'ora_view' )
**
* здесь сделать типа
* insert into ora_view (...) values(...)
**
if tableupdate(.t.,.t.,'ora_view ')
  ? requery('ora_view ')
  ? 'OK', 
else
   aerror(arr)
   for i =  1  to alen(arr)
     ?arr(i)
   endfor
endif 

2. Результат запости сюда.
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072085
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Результат OK
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072172
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
siriusPРезультат OK

И чЁ, данные на сервер-то прилипли или как?

Тогда,

Код: plaintext
1.
2.
3.
4.
5.
close table all
use ora_view in  0 
?cursorgetprop('buffering', 'ora_view' )
?cursorgetprop('SendUpdates', 'ora_view' )
?cursorgetprop('KeyFieldList', 'ora_view' )
?cursorgetprop('UpdatableFieldList', 'ora_view' )
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072175
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не прилипли
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072183
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда, выполни код.
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072202
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выполнил, полял, что надо добавить
cursorsetprop('SendUpdates', .T.)

После это

insert into ora_view (id_, name_) values(5, 'test 5')

выдал ошибку ...значение для столбца name_ слишком велико (фактическое 200, максимальное 50)
у меня name_ - varchar(50) а добавляю намнго меньше, что за хрень
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072219
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Для Оракла лучше использовать родной дрйвер ODBC

2. Ошибку приведи как она есть, в оригинале.
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072324
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделал через родной драйвер - прошло без ошибки.
Спасибо.
Есть ещё вопросики:
1. как сделать, чтобы после отработки этого prg пользователю выдавался обычный грид с выборкой из remote таблиц, в котором они могли бы работать?
2. как сделать, чтобы появилось command window?
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072383
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и ещё вопрос:
можно ли сделать Remote view без создания Database на диске?
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072610
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у тебя VFP 8 или 9
почитай про cursoradapter
IMHO помощнейй и получше будет
подробности поищи здесь или на фоксклубе по cursoradapter
...
Рейтинг: 0 / 0
редактирование Remote view
    #35072668
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а через Wizard возможно открытие Remote View чтобы можно было делать insert/update/delete?
не получается, а очень надо.
...
Рейтинг: 0 / 0
редактирование Remote view
    #35075016
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выручайте!!!
после того как поставил галочку Send Sql update изменения стали отражаться в oracle, но только если после изменения каждой записи выполнить tableupdate(.t.,.t.,'ora_view').
Можно ли как-то ещё сделать достичь тоёже цели????
...
Рейтинг: 0 / 0
редактирование Remote view
    #35075034
Вы наконец-то откроете нам полное определение Вашего View или таки мы должны сами догадываться о значениях все влияющих на его поведение свойств?
...
Рейтинг: 0 / 0
редактирование Remote view
    #35075047
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
siriusPВыручайте!!!
после того как поставил галочку Send Sql update изменения стали отражаться в oracle, но только если после изменения каждой записи выполнить tableupdate(.t.,.t.,'ora_view').
Можно ли как-то ещё сделать достичь тоёже цели????

Код: plaintext
Cursorsetprop('Buffering', 3 )

В этом случае будет происходить косвенный tableupdate(), правда в этом случае все возмоные грабли будут на твоей совести
...
Рейтинг: 0 / 0
редактирование Remote view
    #35075180
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, попробую с начала. Необходимо из внешней программы (на Delphi, Java - не суть) запустить пользователю
FoxPro c настроенным ODBC коннекшеном на oracle, чтобы он мог работать с таблицей как с локальной. Поскольку foxpro я вижу первый раз,
то всё очень туманно. Написал следующее:

SET SAFETY OFF
close table all
CREATE DATABASE C:\ora_conn
OPEN DATABASE ('C:\ora_conn')
CREATE CONNECTION ora_conn_test CONNSTRING 'DSN=oracle;UID=test;PWD=123;' DATABASE 'TEST'
CREATE SQL VIEW ora_view CONNECTION ora_conn_test as select * from TEST.table1
use ora_view in 0
cursorsetprop('buffering',5, 'ora_view')
cursorsetprop('SendUpdates', .T.)
BROWSE

при этом:
изменения не отражаются в oracle!!!
необходимо каждый раз создавать file с database

После этого попробовал достичь результата через конструктор:
* создаю новую Database, создаю новый Connection c oracle
* создаю новый remote view: в критериях update ставлю галочку Send Sql updates, Key and updatable fields
* открываю созданную view, пробую редактировать запись - после изменения записи и при переходе на след. запись foxpro выдаёт сообщение
* "update conflict", а если после изменения выполнить tableupdate(.t.,.t.,'ora_view'), то изменения происходят и на oracle.
* соответственно групповые операции происходят тоже с "update conflict", как от этого избавиться непонятно.
...
Рейтинг: 0 / 0
редактирование Remote view
    #35075242
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
siriusPSET SAFETY OFF
close table all
CREATE DATABASE C:\ora_conn
OPEN DATABASE ('C:\ora_conn')
CREATE CONNECTION ora_conn_test CONNSTRING 'DSN=oracle;UID=test;PWD=123;' DATABASE 'TEST'
CREATE SQL VIEW ora_view CONNECTION ora_conn_test as select * from TEST.table1
use ora_view in 0
cursorsetprop('buffering',5, 'ora_view')
cursorsetprop('SendUpdates', .T.)
BROWSE

.....

Можно и нужно создать БД и соединение один раз, те не обязательно пересоздавать сам контейнер с определениями.

Поэтому в коде будет достаточно:

siriusPSET SAFETY OFF
close table all
use ora_view in 0
cursorsetprop('buffering',5, 'ora_view')
cursorsetprop('SendUpdates', .T.)
BROWSE


siriusP
при этом:
изменения не отражаются в oracle!!!
необходимо каждый раз создавать file с database

...

НЕТ, вывод не правильный.

siriusP

После этого попробовал достичь результата через конструктор:
* создаю новую Database, создаю новый Connection c oracle
* создаю новый remote view: в критериях update ставлю галочку Send Sql updates, Key and updatable fields
* открываю созданную view, пробую редактировать запись - после изменения записи и при переходе на след. запись foxpro выдаёт сообщение
* "update conflict", а если после изменения выполнить tableupdate(.t.,.t.,'ora_view'), то изменения происходят и на oracle.
* соответственно групповые операции происходят тоже с "update conflict", как от этого избавиться непонятно.

Ну вот первые грабли были "огребены"

1. Создаешь в конструкторе БД
2. Создаешь в конструкторе соединение
3. Создаешь в конструкторе RV
4. Настраиваешь в конструкторе RV

ВСЁ, дальше к БД не притрагиваешься.

Теперь создаешь prg

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
close table all
use ora_view in  0 
cursorsetprop('buffering', 5 , 'ora_view' )
**
* здесь сделать типа
* insert into ora_view (...) values(...)
**
if tableupdate(.t.,.t.,'ora_view ')
  ? requery('ora_view ')
  ? 'OK', 
else
   aerror(arr)
   for i =  1  to alen(arr)
     ?arr(i)
   endfor
endif 

Вот это prg должна уже работать (не надо заново создавать БД, RV итд)
...
Рейтинг: 0 / 0
редактирование Remote view
    #35075336
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ок. Сделал всё как ты сказал, но как пользователь будет работать с вьюхой непонятно - browser не даёт изменить записи
...
Рейтинг: 0 / 0
редактирование Remote view
    #35075359
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
siriusPок. Сделал всё как ты сказал, но как пользователь будет работать с вьюхой непонятно - browser не даёт изменить записи

Что значит не дает изменить?

а) Ячейки не редактируются?
б) Данные не плилипаю в БД Оракл?
...
Рейтинг: 0 / 0
редактирование Remote view
    #35075366
siriusP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ячейки не редактируются
...
Рейтинг: 0 / 0
редактирование Remote view
    #35075403
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
siriusPЯчейки не редактируются

А что пишется в статусной строке (это внизу - ReadOnly , что ли)
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / редактирование Remote view
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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