Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как посчитать сумму нескольких выделеных в DBGrid позиций? / 9 сообщений из 9, страница 1 из 1
28.11.2003, 11:55
    #32337594
grigorii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать сумму нескольких выделеных в DBGrid позиций?
Как посчитать сумму нескольких выделеных в DBGrid позиций?
использую ado.
...
Рейтинг: 0 / 0
28.11.2003, 11:59
    #32337597
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать сумму нескольких выделеных в DBGrid позиций?
/topic/61521
...
Рейтинг: 0 / 0
28.11.2003, 13:15
    #32337716
grigorii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать сумму нескольких выделеных в DBGrid позиций?
очень смешно!
...
Рейтинг: 0 / 0
29.11.2003, 22:38
    #32338551
Lt
Lt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать сумму нескольких выделеных в DBGrid позиций?
Можно просто когда выделяешь(кстати как это происходит) просто складывать текущее выделенное значение с буфером = сумма
...
Рейтинг: 0 / 0
30.11.2003, 07:24
    #32338608
grigorii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать сумму нескольких выделеных в DBGrid позиций?
Транспортный оператор выбирает документы из перечня для развоза по клиентам, он должен распределить документы оптимально по вместительности машин, для этого необходимо показывать ему суммы веса и обьем после каждого изменения выделеных позиций в 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
30.11.2003, 09:04
    #32338612
Случайный прохожий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать сумму нескольких выделеных в DBGrid позиций?
Вопрос можно ли взять данные с грида по другому, например как со стринггрида Cells[5,i] ?

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

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

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

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

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

DBgrid.DataSource.DataSet.DisableControls;
{твой "дергающий" код}
DBgrid.DataSource.DataSet.EnableControls;
...
Рейтинг: 0 / 0
01.12.2003, 10:10
    #32339032
grigorii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать сумму нескольких выделеных в DBGrid позиций?
Попробовал, понял, но проблема осталась
пересчет производится по событию 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
01.12.2003, 10:37
    #32339078
grigorii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посчитать сумму нескольких выделеных в DBGrid позиций?
может скопировать recordset из AdoQuerty и в нем попрыгать по записям дабы на трогать видимый указатель? Только как это сделать может подскажете
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как посчитать сумму нескольких выделеных в DBGrid позиций? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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