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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2013, 21:24   #1
saddy
Новичок
Джуниор
 
Регистрация: 31.10.2013
Сообщений: 2
Восклицание Как обьединить 2 таблици SG?

Есть 2 таблицы Stringgrid.
В первой колонки: цена, артикул.
Во второй колонкци: название артикул.
Как их обьединить в одну общую таблицу, по артикулу?
То есть, артикулы в 2х таблицах у всех одинаковые, но в разном порядке.
К этим артикулам в одной таблицы привязаны цены, в другом названия.
Нужно сделать таблицу, с 3 колонками: название, артикул, цена.


Помогите с алгоритмом, никак не могу его продумать.
saddy вне форума Ответить с цитированием
Старый 31.10.2013, 22:38   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

вар 1. берем артикул из одной таблицы , ищем такой же в другой и делаем третью таблицу.
вар 2. берем строку из первой, находим такой же во второй, добавляем в третью.

это алгоритм
Цитата:
Помогите с алгоритмом, никак не могу его продумать.
будьте точны при формулировке вопроса.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 31.10.2013 в 22:43.
evg_m вне форума Ответить с цитированием
Старый 01.11.2013, 00:02   #3
saddy
Новичок
Джуниор
 
Регистрация: 31.10.2013
Сообщений: 2
По умолчанию

Извиняюсь, помогите с программой значит
Сам пытаюсь, пока не выходит:

Вот что вышло:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;

begin
for i:=0 to StringGrid1.RowCount-1 do
  begin
        for j:=0 to StringGrid2.RowCount-1 do
           if StringGrid1.Cells[1,i] = StringGrid2.Cells[1,j]   then
           begin
           StringGrid3.RowCount:= StringGrid3.RowCount+1;
           StringGrid3.Cells[0,i]:= StringGrid1.Cells[0,i];
           StringGrid3.Cells[1,i]:= StringGrid1.Cells[1,i];
           StringGrid3.Cells[2,i]:= StringGrid2.Cells[0,j];
           end


  end;

end;

end.
Все вроде работает, но не уверен что мой пример кода - грамотный.
Прокоментируйте плиз, мб есть способ реализации лучше

Последний раз редактировалось Stilet; 01.11.2013 в 09:28.
saddy вне форума Ответить с цитированием
Старый 01.11.2013, 02:12   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Обычно данные хранят не в самом стрингриде, а например в массиве объектов, а его выводят в стринггрид или куда надо (и наоборот обновление данных объектов при редактировании пользователем стринггрида, если он редактируемый). Separation of concerns, в общем.

Тогда и вопросов про объединение стринггридов не возникло бы.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 01.11.2013 в 02:14.
Alex11223 вне форума Ответить с цитированием
Старый 01.11.2013, 02:56   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Есть 2 таблицы Stringgrid.
В первой колонки: цена, артикул. - Таблица А
Во второй колонкци: название артикул. - Таблица Б
1. Сравниваете столбцы А и Б. Находите уникальные в Б. В порядке очереди переносите их в начало таблицы А. В вашем случае, столбец "Название" встанет в А перед ценой.
2. Сортируете таблицы по ключевому полю, в вашем случае это артикул.
Ключевое - то, что есть в обоих StringGrid'ах, если их 2, то делаете выбор.
3. Перемещаете уникальные столбцы.
4. Сравниваете оставшиеся столбцы: берете артикул, ищите в А, если есть, сравниваете цены, если они одинаковы, оставляете в А как есть, если разные - делаете что-то. Если в таблице А нет артикуда из Б, то переносите туда данные.

Вроде все.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как занести значение переменной в поле таблици БД? Женя32 БД в Delphi 33 26.10.2013 20:40
как витащить с таблици дание? Deckvv C/C++ Базы данных 0 25.09.2013 23:54
Как вывести записи(строк) таблици базы данных mdb в memo, в цикле for? Женя32 БД в Delphi 13 13.01.2013 22:41
Как сосчитать общую сумму, взяв данные из одной таблици и вывести сумм в др? Ol'ga БД в Delphi 3 10.06.2012 23:42
Как обьединить кучу однобразного кода собый Button Click OST_K Помощь студентам 3 25.05.2010 19:16