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

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

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

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

Сообщение t-ea » 12.04.2014 11:07:03

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

Как быть?

P.S.: В news что-то описано — в поиске вижу, а при попытке открытия сообщения получаю "weft didn't produce an output."
t-ea
новенький
 
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

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

Сообщение debi12345 » 12.04.2014 11:58:36

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

А разве это возможно для БД-грида (все операции с данными - на стороне БД) ?
Я обычно под выбор 2+ строк создаю дополнительно InternakllCalc-boolean-поле и привязываю к нему tdbBooleanEdit.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

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

Сообщение mse » 12.04.2014 12:29:42

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.
mse
новенький
 
Сообщения: 68
Зарегистрирован: 08.08.2013 15:40:31

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

Сообщение t-ea » 15.04.2014 15:41:56

То есть для обработки выделенных строк надо делать что-то вроде
Код: Выделить всё
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

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

Сообщение mse » 15.04.2014 18:03:44

mse
новенький
 
Сообщения: 68
Зарегистрирован: 08.08.2013 15:40:31

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

Сообщение t-ea » 09.06.2014 10:27:05

Теперь надо сделать для запроса, содержащего вложенный SELECT.
Пишет:
Код: Выделить всё
nested : Dataset is read-only.
Вложения
error-select-in.zip
(50.31 КБ) Скачиваний: 755
t-ea
новенький
 
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

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

Сообщение mse » 10.06.2014 11:05:18

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).
mse
новенький
 
Сообщения: 68
Зарегистрирован: 08.08.2013 15:40:31

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

Сообщение blackbee045 » 06.11.2014 09:54:55

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

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

Сообщение pupsik » 06.11.2014 12:30:40

..mseuniverse-mseuniverse/samples/db/gridselectedrow
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

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

Сообщение debi12345 » 06.11.2014 20:03:10

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" :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)


Вернуться в MSEide + MSEgui

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru