Использование tDBwidgetgrid.SelectedRows
Модератор: Модераторы
Использование tDBwidgetgrid.SelectedRows
Надо сделать множественный выбор в tDB*grid, но SelectedRows, при выделении больше чем одной строки, возвращает nil.
Как быть?
P.S.: В news что-то описано — в поиске вижу, а при попытке открытия сообщения получаю "weft didn't produce an output."
Как быть?
P.S.: В news что-то описано — в поиске вижу, а при попытке открытия сообщения получаю "weft didn't produce an output."
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Надо сделать множественный выбор в tDB*grid, но SelectedRows, при выделении больше чем одной строки, возвращает nil.
А разве это возможно для БД-грида (все операции с данными - на стороне БД) ?
Я обычно под выбор 2+ строк создаю дополнительно InternakllCalc-boolean-поле и привязываю к нему tdbBooleanEdit.
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.
То есть для обработки выделенных строк надо делать что-то вроде
?
Есть ли где в mseide или в mseuniverse пример использования выделенных строк чтобы подсмотреть, потому-что при таком подходе у меня ничего не получается.
boolean-поле пока не использую, так как в grid уже мало места для дополнительной колонки.
Пробовал использовать fieldname_selected.
При вызове query.Next меняется значение selected этой записи, и получается что она тоже выделена. (кстати у меня значение для выделенной строки равняется -2'147'483'648, а не -1)
Что делать?
Код: Выделить всё
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)
Что делать?
Теперь надо сделать для запроса, содержащего вложенный SELECT.
Пишет:
Пишет:
Код: Выделить всё
nested : Dataset is read-only.- Вложения
-
- error-select-in.zip
- (50.31 КБ) 939 скачиваний
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).
"
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
Есть ли где в mseide или в mseuniverse пример использования выделенных строк чтобы подсмотреть, потому-что при таком подходе у меня ничего не получается.
boolean-поле пока не использую, так как в grid уже мало места для дополнительной колонки.?
boolean-поле пока не использую, так как в grid уже мало места для дополнительной колонки.?
..mseuniverse-mseuniverse/samples/db/gridselectedrow
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
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"
