24.03.2005, 07:51 | #1 |
Участник
|
Выбраные строки в гриде.
Добрый день.
Как получить выбранные в гриде строки? |
|
24.03.2005, 08:06 | #2 |
Гость
|
table = table_ds.getFirst(0 или 1);
while(table) { ----// do something ----table = table_ds.getNext(); } |
|
24.03.2005, 08:26 | #3 |
Участник
|
Спасибо.
Всё гениальное оказалось просто. |
|
24.03.2005, 09:19 | #4 |
Участник
|
в BestPractices есть статья Traversing multi selected records in a data source
вот ссылка, которую можно запихать в адресную строку IE: mk:@MSITStore:C:\Program%20Files\Navision\Client\Bin\Dev_BPHB.chm::/Application_Design/Design_Patterns/TraverseMultiselectedDataSource.htm Там рекомендуют делать так: PHP код:
|
|
24.03.2005, 10:03 | #5 |
Administrator
|
Здесь перевод того раздела BP: http://forum.mazzy.ru/index.php?showtopic=488
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
24.03.2005, 10:16 | #6 |
Гость
|
выглядит красиво, но налицо лишний вызов функции
|
|
24.03.2005, 10:19 | #7 |
Участник
|
Я сделал так, как писал sassas.
while обернул в транзакцию. Внутри цикла select forupdate... Если что-то выбралось, спрашиваю боксом: ДаНетОтмена. Если Отмена, то откатываю транзакцию. Возникает "Ошибка контроля транзаций (TTS)" при нажатии на любую кнопку. Что не правильно делаю? |
|
24.03.2005, 10:26 | #8 |
----------------
|
2 sassas
не лишний. твой вариант не будет работать, если надо обработать только текущую запись без её выделения. 2 bagyr вызов диалога из транзакции - неудачная идея, так как юзер мог пойти покурить, уснуть или еще что-то, а запись заблокирована... |
|
24.03.2005, 10:29 | #9 |
Участник
|
Предполагается, что юзер в некоторых ситуациях должен мочь отменить те изменения, которые уже упели пройти внутри транзакции.
|
|
24.03.2005, 10:32 | #10 |
Гость
|
неправильно прерываете транзакцию. Пользуйтесь
throw error("cccccccc"); |
|
24.03.2005, 10:35 | #11 |
Гость
|
2 Wamr
будет работать не жужжа точно так же , как из BP. Или не будет. Код функционально идентичен. |
|
24.03.2005, 10:36 | #12 |
----------------
|
Прерывать транзакции диалогом или формой НЕЛЬЗЯ!
Можно сделать диалог ДО транзакции уверен ли юзверь, в том что он хочет изменить. 2 sassas ставлю 100 баксов, что не будет |
|
24.03.2005, 11:09 | #13 |
Гость
|
Цитата:
Прерывать транзакции диалогом или формой НЕЛЬЗЯ!
по поводу 100 баксов - не проверял, да я и о другом: коды функционально идентичны |
|
24.03.2005, 11:18 | #14 |
NavAx
|
Не идентичны.
PHP код:
если нет выделенных строк, то ваш getFirst() вернёт пустую запись и while не отработает. А должен, для записи на которой стоит курсор.
__________________
С уважением, Игорь Ласийчук. |
|
24.03.2005, 11:21 | #15 |
----------------
|
sassas и я как раз о том, что коды НЕидентичны, чем они отличаются я уже сказал.
Если проверить лень - можешь просто прислать деньги |
|
24.03.2005, 11:42 | #16 |
Гость
|
да, что-то я просмотрел мимо ).
Хотя, отмажусь: нужны были именно выбранные строки (а не "или текущая"). Ы? |
|
24.03.2005, 12:13 | #17 |
Участник
|
Или текущая запись мне не нужна. Если ни одной записи не выбрано, кнопка будет выключена.
Не понял как использовать Цитата:
throw error("cccccccc");
|
|
24.03.2005, 12:30 | #18 |
Гость
|
ttsbegin;
while select forupdate salestable { if (box::yesNo("dd", DialogButton::No) == DialogButton::No) { throw error("www"); } } ttscommit; |
|
24.03.2005, 12:32 | #19 |
Модератор
|
Wamr прав. Никогда не делай остановок, и тем более - запросов действий пользователя внутри транзакции. Я юзаю рекордлисты, чекаю их, а потом по ним делаю разноску. Открытие формы может почлечь непарнось точек входа в транзакцию и выхода из неё. При throw error() откатываются ВСЕ проводки, сделанные внутри транзакции, так что это тебе не подойдет.
Да, для установки видимости кнопок транзакии не нужны С Уважением, Георгий |
|
24.03.2005, 12:32 | #20 |
NavAx
|
Цитата:
Изначально опубликовано bagyr
Можно с примером?
__________________
Isn't it nice when things just work? |
|