Страница 1 из 1

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

СообщениеДобавлено: 12.04.2014 11:07:03
t-ea
Надо сделать множественный выбор в tDB*grid, но SelectedRows, при выделении больше чем одной строки, возвращает nil.

Как быть?

P.S.: В news что-то описано — в поиске вижу, а при попытке открытия сообщения получаю "weft didn't produce an output."

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

СообщениеДобавлено: 12.04.2014 11:58:36
debi12345
Надо сделать множественный выбор в tDB*grid, но SelectedRows, при выделении больше чем одной строки, возвращает nil.

А разве это возможно для БД-грида (все операции с данными - на стороне БД) ?
Я обычно под выбор 2+ строк создаю дополнительно InternakllCalc-boolean-поле и привязываю к нему tdbBooleanEdit.

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

СообщениеДобавлено: 12.04.2014 12:29:42
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.

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

СообщениеДобавлено: 15.04.2014 15:41:56
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:

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

СообщениеДобавлено: 15.04.2014 18:03:44
mse

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

СообщениеДобавлено: 09.06.2014 10:27:05
t-ea
Теперь надо сделать для запроса, содержащего вложенный SELECT.
Пишет:
Код: Выделить всё
nested : Dataset is read-only.

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

СообщениеДобавлено: 10.06.2014 11:05:18
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).

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

СообщениеДобавлено: 06.11.2014 09:54:55
blackbee045
Есть ли где в mseide или в mseuniverse пример использования выделенных строк чтобы подсмотреть, потому-что при таком подходе у меня ничего не получается.
boolean-поле пока не использую, так как в grid уже мало места для дополнительной колонки.?

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

СообщениеДобавлено: 06.11.2014 12:30:40
pupsik
..mseuniverse-mseuniverse/samples/db/gridselectedrow

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

СообщениеДобавлено: 06.11.2014 20:03:10
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" :)