powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / представления и default
6 сообщений из 6, страница 1 из 1
представления и default
    #33192605
k_sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Вопрос новичка. Кажется, у меня большая проблема.

Есть таблица заказов zakaz(id_zak, ...) работ по заказу job_zak (id_jzak, id_zak, ...).
Также есть соответствующие им представления v_zakaz и v_jobzak.
Устанавливаю им 5-ю буферизацию.
В гриде выводится представление с заказами. Пользователь нажимает кнопочку "Добавить" или "Редактировать". Открывается окно редактирования заказа. Во вкладке этого окна - грид с представлением работ по заказу.

У ключевых полей таблиц есть default ( id_zakaz.id и id_jobzak.id). И у таблиц есть триггеры на insert (которые увеличивают поля ( id_zakaz.id и id_jobzak.id). Примитивно, конечно, но работает.

После того, как пользователь добавил/изменил заказ и наигрался с гридом работ по заказу, нажимает "Сохранить". Т.е. TableUpdate(.f.,.T.,"v_zakaz") и TableUpdate(.f.,.T.,"v_jobzak").

Но у меня вся проблема в том, что при таком раскладе я не могу заполнить поле v_jobzak.id_zak (ключ заказа в представлении работ по заказу). Внутри транзакции requery() делать нельзя. А триггер срабатывает только после обновления представления.

Короче, "все пропало".
С нетернением жду вашу критику и предложения.
...
Рейтинг: 0 / 0
представления и default
    #33192632
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас неправильная логика формирования очередного значения ID. Это должно происходить в DEFAULT соответствующего поля. Т.е. одновременно увеличивается счетчик в служебной таблице и возвращается очередное значение ID.

Как это делается можете посмотреть на этом форуме (поиск по ключевому слову "NewId"). Также можно посмотреть примеры стандартных проектах примеров FoxPro: Solution.pjx (форма NewID.scx) и TasTrade.pjx.

Modify Project (Home(2)+"Solution\Solution.pjx")

Тогда никаких проблем. Вы создали новую запись. По Default, уже в буфере таблицы , еще ДО сброса данных (т.е. ДО триггера) будет сформировано новое значение id_zakaz.id. Его можно прочитать и записать в поле View v_jobzak.id_zak. Напрямую. Командой REPLACE.

Кстати, я не совсем понял, зачем нужен View для одного заказа? Вот этот самый v_zakaz? Если хочется работать именно с ним, то добавьте функцию Default для поля id_jzak прямо во View. Далее логика работы как описано выше.
...
Рейтинг: 0 / 0
представления и default
    #33192644
k_sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
View нужно для отображения всех заказов.
А действительно, чего я в представление пишу, а потом обновляю? Наверное, можно писать прямо в таблицу.
А вот стандартных примеров у меня нету. И даже не стандартных тоже. :) Где их можно взять? Или если не сложно, зашлите в мой почтовый ящик.
Заранее благодарна.
...
Рейтинг: 0 / 0
представления и default
    #33192810
k_sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то я не соображу, как добавить функцию Default для поля во View.
Подскажите, плиз.
...
Рейтинг: 0 / 0
представления и default
    #33193016
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k_svЧто-то я не соображу, как добавить функцию Default для поля во View.
Закладка Fileds (где выбирается список поей) - Кнопка Properties (самая последняя между списками существующих и уже выбранных полей) - В верхнем ComboBox выбираете поле и устанавливаете для него нужные свойства, в том числе и Default.
...
Рейтинг: 0 / 0
представления и default
    #33193027
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi k_sv!

1) Стандартные примеры есть в поставке фоска. Это надо ОЧЕНЬ постараться
чтобы после инсталляции примеров не было. Папка Samples в каталоге где
установлен фокс.
2) ПОИСК - это великая вещь, не надо считать что тебя оскорбляют посылая
туда, тем более что даже дали ключевое слово.
3) Непосредственно на вопрос: программно - DBSETPROP("View.Field", "FIELD",
"DefaultValue", "NewID('BaseTableName')")
Визуально - в View дизайнере на первой вкладке (где поля выбираются) внизу
есть кнопочка - "Properties" - нажимай и смотри.
Естественно что в качестве значения для Default в поле View должно быть
ТОЧНО то-же что и для поля соответствующей таблицы.
Помимо этого данное поле должно быть помечено как обновляемое (и ключевое
конечно тоже - для "шапки"! это НЕ взаимоисключающие свойства).

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


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