powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как посчитать сумму нескольких выделеных в DBGrid позиций?
9 сообщений из 9, страница 1 из 1
Как посчитать сумму нескольких выделеных в DBGrid позиций?
    #32337594
grigorii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как посчитать сумму нескольких выделеных в DBGrid позиций?
использую ado.
...
Рейтинг: 0 / 0
Как посчитать сумму нескольких выделеных в DBGrid позиций?
    #32337597
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/61521
...
Рейтинг: 0 / 0
Как посчитать сумму нескольких выделеных в DBGrid позиций?
    #32337716
grigorii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очень смешно!
...
Рейтинг: 0 / 0
Как посчитать сумму нескольких выделеных в DBGrid позиций?
    #32338551
Lt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lt
Гость
Можно просто когда выделяешь(кстати как это происходит) просто складывать текущее выделенное значение с буфером = сумма
...
Рейтинг: 0 / 0
Как посчитать сумму нескольких выделеных в DBGrid позиций?
    #32338608
grigorii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Транспортный оператор выбирает документы из перечня для развоза по клиентам, он должен распределить документы оптимально по вместительности машин, для этого необходимо показывать ему суммы веса и обьем после каждого изменения выделеных позиций в DBGrid

считаю так

procedure TForm1.UpdateS();
var
i, j: Integer;
s: Integer;
AQ: TADOQuery;
TB :TBookmarkList;
begin

AQ := ADOQuery1;
TB := DBGrid1.SelectedRows;


if TB.Count>0 then
begin
s:= 0;

for i:=0 to TB.Count-1 do
begin
AQ. GotoBookmark (pointer(TB.Items ));
s := s + AQ.FieldByName('quantity').Value ;
end;

edit2.Text := inttostr(s);
end;
end;


при этом команда gotoBookmark заставляет дергать указатель, а это
блин отображается на гриде плюс, когда позиций туева хуча, процедура начинает тормозить.

Вопрос можно ли взять данные с грида по другому, например как со стринггрида Cells[5,i] ?
...
Рейтинг: 0 / 0
Как посчитать сумму нескольких выделеных в DBGrid позиций?
    #32338612
Случайный прохожий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос можно ли взять данные с грида по другому, например как со стринггрида Cells[5,i] ?

Нельзя, т.к. TDBGrid не является производным от TStringGrid, а свойство Cells только у TStringGrid.

gotoBookmark заставляет дергать указатель

Во время выполнения этой операции следует отключать DataSource от визуальных объектов (см. топик, который указал pkarklin).

когда позиций много, процедура начинает тормозить

такова суровая реальность.
...
Рейтинг: 0 / 0
Как посчитать сумму нескольких выделеных в DBGrid позиций?
    #32338787
RubinDm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> gotoBookmark заставляет дергать указатель

DBgrid.DataSource.DataSet.DisableControls;
{твой "дергающий" код}
DBgrid.DataSource.DataSet.EnableControls;
...
Рейтинг: 0 / 0
Как посчитать сумму нескольких выделеных в DBGrid позиций?
    #32339032
grigorii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал, понял, но проблема осталась
пересчет производится по событию OnKeyUp
и когда юзер подымает эту гадкую кнопку
//////////////////////////////////////////////////////////////////////////
procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var

p : pointer;
c : Currency;
i : integer;
CopyrDataSet: TDataSet;
CopyrSelectedRows: TBookmarkList;
begin

CopyrDataSet := DBGrid1.DataSource.DataSet;
CopyrSelectedRows := DBGrid1.SelectedRows ;

if CopyrSelectedRows.Count > 0 then
begin
DBgrid1.DataSource.DataSet.DisableControls;
p := pointer(DBGrid1.DataSource.DataSet.Bookmark);
for i := 0 to CopyrSelectedRows.Count - 1 do
begin
DBgrid1.DataSource.DataSet.DisableControls;
DBGrid1.DataSource.DataSet.GotoBookmark(pointer(DBGrid1.SelectedRows.Items ));
DBgrid1.DataSource.DataSet.EnableControls ;
c := c + DBGrid1.DataSource.DataSet.FieldByName('sum').Value;
end;
DBGrid1.DataSource.DataSet.GotoBookmark(p);
DBgrid1.DataSource.DataSet.EnableControls ;
end
else
begin
c := 0;
end;
end;
//////////////////////////////////////////////////////////////////////////
DBGrid уже не дергаясь считает суммы
и потом ставит текущюю позицию в середину
и оператор , по его словам ее теряет и долго исчет ее глазами
...
Рейтинг: 0 / 0
Как посчитать сумму нескольких выделеных в DBGrid позиций?
    #32339078
grigorii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может скопировать recordset из AdoQuerty и в нем попрыгать по записям дабы на трогать видимый указатель? Только как это сделать может подскажете
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как посчитать сумму нескольких выделеных в DBGrid позиций?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]