powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / замкнутый круг
6 сообщений из 6, страница 1 из 1
замкнутый круг
    #37848382
Хиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ситуация такая: есть главная форма - на форме кнопка "Добавить" по которой должна открыться второстепенная форма.

на кнопке по onclick навешен код

SELECT o_sotrud
a=o_sotrud.tab_nom
SELECT family
APPEND BLANK
replace family.tab_nom WITH a

DO FORM sem

второстепенная форма привязана, как понимаете, к таблице family. И вот когда эта форма открывается, то вместо новой записи отображается первая запись....
в методе Active Event - пусто

было даже что отображалась пустая - добавленная запись, но при клике в любое поле опять первая запись появляется.
Какие могут быть причины такого поведения?
...
Рейтинг: 0 / 0
замкнутый круг
    #37848440
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недостаточно данных для точного ответа... Возможно индексы?

SELECT o_sotrud
a=o_sotrud.tab_nom
SELECT family

setorder=SET("ORDER")
SET ORDER TO

APPEND BLANK
replace family.tab_nom WITH a

DO FORM sem

SET ORDER TO (setorder)
...
Рейтинг: 0 / 0
замкнутый круг
    #37848462
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Хиль
Почитайте букварь по do form ... with
а также по lparameters

идея в том, что вы можете при вызове формы передать параметр
а в init вызываемой формы поймать переданный параметр и определить поведение вызываемой формы в зависимости от переданного параметра.
...
Рейтинг: 0 / 0
замкнутый круг
    #37848477
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хиль,

Либо уберите таблицу family из Data Environment формы sem,
либо при старте формы устанавливайте указатель вручную типа GO BOTTOM
...
Рейтинг: 0 / 0
замкнутый круг
    #37849099
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все крутится вокруг того, как происходит позиционирование записи в подчиненной форме. Судя по Вашим словам, Вы это никак не контролируете. Как следствие, Вы вынуждены рассчитывать на некие действия по умолчанию.

В данном случае, чтобы получилось то, что Вы хотите, т.е. чтобы действия FoxPro по умолчанию совпали с Вашими ожиданиями, должны выполняться следующие условия

1. Подчиненная форма должна работать в Default DataSession
2. Таблица, в которую выполняется вставка, не должна иметь активных индексов, фильтров и relation в подчиненной форме
3. При инициализации форм и объектов подчиненной формы не должно быть команд, которые прямо или косвенно могут переместить указатель записи таблицы

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

Как и советовал Grin , следует вызвать подчиненную форму с параметром. Например так

Код: sql
1.
DO FORM sem WITH 0, o_sotrud.tab_nom


Параметры принимаются в форме в методе INIT самой формы. Для этого надо написать первой командой в этом методе PARAMETERS или LPARAMETERS. Получим примерно такой код

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
* Метод INIT формы sem.scx
LPARAMETERS tnID, tvTabNom

if m.tnID = 0
    * Если первый параметр имеет значение 0, то создаем новую запись
    SELECT family
    APPEND BLANK 
    replace family.tab_nom WITH m.tvTabNom
else
    * Если первый параметр имеет значение отличное от 0, то переходим к указанной записи
    SELECT family
    LOCATE FOR (...) = m.tnID
endif



Поскольку я не знаю, что является идентификатором записи в таблице sem, то поставил многоточие.

При подобном подходе одна и та же форма sem может использоваться и для создания новой записи и для редактирования уже существующей.
...
Рейтинг: 0 / 0
замкнутый круг
    #37850648
Хиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, спасибо. все получилось
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / замкнутый круг
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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