|
|
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Всем привет! Есть 2 таб. связь один-ко-многим. Есть форма для добавления записи в 1 таб. В этой же форме есть кнопки "ОК", "ОТМЕНА" и кнопка "К1"благодаря которой открывается новое окно для добавления и редактирования записей из 2 таб. Пользователь добавляет новую запись в 1 таб., (не сохраняет запись) нажиматет на кнопку "К1". Вопрос: 1. Как определить id записи в 1 таб. чтоб передать её 2-й таб.? 2. Допустим передали id записи, пользователь добавил несколько записей во 2-ю таб, а на первом окне нажал отмена, т.е. главная и подчиненные записи не должны были сохранится, но во второй то он нажимал ОК. как быть? ============================ РВ9 ASA9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 14:11 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 15:23 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
делаем Update для формы 1, получить id строки, передать в форму 2 в 2 добавляем что нужно, делаем Update. после всех заполнений commit, если отмена - rollback ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 15:27 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Если связь один-ко-многим - ето таблица1-таблица2, то передавать id нужно только после того, как пользователь сохранит запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 15:33 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
На мой взгляд лучше в главном окне создать datastore для хранения данных талицы 2. Окно, которое будет вызываться по кнопке, будет изменять данные не в БД, а в DataStore. Соответственно после нажатия кнопки "Ок" сначала сохраняешь данные в главном datawindow и получаешь id. Затем проставляешь новый id в datastore и сохраняешь его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 15:52 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Я тоже предложу вариант. :)) В случае применения автоинкрементных полей можно использовать функцию GetIdentity в ASA для резервирования значения первичного ключа и передавать внутри программы их как угодно. То есть после вставки записи в первой форме выполнить вызов GetIdentity для получения значения ключа, потом при открытии второй формы передать это значение и использовать его там для заполнения соответствующего поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 15:57 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Осталось только выбрать какой вариант использовать;)) Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 16:11 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
авторЛибо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО) А по моему наоборот хорошо, особенно если parent не имеет смысла без child. Лично мне больше всех понравился вариант, предложенный Andyn, как самый надежный для ASA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 16:22 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
ASCRUS Лично мне больше всех понравился вариант, предложенный Andyn, как самый надежный для ASA. но менее универсальный. Лучше создать процедуру с транзакцией генерирующую уникальный id для каждой таблицы, она то и будет резервировать нужные id Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 16:34 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
по моему лутше всего делать через datasource как предложил Louder, используя этот метод меньше sequinces будет потерянно, ведь пользователь может нажать "отменна". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 17:02 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО) А по моему наоборот хорошо, особенно если parent не имеет смысла без child. Огранизация "длинной" транзакции при таком подходе неоправдана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 17:03 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Alexander Kolotinets ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО) А по моему наоборот хорошо, особенно если parent не имеет смысла без child. Огранизация "длинной" транзакции при таком подходе неоправдана. А вот это уже смотря для какой СУБД и как готовить. А вот в случае, когда клиент в транзакции записал шапку документа, сделал COMMIT и успешно отвалился, как то иметь в БД пустую шапку без детальной информации - вот уж что точно не оправданно. Как Вы собираетесь при таком подходе обходить эти ситуации ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 18:54 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
ASCRUS Alexander Kolotinets ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО) А по моему наоборот хорошо, особенно если parent не имеет смысла без child. Огранизация "длинной" транзакции при таком подходе неоправдана. А вот это уже смотря для какой СУБД и как готовить. А вот в случае, когда клиент в транзакции записал шапку документа, сделал COMMIT и успешно отвалился, как то иметь в БД пустую шапку без детальной информации - вот уж что точно не оправданно. Как Вы собираетесь при таком подходе обходить эти ситуации ? Из такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 19:09 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Alexander Kolotinets ASCRUS Alexander Kolotinets ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО) А по моему наоборот хорошо, особенно если parent не имеет смысла без child. Огранизация "длинной" транзакции при таком подходе неоправдана. А вот это уже смотря для какой СУБД и как готовить. А вот в случае, когда клиент в транзакции записал шапку документа, сделал COMMIT и успешно отвалился, как то иметь в БД пустую шапку без детальной информации - вот уж что точно не оправданно. Как Вы собираетесь при таком подходе обходить эти ситуации ? Из такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа. Данный подход есть более универсальным, ИМХО, т.к. можно включить копирование документов с /(без) шапок и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 19:13 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Alexander Kolotinets ASCRUS Alexander Kolotinets ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО) А по моему наоборот хорошо, особенно если parent не имеет смысла без child. Огранизация "длинной" транзакции при таком подходе неоправдана. А вот это уже смотря для какой СУБД и как готовить. А вот в случае, когда клиент в транзакции записал шапку документа, сделал COMMIT и успешно отвалился, как то иметь в БД пустую шапку без детальной информации - вот уж что точно не оправданно. Как Вы собираетесь при таком подходе обходить эти ситуации ? Из такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа. при таком подходе теряется консистентность БД, что считается плохим тоном в программировании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2004, 20:06 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Alexander KolotinetsИз такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа. Ага, а ненужные записи потом стираются ... пятое-десятое... Только одной транзакцией, независимо от БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 06:47 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Решил сохронять главную запись Всем большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 09:47 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Как вариант - вместо отдельного окна сделать tab. на первой закладке master, на второй - detail. Кнопка Ok - одна. Сохраняет оба tabpage в одной транзакции. Простановка id в процессе сохранения. Т.е. - сохранили master - получили identity - прописали identity в detail - сохранили detail. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 09:58 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Но все равно спасибо. =============================== PB 9.0.1 (7236) ASA 9.0.0 (1312) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 10:17 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
zuzu Alexander Kolotinets ASCRUS Alexander Kolotinets ASCRUS[quot автор]Либо добавление записей в parent - child организовать в одной транзакции (что не есть хорошо, ИМХО) А по моему наоборот хорошо, особенно если parent не имеет смысла без child. Огранизация "длинной" транзакции при таком подходе неоправдана. А вот это уже смотря для какой СУБД и как готовить. А вот в случае, когда клиент в транзакции записал шапку документа, сделал COMMIT и успешно отвалился, как то иметь в БД пустую шапку без детальной информации - вот уж что точно не оправданно. Как Вы собираетесь при таком подходе обходить эти ситуации ? Из такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа. при таком подходе теряется консистентность БД, что считается плохим тоном в программировании. Статус документа влияет на консистентность? Что-то новое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 10:54 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Геннадич Alexander KolotinetsИз такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа. Ага, а ненужные записи потом стираются ... пятое-десятое... Только одной транзакцией, независимо от БД. Стираются или нет - зависит от конкретной задачи. Я говорил о том, что использование "длинной" транзакции в данном случае неоправдано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 10:56 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Alexander Kolotinets Геннадич Alexander KolotinetsИз такой ситуации выходов несколько, один из которых - ввод и проверка признака валидности записи. В данном случае валидность определяется наличием тела документа. Ага, а ненужные записи потом стираются ... пятое-десятое... Только одной транзакцией, независимо от БД. Стираются или нет - зависит от конкретной задачи. Я говорил о том, что использование "длинной" транзакции в данном случае неоправдано. Как насчет того, чтобы пояснить свое утверждение ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 12:05 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Alexander KolotinetsСтатус документа влияет на консистентность? Что-то новое. при чем тут статус ??? вот где теряется консистентность данных: 1. User ввел шапку 2. прога сделала изменения в БД без коммит 3. User открывает другое окно (другой sheet)где делает некоторые изменения и записывает их в БД, тоесть происходит COMMIT. 4. переходит в окно где он ввел шапку и закрывает окно. теперь разве можно сказать что данные в БД консистентные ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 12:59 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
zuzu Alexander KolotinetsСтатус документа влияет на консистентность? Что-то новое. при чем тут статус ??? вот где теряется консистентность данных: 1. User ввел шапку 2. прога сделала изменения в БД без коммит 3. User открывает другое окно (другой sheet)где делает некоторые изменения и записывает их в БД, тоесть происходит COMMIT. 4. переходит в окно где он ввел шапку и закрывает окно. теперь разве можно сказать что данные в БД консистентные ? Тогда, если всё так тяжко: или окно для ввода типа респонс, или на каждый экземпляр окна ввода по отдельному экземпляру транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 13:05 |
|
||
|
Подчиненная новая запись
|
|||
|---|---|---|---|
|
#18+
Геннадич zuzu Alexander KolotinetsСтатус документа влияет на консистентность? Что-то новое. при чем тут статус ??? вот где теряется консистентность данных: 1. User ввел шапку 2. прога сделала изменения в БД без коммит 3. User открывает другое окно (другой sheet)где делает некоторые изменения и записывает их в БД, тоесть происходит COMMIT. 4. переходит в окно где он ввел шапку и закрывает окно. теперь разве можно сказать что данные в БД консистентные ? Тогда, если всё так тяжко: или окно для ввода типа респонс, или на каждый экземпляр окна ввода по отдельному экземпляру транзакции. почему же?, просто надо данные записывать в одной транзакции, и юзать по чаще datasource и sharedDW в случаях где данные для записи вводятся в разные response окна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2004, 13:12 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=32784174&tid=1338714]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 485ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...