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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2016, 11:40   #1
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию Сравнение 2х DBGrid'ов и StringGrid'а

Всем доброго времени суток!

Суть проблемы: имеется два DBGrid'а, первый со столбцами Login и ФИО, а второй только со столбцом Login. И третья таблица - StringGrid, тоже со столбцами Login и ФИО. Необходимо сравнить данные из столбцов Login между всеми тремя таблицами и в следующие три StringGrid'a вывести Login'ы среди которых исключены те, которые имеются в каждой из трех верхних таблиц. Т.е. если логин есть во всех трех - его не выводить далее.
nactyx вне форума Ответить с цитированием
Старый 20.01.2016, 11:46   #2
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

сравниваете данные из таблицы БД/запроса к тоторой подключен первый DBGrid с данными из таблицы БД/запроса второго DBGrid и данными из StringGrid в чем проблема то?? что не получается?
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 21.01.2016, 10:01   #3
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Это все конечно чудесно и очевидно, спасибо.

Проблемы две: из-за того, что это не три стрингрида или например три дбгрида, а разные: 2 таких и один другой.
И вторая проблема в том, что количество строк не одинаковое! Поэтому я и в ступоре.
nactyx вне форума Ответить с цитированием
Старый 21.01.2016, 10:28   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Проблемы две: из-за того, что это не три стрингрида
т.е. код для ДВУХ STRINGGRID вы написать можете (и значит можете ЭТОТ код исправить и адаптировать для себя)
Код:
for i:=1 to StringGrid2.rowcount-1 do begin
  for j:=1 to StringGrid1.Rowcount-1 do begin
    if StringGrid2.cell[1,i] =StringGrid1.Cell[1,j] then begin
        .........
    end
    else begin
        ..........
    end;
  end;
end;
А ВОТ тот же АЛГОРИТМ для разных (DBGrid + StringGrid )
Код:
DBgrid1.DataSource.DataSet.first;
while not DBGrid.Datasource.DataSet.EOF do begin
  for j:=1 to StringGrid1.rowcount-1 do begin
    if DBGrid1.DataSource.DataSet.FieldByName('fio').AsString =StringGrid1.Cell[1, j] then
            ............
    end
    else begin
            ............
    end;
  end;
  DBGrid1.DataSource.DataSet.Next;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 21.01.2016, 11:06   #5
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

То, что нужно, спасибо большое!
А два DBGRID'a как сравнивать правильно?

Код:
DBgrid1.DataSource.DataSet.first;
while not DBGrid1.Datasource.DataSet.EOF do begin
  DBgrid2.DataSource.DataSet.first;
  while not DBGrid2.Datasource.DataSet.EOF do begin
    if DBGrid1.DataSource.DataSet.FieldByName('fio').AsString = DBGrid2.DataSource.DataSet.FieldByName('fio').AsString then
            ............
    end
    else begin
            ............
    end;
    DBGrid2.DataSource.DataSet.Next;
  end;
  DBGrid1.DataSource.DataSet.Next;
end;
Так правильно будет?

Последний раз редактировалось nactyx; 21.01.2016 в 11:09.
nactyx вне форума Ответить с цитированием
Старый 21.01.2016, 11:39   #6
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Фигня получается. Мне нужно чтобы сперва один элемент dbgrid сравнили со всеми из stringgrid, если не нашли совпадений - запомнили, иначе - другие действия, не суть.
А в этом случае получается, из-за того, что разное количество и порядок записей он может хоть все вывести, хотя повторения есть, но на других позициях.
nactyx вне форума Ответить с цитированием
Старый 21.01.2016, 14:00   #7
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Со всеми вопросами разобрался. Осталось реализовать удаление дубликатов из итогового стрингрида.

Последний раз редактировалось nactyx; 21.01.2016 в 14:04.
nactyx вне форума Ответить с цитированием
Старый 21.01.2016, 14:02   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
т.е. код для ДВУХ STRINGGRID вы написать можете (и значит можете ЭТОТ код исправить и адаптировать для себя)
нет?
Код:
for i:=1 to StringGrid2.rowcount-1 do begin 
  s:=StringGrid2.cell[1,i];
  r:=false;
  for j:=1 to StringGrid1.rowcount-1 do begin
    if StringGrid1.cell[1,i] =s then r:=true;
    if r then break;
  end;
  if not r then 
      .....
  else 
     ....
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение колонок StringGrid по строкам royun Помощь студентам 25 29.01.2014 09:23
Сравнение через DBGrid Kurd57 БД в Delphi 2 27.05.2012 17:32
StringGrid сравнение Aleksandr69 Общие вопросы Delphi 22 29.12.2010 05:11
Сравнение striggrid c dbgrid grafgrial Общие вопросы Delphi 13 11.10.2010 12:25
Сравнение edit and dbgrid grafgrial Общие вопросы Delphi 9 09.10.2010 16:11