![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Есть таблица sg (StringGrid1) на форме Form1 с данными о покупателях и тд. Во втором столбце название товара, в третьем количество.
На форме Form2 таблица sg1 (StringGrid1) с данными о цене товаров. Нужно посчитать для каждого покупателя (каждой строки таблицы на форме1) стоимость покупки, т.е. если покупатель 1 купил 3 стола то в этой же строке в пятом столбце должна отобразиться стоимость его покупки ( в excel это реализуется через ВПР, как реализовать в Delphi не знаю) |
#2
|
||||
|
||||
![]() Картинке с сайбера кроме как там, у них, в других местах не читаются
Код:
procedure TForm1.FormCreate(Sender: TObject); var s: string; begin s:= #13#10; with StringGrid1 do begin ColCount:= 4; RowCount:= 9; Rows[0].Text:= Concat('ФИО' ,s,'Название',s,'Кол-во',s,'Всего:'); Rows[1].Text:= Concat('Иванов И.П.' ,s,'Стул' ,s,'6' ); Rows[2].Text:= Concat('Казнулевич Н.Д.' ,s,'Стол' ,s,'2' ); Rows[3].Text:= Concat('Гаскаркян И.Л.' ,s,'Патефон' ,s,'1' ); Rows[4].Text:= Concat('Самарин В.Ю.' ,s,'Гардероб',s,'3' ); Rows[5].Text:= Concat('Карменко И.Ф.' ,s,'Табурет' ,s,'12' ); Rows[6].Text:= Concat('Лазюлькина.В.В.' ,s,'Диван' ,s,'7' ); Rows[7].Text:= Concat('Пышечкина К.К.' ,s,'Этажерка',s,'1' ); Rows[8].Text:= Concat('Задунайский О.Б.',s,'Стол' ,s,'8' ); end; with StringGrid2 do begin ColCount:= 2; RowCount:= 9; Rows[0].Text:= 'Название'+s+'Цена'; Rows[1].Text:= 'Стул' +s+'3200'; Rows[2].Text:= 'Стол' +s+'7500'; Rows[3].Text:= 'Патефон' +s+'100000'; Rows[4].Text:= 'Гардероб'+s+'22800'; Rows[5].Text:= 'Табурет' +s+'2250'; Rows[6].Text:= 'Диван' +s+'70357'; Rows[7].Text:= 'Этажерка'+s+'1000'; Rows[8].Text:= 'Тумбочка'+s+'8735'; end; end; procedure TForm1.Button1Click(Sender: TObject); var i,j: integer; begin for i := 1 to StringGrid1.RowCount-1 do for j := 1 to StringGrid2.RowCount-1 do if StringGrid1.Cells[1, i] = StringGrid2.Cells[0,j] then begin StringGrid1.Cells[3, i]:= FloatToStr(StrToFloat(StringGrid1.Cells[2,i]) * StrToFloat(StringGrid2.Cells[1,j])); break; end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
![]() а если "if StringGrid1.Cells[1, i] = StringGrid2.Cells[0,j] then" не равно
что писать после "else"? |
#4
|
||||
|
||||
![]() Ничего, поскольку .Cells[1, i] <> .Cells[0,j] при конечном j = .RowCount-1
значит что данный клиент купил что-то, чего нет в списке товаров и подсчитывать нечего т.к. у этого нету цены Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
![]() Alegun, спасибо за помощь) только у меня не работает ничего... дело в том, что данные в таблицы я загружаю из excel. это как то влияет на расчеты?
если полностью писать код как у вас, то все считает. а если я загружаю данные из excel, то ничего не происходит ![]() |
#6
|
||||
|
||||
![]() Тогда проще сделать - покажите пжлст, экзелевскую табличку, какие там данные и бум поглядеть, мож по-другому есть решение
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |