powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / обновление представлений
4 сообщений из 4, страница 1 из 1
обновление представлений
    #33204412
k_sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, как рациональнее делать.
У меня есть навороченное представление. Фокс 6-ой.
Каким образом лучше производить сброс данных в таблицы?
1. Делать представление обновляемым и прописывать с помощью dbsetprop() все свойства.
2. Делать его не обновляемым, а буферизировать таблицу и командой Update SQL обновлять таблицу.
Я не так давно с фоксом. И хотелось бы идти по более правильному пути.
...
Рейтинг: 0 / 0
обновление представлений
    #33204556
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если View сделано на базе одной таблицы, или обновляются поля только одной таблицы (остальные - только просмотр), то можно действовать через dbsetprop().

А вот если View построено на базе нескольких таблиц и надо обновлять поля из нескольких таблиц одновременно , то тут все сложнее. Сложности заключаются в определении внешних ключей. Т.е., теоретически, надо определить значение ключа родительской таблицы ДО сброса изменений в подчиненной.

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

1. Версию FoxPro
2. Собственно SQL-запрос, по которому строится View
3. Как формируется значение тех полей, по которым идет объединение в запросе (Autoincrement, NewID())
...
Рейтинг: 0 / 0
обновление представлений
    #33204764
k_sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну сейчас запинаете. VFP 6.0.
Дело было давно и таблицы такие:
1. k_job (sh_job, prof, razr, sist_opl). Да, без ключевого поля. Есть только индекс Candidate для sh_job с !deleted().
2. tar_job (id, data, sh_job, tarif).
3. Ну и справочники sist_opl и spr_prof.

Есть 2 представления. Первое по состоянию на дату Par_Data выводит все шифры работ с нужным тарифом. В нем обновляется только таблица k_job .
Ну а второе обновляет только tar_job. NewId() формируется в default представления.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
create sql view v_kjob as;
SELECT a.*, b.id, max(b.data) as data, b.tarif,b.tar_kalk, c.naimenov as name_sopl,;
  d.naimenov as name_prof;
 FROM  zak_nar!k_job as a right OUTER JOIN zak_nar!tar_job as b  ;
 ON  a.sh_job == b.shifr;
    LEFT OUTER JOIN zak_nar!sist_opl as c  ON  a.sist_opl = c.sh_opl ;
    LEFT OUTER JOIN zak_nar!spr_prof as d ;
   ON  a.prof = d.sh_prof group by a.sh_job;
   where b.data = ;
     (select max(e.data) from tar_job as e where e.shifr = b.shifr ;
     and e.data<=?Par_Data)


create sql view v_tar_job as
SELECT *;
 FROM zak_nar!tar_job;
 WHERE Tar_job.shifr == ?par_sh

В форме грид с представлением о всех шифрах работ (представление v_kjob ). А при нажатии на кнопку "добавить" или "редактировать" - другая форма, где редактируется этот шифр работ и грид с представлением v_tar_job.

Пока писала, решила, что обновляемым сделаю только второе представление.

И вообще, чем хорош форум, так это тем, что пока сформулируешь мысли и напишешь, сам найдешь ошибку или решение. У меня это уже неоднократно было.
И спасибо всем отзывчивым участникам форума.
Но все-таки опубликую. Может, еше что новое узнаю. :)
...
Рейтинг: 0 / 0
обновление представлений
    #33205453
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi k_sv!

> 1. k_job (sh_job, prof, razr, sist_opl). Да, без ключевого поля. Есть
> только индекс Candidate для sh_job с !deleted().

Его и делай ключевым, только ОБЯЗАТЕЛЬНО следи за SET DELETED ON - иначе
начнёт обновлять чёрт-те что.

Можно конечно и руками всё делать - если не лениво :)

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / обновление представлений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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