Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 dw.Update для отдельной записи  [new]
figvam
Guest
Возможно ли настроить dw так, чтобы Update выполнялся только для одной записи (например текущей), при том что изменённых может быть несколько? Мне иногда необходимо, чтобы удаление строки отрабатывалось немедленно.
С этим связан и второй вопрос
2) какие технологии работы с удалёнными записями в многострочном dw возможны?
Расшифрую свой вопрос: Пользователь удалил одну запись (dw.deleterow(0)), изменяет др. записи, потом что-то соображает - решает не сохранять изменения, поэтому закрывает окно без сохранения, а про 'удалённую' запись он забыл, потому что она не отображается (а её действительно необходимо удалить). Для сравнения в FoxPro можно настроить Grid (аналог многострочного dw), что в режиме редактирования записи после удаления будут продолжать отображаться, но будут помечены в первом дополнительном столбце.
17 авг 04, 00:12    [885829]     Ответить | Цитировать Сообщить модератору
 Re: dw.Update для отдельной записи  [new]
alexis glinski
Member

Откуда: Minsk
Сообщений: 408
mozhno proveryat' dwcontrol.DeletedCount()
17 авг 04, 00:52    [885843]     Ответить | Цитировать Сообщить модератору
 Re: dw.Update для отдельной записи  [new]
Ermak
Member

Откуда: Tomsk
Сообщений: 811
См. следующие события в DW Control: UpdateStart, UpdateEnd, SQLPreview

Фактически после выполнения функции DeleteRow( ll_Row ), строка с номером ll_row переносится из Primary! буфера в Delete! буфер.

Для манипуляций с содержимым буферов DW можно пользоваться следующими ф-ми: RowsCopy(...), RowsMove(...), RowsDiscard(...)

Получить/Изменить статус строки (элемента) DW можно через: getItemStatus(...), setItemStatus(...). Сбросить update flags можно через ResetUpdate().

Для определения кол. удал. строк используется: deletedCount()
Для определения кол. изм. строк используется: modifiedCount()
Для определения кол. не отображаемых строк (не удовл. усл. фильтации) используется: FilteredCount()

автор
Для сравнения в FoxPro можно настроить Grid (аналог многострочного dw), что в режиме редактирования записи после удаления будут продолжать отображаться, но будут помечены в первом дополнительном столбце.

И что же Вам мешает это реализовть в DataWindow?
Добавте фиктивное поле в SQL запрос, в выражение Select (Select ..., ' ' as "IsDeleted" From ... ). Исключите поле IsDeleted из списка изменяемых полей (см. меню Rows --> UpdateProperties в dw painter'e). Дальнейший геморрой по обработке на ваше усмотрение.
17 авг 04, 06:08    [885916]     Ответить | Цитировать Сообщить модератору
 Re: dw.Update для отдельной записи  [new]
Kr_Yury
Member

Откуда: Киев, Украина
Сообщений: 244
То, что можно реализовать такую функциональность через скрипт я понимаю. Меня интересовали встроенные возможности PB (по первому вопросу)
17 авг 04, 09:00    [886048]     Ответить | Цитировать Сообщить модератору
 Re: dw.Update для отдельной записи  [new]
Ermak
Member

Откуда: Tomsk
Сообщений: 811
Насколько я понимаю, figvam и Kr_Yury - одно и тоже лицо :-).
Настроить так как Вы этого хотите - нельзя. (А кому это нужно, кроме Вас? Это не в плане наезда, а в плане того, что на всех не угодишь. Мне тоже хочется, что бы в DW был бы режим просмотра, при котором выпадающие списки бы не выпадали, хочется что бы в grid'е было бы single Line Edit поле с кнопкой.)

ЗЫ ООП - Вас спасет.
17 авг 04, 11:38    [886528]     Ответить | Цитировать Сообщить модератору
 Re: dw.Update для отдельной записи  [new]
PL99
Member

Откуда: Moscow
Сообщений: 1367
figvam
Возможно ли настроить dw так, чтобы Update выполнялся только для одной записи (например текущей), при том что изменённых может быть несколько? Мне иногда необходимо, чтобы удаление строки отрабатывалось немедленно.
С этим связан и второй вопрос
2) какие технологии работы с удалёнными записями в многострочном dw возможны?
Расшифрую свой вопрос: Пользователь удалил одну запись (dw.deleterow(0)), изменяет др. записи, потом что-то соображает - решает не сохранять изменения, поэтому закрывает окно без сохранения, а про 'удалённую' запись он забыл, потому что она не отображается (а её действительно необходимо удалить). Для сравнения в FoxPro можно настроить Grid (аналог многострочного dw), что в режиме редактирования записи после удаления будут продолжать отображаться, но будут помечены в первом дополнительном столбце.
DataWindow формирует DML операторы для каждой измененной записи. Т.е., если вы внесли изменения в N записей, то будет сформировано N запросов UPDATE. Аналогично с DELETE. Все это можно либо обработать в соответствующих хранимых процедурах, либо работать на клиенте, перехватывая событие SQLPreview.
17 авг 04, 14:43    [887468]     Ответить | Цитировать Сообщить модератору
 Re: dw.Update для отдельной записи  [new]
Kr_Yury
Member

Откуда: Киев, Украина
Сообщений: 244
Иногда полезно повторять пройденное. Нашёл то, что мне было необходимо:
dw.RowsDiscard удаляет диапазон строк из буфера, но не перемещает их в буфер Delete!
20 авг 04, 16:48    [898281]     Ответить | Цитировать Сообщить модератору
 Re: dw.Update для отдельной записи  [new]
Ermak
Member

Откуда: Tomsk
Сообщений: 811
автор
Иногда полезно повторять пройденное. Нашёл то, что мне было необходимо:
dw.RowsDiscard удаляет диапазон строк из буфера, но не перемещает их в буфер Delete!


Правда в БД ничего при этом удалено не будет.
21 авг 04, 08:05    [899071]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить