Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > DBGrid


Автор: BloodNerd 17.11.2005, 00:00
Как из DBGrid вытащить значения нужных мне ячеек (выделеных). Существует база ADO, в которой есть наименование товара и стоимость. Как и куда порекомендуете мне перетаскивать наименование и стоимость и как подсчитать всю стоимость того что выбрано ? Спасибо.

Автор: Grig 17.11.2005, 04:12
Я в подобных ситуациях создаю дополнительное логическое поле в таблице(check), потом на http://ehlib.com/RUS/ создаю колонку с checkbox-ами, а потом пишу следующее:
Код

var
s:real;
begin
adotable.first;
while not(adotable.eof) do
begin
if adotable['check'] = 1 then
s:=s+adotable.Fieldbyname('stoimost').asFloat;
adotable.Next;
end;
showmessage(FloatToStr(s));
end;


Метод наверное извращенный, погоди, может чего получше присоветуют.

Автор: bas 17.11.2005, 13:22
TBookmarkList, SelectedField,SelectedRow

Автор: Guest 17.11.2005, 23:10
Спасибо, буду пробовать.

Автор: BloodNerd 17.11.2005, 23:19
Предыдущее сообщение моё. Grig а исходник не можешь подкинуть...время пожимает как тески. На всё 2 дня, а ещё дохрена чё делать. bas с TBookmarkList Я не знаком, а с SelectedField и SelectedRow что-то не получаеться сообразить код; если б ты подсказал как ими грамотно воспользоваться было бы здорово. И на том спасибо ;)

Автор: offline 18.11.2005, 00:07
Регистрируйся и будет тебе счастье smile а по поводу суммы выделенного держи


Код

procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: Integer;
begin
 j:=0;
 if DBGrid1.SelectedRows.Count>0
  then
   with DBGrid1.DataSource.DataSet do
    for i:=0 to DBGrid1.SelectedRows.Count-1 do begin
     GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
     j := j + Fields[0].AsInteger;
     end;
 Label1.Caption := IntToStr(j);
end;


где Fields[0] тот столбец по которому нужно суммировать
smile


Автор: BloodNerd 19.11.2005, 23:21
Пока у меня не получаеться - фигня с типами данных...selectedrows имеет тип tbookmarks, присваиваю её переменной такогоже типа, а дальше ??? как присвоить значение другому DBgrid'у ?

Автор: offline 20.11.2005, 12:34
Что, пример не работает? Странно. Или ты что-то другое делаешь?

Автор: BloodNerd 24.11.2005, 23:18
Спасибо всё работает.

Автор: Value 13.12.2005, 00:26
А как передать запись выделенной строки из одного грида в другой?

Автор: Dron84 13.12.2005, 00:44
Value
ты данные передаёшь не в грид а в таблицу и опять таки через поля...
Код

DataMod.TProt.insert;
DataMod.TProt.Fields.Fields[1].AsString := DataMod.TPer.Fields.Fields[1].AsString;
DataMod.TProt.Fields.Fields[2].AsString := DataMod.TPer.Fields.Fields[2].AsString;
DataMod.TProt.Fields.Fields[4].AsString := DataMod.TPer.Fields.Fields[3].AsString;
DataMod.TProt.Fields.Fields[5].AsString := DataMod.TPer.Fields.Fields[4].AsString;
DataMod.TProt.Fields.Fields[6].AsString := DataMod.TPer.Fields.Fields[5].AsString;
DataMod.TProt.Post;

Автор: Value 13.12.2005, 00:57
Вообщем ввёл я
datamodule2.VeisleTable.Insert;
datamodule2.NVTable.Fields.Fields[1].AsString:=datamodule2.VeisleTable.Fields.Fields[1].asstring;
datamodule2.VeisleTable.Post;
а мне назад "NVTable : dataset not in edit or insert mode"

Автор: offline 13.12.2005, 01:21
Правила форума: http://forum.vingrad.ru/index.php?s=&act=SR&f=27

>Value
Создай новую тему

з.ы.
Цитата
datamodule2.VeisleTable.Insert;
datamodule2.NVTable.Fields.Fields[1].AsString:=datamodule2.VeisleTable.Fields.Fields[1].asstring;
datamodule2.VeisleTable.Post;
а мне назад "NVTable : dataset not in edit or insert mode"


будь внимательнее, не NVTable а VeisleTable
datamodule2.VeisleTable.Fields.Fields[1].AsString:= ...

Автор: Dron84 13.12.2005, 15:18
Value
Внимательностьь, главное свойство программиста!!! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)