Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2008, 09:50   #1
Asselya
Новичок
Джуниор
 
Регистрация: 21.11.2008
Сообщений: 2
По умолчанию Cоздать третью таблицу и занести в неё результаты

Дельфи изучаю недавно Через пару дней нужно сдать отчет по производственно-технологической практике, а у меня пока не хватает навыков, чтобы решить задачу :
Даны 2 таблицы, абсолютно одинаковые по структуре - 4 столбца с такими заголовками "Номер №", "Наименование материала", "Единица измерения", "Количество". Если запись в столбце "Наименование материала" повторяется в обеих таблицах, то тогда "Количество", соответствующее этому материалу суммируется. При этом создается третья таблица с точно такой же структурой и результаты заносятся в нее уже под другими "Номерами№". А те записи, что не повторяются в двух таблицах, просто заносятся в третью в исходном виде.
Извините, за размашистость вопроса!!! Вот до чего я додумалась:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,a,b,k,l:integer;
   m,n:real;
   MatS,EdS,KolSK,MatU,EdU,KolUC:Array [0..50]of string;
begin
 for j:=0 to StringGrid1.RowCount do
 for i:=1 to 3 do
     begin
         MatS[j]:=StringGrid1.Cells[i,j];
         EdS[j]:=StringGrid1.Cells[i,j];
         TRY
         KolSK[j]:=StringGrid1.Cells[i,j];
         except
         on Exception:EConvertError do
           begin
                 ShowMessage('Количество материала ' +
                        'нужно указывать цифрами ' +#13+
                        'Используйте запятую, при записи дробных чисел.');
                 exit;
           end;
         end;
     end;
 for b:=0 to StringGrid2.RowCount do
 for a:=1 to 3 do
     begin
         MatU[b]:=StringGrid2.Cells[a,b];
         EdU[b]:=StringGrid2.Cells[a,b];
         TRY
         KolUC[b]:=StringGrid2.Cells[a,b];
         except
         on Exception:EConvertError do
           begin
                ShowMessage('Количество материала ' +
                        'нужно указывать цифрами ' +#13+
                        'Используйте запятую, при записи дробных чисел.');
                 exit;
            end;
          end;
     end;
 k:=0;
 l:=1;
 for j:=0 to StringGrid1.RowCount do
 for b:=0 to StringGrid2.RowCount do
         if MatS[j]=MatU[b]
           then begin
                     StringGrid3.Cells[l,k]:=MatU[b];
                     l:=l+1;
                     StringGrid3.Cells[l,k]:=EdU[b];
                     l:=l+1;
                     TRY
                     m:=StrToFloat(KolUC[b]);
                     n:=StrToFloat(KolSK[j]);
                     StringGrid3.Cells[l,k]:=FloatToStrF(n+m,ffgeneral, 3,1);
                     except
                     on Exception:EConvertError do
                     begin
                        ShowMessage('Количество материала ' +
                        'нужно указывать цифрами ' +#13+
                        'Используйте запятую, при записи дробных чисел.');
                        exit;
                     end;
                     end;
                     l:=1;
                     k:=k+1;
                end
           else begin
                     StringGrid3.Cells[l,k]:=MatS[j];
                     l:=l+1;
                     StringGrid3.Cells[l,k]:=EdS[j];
                     l:=l+1;
                     StringGrid3.Cells[l,k]:=KolSK[j];
                     l:=1;
                     StringGrid3.Cells[l,k+1]:=MatU[b];
                     l:=l+1;
                     StringGrid3.Cells[l,k+1]:=EdU[b];
                     l:=l+1;
                     StringGrid3.Cells[l,k+1]:=KolUC[b];
                     k:=k+1;
                     l:=1;
                 end;
end;
Asselya вне форума Ответить с цитированием
Старый 21.11.2008, 10:09   #2
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Asselya - гланый вопрос: в чем созданы таблицы. И почему Вы пользуетесь StringGrid1? Чем Вам ДБГрид неугодил?
ЗЫ: Вам раздел нужен был "БД в Delphi"

Последний раз редактировалось фЁдОр; 21.11.2008 в 10:11.
фЁдОр вне форума Ответить с цитированием
Старый 21.11.2008, 11:13   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Чем Вам ДБГрид неугодил?
Неправильно ты, дядя Федор, вопросик поставил. Не про ДБГрид а Базу нужно говорить.
Asselya, эта кие задачи луче всего решать применяя базы данных. Там запросину накатал и получил результ.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2008, 14:49   #4
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Я могу ошибаться (и скорее всего, что то путаю). Но использование БД вынуждает пользователей, устанавливать сервер используемой БД (разумеется если данные храняться на машине пользовотеля).
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 21.11.2008, 15:19   #5
Asselya
Новичок
Джуниор
 
Регистрация: 21.11.2008
Сообщений: 2
По умолчанию

Цитата:
Странная тенденция наблюдается в разделе форума "Помощь студентам" примерно 50-60% это тупо ВУЗовские заданния в их первоначальном виде без всяких своих наработак, без конкретных вопросов.
Знаете, вообще-то это только мааааеленькая часть большой задачи на тему "Сводная ведомость потребности в материалах по строительной фирме". Так что не делайте скоропалительных выводов
Asselya вне форума Ответить с цитированием
Старый 21.11.2008, 17:02   #6
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Цитата:
Знаете, вообще-то это только мааааеленькая часть большой задачи на тему "Сводная ведомость потребности в материалах по строительной фирме". Так что не делайте скоропалительных выводов
Да я и не делал, т.к. это есть моя подпись ^_^
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировать результаты вычислений Jana Microsoft Office Excel 2 03.11.2008 08:36
если в 1 ячейку поставить х то в третью запишеться значение второй Medyankin Microsoft Office Excel 7 29.07.2008 14:16
Как занести время с компонента DateTimePicker Tanuska___:) Компоненты Delphi 5 14.05.2008 14:38
из dbf-формата занести данные в Excel Luganchanochka Microsoft Office Excel 2 05.04.2008 21:40
как запустить програму при перетаскивание на неё файла SeRhy Общие вопросы Delphi 3 09.01.2008 23:12