powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Подчиненная новая запись
28 сообщений из 28, показаны все 2 страниц
Подчиненная новая запись
    #32782294
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть 2 таб. связь один-ко-многим.

Есть форма для добавления записи в 1 таб.
В этой же форме есть кнопки "ОК", "ОТМЕНА" и кнопка "К1"благодаря которой открывается новое окно для добавления и редактирования записей из 2 таб.

Пользователь добавляет новую запись в 1 таб., (не сохраняет запись) нажиматет на кнопку "К1".

Вопрос:
1. Как определить id записи в 1 таб. чтоб передать её 2-й таб.?
2. Допустим передали id записи, пользователь добавил несколько записей во 2-ю таб, а на первом окне нажал отмена, т.е. главная и подчиненные записи не должны были сохранится, но во второй то он нажимал ОК. как быть?

============================
РВ9 ASA9
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32782516
Alexander Kolotinets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIGITALPROВсем привет!

Есть 2 таб. связь один-ко-многим.

Есть форма для добавления записи в 1 таб.
В этой же форме есть кнопки "ОК", "ОТМЕНА" и кнопка "К1"благодаря которой открывается новое окно для добавления и редактирования записей из 2 таб.

Пользователь добавляет новую запись в 1 таб., (не сохраняет запись) нажиматет на кнопку "К1".

Вопрос:
1. Как определить id записи в 1 таб. чтоб передать её 2-й таб.?
2. Допустим передали id записи, пользователь добавил несколько записей во 2-ю таб, а на первом окне нажал отмена, т.е. главная и подчиненные записи не должны были сохранится, но во второй то он нажимал ОК. как быть?

============================
РВ9 ASA9

По-порядку:
1. Используй @@identity (в данном случае RTFM ASA9)
2. Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО), либо не давть возможности заполнять child при несохраненном parent
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32782536
Gosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
делаем Update для формы 1, получить id строки, передать в форму 2
в 2 добавляем что нужно, делаем Update. после всех заполнений commit, если отмена - rollback
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32782556
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если связь один-ко-многим - ето таблица1-таблица2, то передавать id нужно только после того, как пользователь сохранит запись.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32782616
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мой взгляд лучше в главном окне создать datastore для хранения данных талицы 2.
Окно, которое будет вызываться по кнопке, будет изменять данные не в БД, а в DataStore.
Соответственно после нажатия кнопки "Ок" сначала сохраняешь данные в главном datawindow и получаешь id. Затем проставляешь новый id в datastore и сохраняешь его.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32782632
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже предложу вариант. :))

В случае применения автоинкрементных полей можно использовать функцию GetIdentity в ASA для резервирования значения первичного ключа и передавать внутри программы их как угодно. То есть после вставки записи в первой форме выполнить вызов GetIdentity для получения значения ключа, потом при открытии второй формы передать это значение и использовать его там для заполнения соответствующего поля.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32782670
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Осталось только выбрать какой вариант использовать;))
Спасибо!
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32782711
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЛибо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО)
А по моему наоборот хорошо, особенно если parent не имеет смысла без child.

Лично мне больше всех понравился вариант, предложенный Andyn, как самый надежный для ASA.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32782743
Сотников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASCRUS
Лично мне больше всех понравился вариант, предложенный Andyn, как самый надежный для ASA.

но менее универсальный.

Лучше создать процедуру с транзакцией генерирующую уникальный id для каждой таблицы, она то и будет резервировать нужные id

Код: plaintext
1.
2.
3.
4.
create table INDEX_GENERATE (
     table_name           char( 30 )                       not null,
     id_record            numeric( 12 , 0 )                  null,
     id_recordmax         numeric( 12 , 0 )                  null
)
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32782793
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по моему лутше всего делать через datasource как предложил Louder,
используя этот метод меньше sequinces будет потерянно, ведь пользователь может нажать "отменна".
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32782797
Alexander Kolotinets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО)
А по моему наоборот хорошо, особенно если parent не имеет смысла без child.

Огранизация "длинной" транзакции при таком подходе неоправдана.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32783016
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Kolotinets ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО)
А по моему наоборот хорошо, особенно если parent не имеет смысла без child.

Огранизация "длинной" транзакции при таком подходе неоправдана.
А вот это уже смотря для какой СУБД и как готовить. А вот в случае, когда клиент в транзакции записал шапку документа, сделал COMMIT и успешно отвалился, как то иметь в БД пустую шапку без детальной информации - вот уж что точно не оправданно. Как Вы собираетесь при таком подходе обходить эти ситуации ?
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32783036
Alexander Kolotinets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS Alexander Kolotinets ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО)
А по моему наоборот хорошо, особенно если parent не имеет смысла без child.

Огранизация "длинной" транзакции при таком подходе неоправдана.
А вот это уже смотря для какой СУБД и как готовить. А вот в случае, когда клиент в транзакции записал шапку документа, сделал COMMIT и успешно отвалился, как то иметь в БД пустую шапку без детальной информации - вот уж что точно не оправданно. Как Вы собираетесь при таком подходе обходить эти ситуации ?

Из такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32783043
Alexander Kolotinets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Kolotinets ASCRUS Alexander Kolotinets ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО)
А по моему наоборот хорошо, особенно если parent не имеет смысла без child.

Огранизация "длинной" транзакции при таком подходе неоправдана.
А вот это уже смотря для какой СУБД и как готовить. А вот в случае, когда клиент в транзакции записал шапку документа, сделал COMMIT и успешно отвалился, как то иметь в БД пустую шапку без детальной информации - вот уж что точно не оправданно. Как Вы собираетесь при таком подходе обходить эти ситуации ?

Из такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа.

Данный подход есть более универсальным, ИМХО, т.к. можно включить копирование документов с /(без) шапок и т.д.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32783082
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Kolotinets ASCRUS Alexander Kolotinets ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО)
А по моему наоборот хорошо, особенно если parent не имеет смысла без child.

Огранизация "длинной" транзакции при таком подходе неоправдана.
А вот это уже смотря для какой СУБД и как готовить. А вот в случае, когда клиент в транзакции записал шапку документа, сделал COMMIT и успешно отвалился, как то иметь в БД пустую шапку без детальной информации - вот уж что точно не оправданно. Как Вы собираетесь при таком подходе обходить эти ситуации ?

Из такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа.

при таком подходе теряется консистентность БД, что считается плохим тоном в программировании.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32783330
Геннадич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander KolotinetsИз такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа.
Ага, а ненужные записи потом стираются ... пятое-десятое...
Только одной транзакцией, независимо от БД.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32783501
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил сохронять главную запись

Всем большое спасибо!
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32783527
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант - вместо отдельного окна сделать tab. на первой закладке master, на второй - detail. Кнопка Ok - одна. Сохраняет оба tabpage в одной транзакции.
Простановка id в процессе сохранения.
Т.е.
- сохранили master
- получили identity
- прописали identity в detail
- сохранили detail.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32783579
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
на второй - detail
Делалей может бать нескольколько, да и в одной детали может быть несколько записей которые вначале отображаются как грид и не редактируются, а из грида уже окрываем еще новое для редактирования

Но все равно спасибо.
===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312)
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32783672
Alexander Kolotinets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zuzu Alexander Kolotinets ASCRUS Alexander Kolotinets ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО)
А по моему наоборот хорошо, особенно если parent не имеет смысла без child.

Огранизация "длинной" транзакции при таком подходе неоправдана.
А вот это уже смотря для какой СУБД и как готовить. А вот в случае, когда клиент в транзакции записал шапку документа, сделал COMMIT и успешно отвалился, как то иметь в БД пустую шапку без детальной информации - вот уж что точно не оправданно. Как Вы собираетесь при таком подходе обходить эти ситуации ?

Из такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа.

при таком подходе теряется консистентность БД, что считается плохим тоном в программировании.

Статус документа влияет на консистентность? Что-то новое.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32783677
Alexander Kolotinets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Геннадич Alexander KolotinetsИз такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа.
Ага, а ненужные записи потом стираются ... пятое-десятое...
Только одной транзакцией, независимо от БД.

Стираются или нет - зависит от конкретной задачи. Я говорил о том, что использование "длинной" транзакции в данном случае неоправдано.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32783898
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Kolotinets Геннадич Alexander KolotinetsИз такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа.
Ага, а ненужные записи потом стираются ... пятое-десятое...
Только одной транзакцией, независимо от БД.

Стираются или нет - зависит от конкретной задачи. Я говорил о том, что использование "длинной" транзакции в данном случае неоправдано.
Как насчет того, чтобы пояснить свое утверждение ?
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32784110
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander KolotinetsСтатус документа влияет на консистентность? Что-то новое.
при чем тут статус ???
вот где теряется консистентность данных:
1. User ввел шапку
2. прога сделала изменения в БД без коммит
3. User открывает другое окно (другой sheet)где делает некоторые изменения и записывает их в БД, тоесть происходит COMMIT.
4. переходит в окно где он ввел шапку и закрывает окно.
теперь разве можно сказать что данные в БД консистентные ?
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32784135
Геннадич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zuzu Alexander KolotinetsСтатус документа влияет на консистентность? Что-то новое.
при чем тут статус ???
вот где теряется консистентность данных:
1. User ввел шапку
2. прога сделала изменения в БД без коммит
3. User открывает другое окно (другой sheet)где делает некоторые изменения и записывает их в БД, тоесть происходит COMMIT.
4. переходит в окно где он ввел шапку и закрывает окно.
теперь разве можно сказать что данные в БД консистентные ?
Тогда, если всё так тяжко: или окно для ввода типа респонс, или на каждый экземпляр окна ввода по отдельному экземпляру транзакции.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32784174
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Геннадич zuzu Alexander KolotinetsСтатус документа влияет на консистентность? Что-то новое.
при чем тут статус ???
вот где теряется консистентность данных:
1. User ввел шапку
2. прога сделала изменения в БД без коммит
3. User открывает другое окно (другой sheet)где делает некоторые изменения и записывает их в БД, тоесть происходит COMMIT.
4. переходит в окно где он ввел шапку и закрывает окно.
теперь разве можно сказать что данные в БД консистентные ?
Тогда, если всё так тяжко: или окно для ввода типа респонс, или на каждый экземпляр окна ввода по отдельному экземпляру транзакции.
почему же?, просто надо данные записывать в одной транзакции, и юзать по чаще datasource и sharedDW в случаях где данные для записи вводятся в разные response окна.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32784492
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIGITALPRO
Код: plaintext
на второй - detail
Делалей может бать нескольколько, да и в одной детали может быть несколько записей которые вначале отображаются как грид и не редактируются, а из грида уже окрываем еще новое для редактирования
Я недавно уже показывал картинки, они были слегка упрощены :-)

Вот более полный вариант - он согласуется с транзакционной моделью, предлагаемой в PFC, рекомендацией г-на Зорина и вашими пожеланиями к интерфейсу
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32784496
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжение - открыли окно детали - в нем тоже есть подчиненные записи.

Все транзакции - короткие.
...
Рейтинг: 0 / 0
Подчиненная новая запись
    #32784549
Alexander Kolotinets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2PL99

Респект. Достаточно обратиться к модели, реализованной в PFC
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Подчиненная новая запись
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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