Использование tDBwidgetgrid.SelectedRows

Вопросы программирования и использования MSEide + MSEgui.

Модератор: Модераторы

Ответить
t-ea
новенький
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Использование tDBwidgetgrid.SelectedRows

Сообщение t-ea »

Надо сделать множественный выбор в tDB*grid, но SelectedRows, при выделении больше чем одной строки, возвращает nil.

Как быть?

P.S.: В news что-то описано — в поиске вижу, а при попытке открытия сообщения получаю "weft didn't produce an output."
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

Надо сделать множественный выбор в tDB*grid, но SelectedRows, при выделении больше чем одной строки, возвращает nil.

А разве это возможно для БД-грида (все операции с данными - на стороне БД) ?
Я обычно под выбор 2+ строк создаю дополнительно InternakllCalc-boolean-поле и привязываю к нему tdbBooleanEdit.
mse
новенький
Сообщения: 68
Зарегистрирован: 08.08.2013 15:40:31

Сообщение mse »

debi12345 писал(а):I usually under a choice of 2 + lines create additional InternakllCalc-boolean-field and tied him tdbBooleanEdit.

Or select a ftinteger field in <tdb*grid>.datalink.fieldname_selected. Every bit is the selected state of the according column, -1 -> whole row selected. The DB-grids have rows for the visible row range of the dataset only -> in order to get the selected rows the field value must be checked. There are more fieldname_* properties for other grid row features.
t-ea
новенький
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Сообщение t-ea »

То есть для обработки выделенных строк надо делать что-то вроде

Код: Выделить всё

sqlquery.first;
while not query.eof do begin
   if query['selected'] <> 0 { или .Value = True в случае boolean}
      then 'Это выделено'
   query.next
end;

?

Есть ли где в mseide или в mseuniverse пример использования выделенных строк чтобы подсмотреть, потому-что при таком подходе у меня ничего не получается.

boolean-поле пока не использую, так как в grid уже мало места для дополнительной колонки.

Пробовал использовать fieldname_selected.
При вызове query.Next меняется значение selected этой записи, и получается что она тоже выделена. (кстати у меня значение для выделенной строки равняется -2'147'483'648, а не -1)

Что делать? :roll:
t-ea
новенький
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Сообщение t-ea »

Теперь надо сделать для запроса, содержащего вложенный SELECT.
Пишет:

Код: Выделить всё

 nested : Dataset is read-only.
Вложения
error-select-in.zip
(50.31 КБ) 939 скачиваний
mse
новенький
Сообщения: 68
Зарегистрирован: 08.08.2013 15:40:31

Сообщение mse »

Fore complex queries the update statements will not be built automatically. Please set SQLDelete, SQLInsert and SQLUpdate according your needs, for example SQLUpdate:
"
update table1 set name=:name where id=:id
"
Another possibility is to use tmsesqlquery.onaplyrecupdate.
BTW, co_focusselect in grids with select field does not work well, please use co_mouseselect and/or co_keyselect instead.

Posted after 2 hours 58 minutes 8 seconds:
git master 26d3a49858b408b82d50f79fd1601bc488f6dd18 has a new flag tmsesqlquery.controller.options dso_noapply which can be used in case the changes don't need to be pushed to the database but the dataset must be editable because of fkInternalCalc fields.
It is also recommended to activate tdb*grid.datalink.options gdo_selectautopost (default in git master).
blackbee045
незнакомец
Сообщения: 1
Зарегистрирован: 06.11.2014 08:08:39

Сообщение blackbee045 »

Есть ли где в mseide или в mseuniverse пример использования выделенных строк чтобы подсмотреть, потому-что при таком подходе у меня ничего не получается.
boolean-поле пока не использую, так как в grid уже мало места для дополнительной колонки.?
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

..mseuniverse-mseuniverse/samples/db/gridselectedrow
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

a new flag tmsesqlquery.controller.options dso_noapply which can be used in case the changes don't need to be pushed to the database but the dataset must be editable because of fkInternalCalc fields.

A replacement to empty "dataset.OnApplyRecUpdate" as a workaround ? Much time had gone until we've thought out this "fix" :)
Ответить