Аватар для JonniK
1 / 1 / 0
Регистрация: 26.09.2012
Сообщений: 61

Сравнение двух StringGrid-ов по определенным столбцам

13.03.2015, 15:19. Показов 1857. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Сейчас буду пробовать объяснить, что я хочу)

Значит так... есть у меня 2 excel'овских файлов, я их загружаю в 2 StringGrida.
Пользователь с помощью мышки выбирает по каким столбцам пойдет сравнение (поля попадают в CheckListBox).
Дальше мне надо сравнивать строки только по выбранным столбцам и если они полностью равны, то скопировать результат excel (ну, это уже так... для информации).

Что сделано
в отдельный массив я копирую номера столбцов, которые выбрал пользователь.
дальше сравниваю. не могу объяснить буковками, поэтому показываю)))
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  kol := CheckListBoxCompare.Items.Count;
  SetLength(Mass_Column,kol);
  flag := true;
 
// Тут я заполняю массив номерами столбцов
  for i := 0 to kol-1 do
  for j := 0 to StringGridF1.ColCount do
    begin
      if StringGridF1.Cells[j,0] = CheckListBoxCompare.Items[i] then
        Mass_Column[i] := j;
    end;
 
// здесь я сравниваю
  for j := 0 to StringGridF1.RowCount do
    begin
      for i := 0 to kol-1 do
        begin
        if StringGridF1.Cells[Mass_Column[i],j] = StringGridF2.Cells[Mass_Column[i],j] then
          RowPos := i
        else
         flag := false;
        end;
        if flag then
    StringGrid1.Cells[j,RowPos] := StringGridF1.Cells[j,RowPos];
  flag := true;
    end;
Попробую сформулировать вопрос)
как мне скопировать строки (равные StringGrid'ах)?
Куда уже пофиг, главное алгоритм понять.

Ух, вроде все))
ПыСы. Ногами не пинать, что не понятно спрашивать.

Добавлено через 43 минуты
Как говориться, хорошая мысля приходит опосля)
Вот нашла решение, как-то так

Delphi
1
2
3
4
5
6
7
8
9
10
11
  for j := 0 to StringGridF1.RowCount do
    begin
      for i := 0 to kol-1 do
        begin
          if StringGridF1.Cells[Mass_Column[i],j] = StringGridF2.Cells[Mass_Column[i],j]
            then StringGrid1.Cells[i,j-RowPos] := StringGridF1.Cells[Mass_Column[i],j]
          else flag := false;
        end;
      if flag = false then RowPos := RowPos+1;
      flag := true;
    end;
Добавлено через 16 минут
Ан нет... работает если номера строк вровень идут.
Если, например, первая строчка 1 СтринГрида = второй строчке 2 СтринГрида, не работает...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2015, 15:19
Ответы с готовыми решениями:

Сравнение строк по определенным столбцам
Здравствуйте, задачка тут у меня возникла..к сожалению забыл институтский курс помню там было и макросы писали..умом чувствую что не...

Сравнение двух таблиц, поиск совпадений по 3-м столбцам
Доброго времени суток! Есть задача - сравнить 2 таблицы (одна свежая, вторая за предыдущий день), найти совпадения по наименованию товара...

Сравнение двух StringGrid
Здравствуйте! На форме у меня присутствует 3 StringGrid, в первые два выполняется загрузка с файлов, по подобной схеме: TStringList...

18
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
13.03.2015, 19:33
непонятно

надо одну колонку выбрать в одном гриде и одну в другом?
в каком случае считать, что колонки равны?
0
 Аватар для JonniK
1 / 1 / 0
Регистрация: 26.09.2012
Сообщений: 61
16.03.2015, 14:44  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
непонятно
надо одну колонку выбрать в одном гриде и одну в другом?
в каком случае считать, что колонки равны?
Ох, так и знала))
Давайте сначала. Прям конкретную задачу рассказываю.

Мне по работе куча ЖКС, УК и тд. присылает начисления по квартплате. Но как все бывает у нас в России, на одну и туже квартиру разные компании присылают начисления, т.е. одна компания прислала - воду и содержание и ремонт, вторая - электричество, третья - газ и т.д.

Очень трудоемко их обрабатывать, т.к. приходится загружать в программу все файлы. Обезьянья работа.
Что я хочу. Сравнивать файлы по столбцам (город-улица-квартира-комната) и если есть совпадение - копировать определенную ячейку в общий файл. Мысля как это реализовать есть, но вот споткнулась.

Как мне кажется надо делать, я беру первую строку в первом гриде и ищу ее во втором. Если совпадение есть я эту первую строку копирую в отдельный грид. Но как это сделать?
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
16.03.2015, 15:04
т.е. базы данных еще не изобрели у вас?
работа представляется довольно обычной
1) в текстовом документе выделить информацию - Кому начислено, Кем начислено, Когда, За что, Сколько
2) все это импортировать в БД
3) выводить и обрабатывать информацию из БД любым способом
0
 Аватар для JonniK
1 / 1 / 0
Регистрация: 26.09.2012
Сообщений: 61
16.03.2015, 15:21  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
т.е. базы данных еще не изобрели у вас?
работа представляется довольно обычной
1) в текстовом документе выделить информацию - Кому начислено, Кем начислено, Когда, За что, Сколько
2) все это импортировать в БД
3) выводить и обрабатывать информацию из БД любым способом
я и загружаю эти файлы в базу данных. просто их дохрена, зачем мне мучаться загружать 25 файлов, если их можно собрать до 1. весь рабочий день уходит на загрузку.
Я хочу собирать один большой файл и его уже загружать.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
16.03.2015, 15:40
разницы между загрузкой 25*1 и 1*25 файлов в БД нет
все тормоза могут быть только в интерфейсе

давайте решать нормальную задачу, а не высосанную из пальца
надо разбираться на что уходит время в бизнес-процессе

покажите что есть сейчас, подскажем, как сделать лучше
0
 Аватар для JonniK
1 / 1 / 0
Регистрация: 26.09.2012
Сообщений: 61
16.03.2015, 16:00  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
разницы между загрузкой 25*1 и 1*25 файлов в БД нет
все тормоза могут быть только в интерфейсе
давайте решать нормальную задачу, а не высосанную из пальца
надо разбираться на что уходит время в бизнес-процессе
покажите что есть сейчас, подскажем, как сделать лучше
Вот говорила мне мама - учись с людьми разговаривать)
Значит так...
Есть компания №1 - которая присылает начисление на дом №1
Есть компания №2 - которая присылает начисление на дом №2
Есть компания №3 - которая присылает начисление на дом №3
Есть компания №4 - которая присылает начисление на дом №1, №2, №3.

Есть программа (областная, покупная) - в которую я эти начисления загружаю.
Загружаю как: делаю вручную связку по полям по которым идет поиск, меняю месяц начисления, указываю поля, которые будет залиты в базу. и так с каждым фалом. вручную укажи - вручную загрузи.

что я хочу. денег побольше и работы поменьше, но все таки)...
я хочу брать один файл - основной (его присылает расчетный центр, где есть все дома) и из других файлов заполнять пустые поля (т.е. дополнять основной файл недостающими начислениями - водой, отоплением и т.д.)
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
16.03.2015, 20:28
отлично! )
с этого стоило начать, теперь почти понятно
теперь можно по существу вопросы задавать :

1) компания X всегда присылает файл одинакового формата ?
2) нужны примеры файлов 1,2,3,4, пусть 2 строки с вымышленными данными

экспорт/импорт данных - всегда операция с ручной настройкой и доводкой, но можно действительно сильно сократить

дайте взглянуть, и решим, как поступить...
0
 Аватар для JonniK
1 / 1 / 0
Регистрация: 26.09.2012
Сообщений: 61
17.03.2015, 09:33  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
отлично! )
с этого стоило начать, теперь почти понятно
теперь можно по существу вопросы задавать :
1) компания X всегда присылает файл одинакового формата ?
2) нужны примеры файлов 1,2,3,4, пусть 2 строки с вымышленными данными
экспорт/импорт данных - всегда операция с ручной настройкой и доводкой, но можно действительно сильно сократить
дайте взглянуть, и решим, как поступить...
1) Да, все компании присылают файлы единого формата.
2) файл прикрепила.
Вложения
Тип файла: xls nach_02_2015_1.xls (27.0 Кб, 6 просмотров)
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
17.03.2015, 09:48
хорошо
тогда вообще непонятно
если просто все данные друг за другом в один файл скидать, ничего не меняя, как к этому отнесется программа ?
0
 Аватар для JonniK
1 / 1 / 0
Регистрация: 26.09.2012
Сообщений: 61
18.03.2015, 12:35  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
если просто все данные друг за другом в один файл скидать, ничего не меняя, как к этому отнесется программа ?
Если стоит ноль, программа загрузит ноль, не взирая на внесенные до этого данные.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
18.03.2015, 12:46
т.е. если строки полностью одинаковые кроме начислений, нужно начисления суммировать ?
0
 Аватар для JonniK
1 / 1 / 0
Регистрация: 26.09.2012
Сообщений: 61
18.03.2015, 14:48  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
т.е. если строки полностью одинаковые кроме начислений, нужно начисления суммировать ?
Да, да, да)))
только начисления не надо суммировать, т.к. не может разные компании подавать одинаковые начисления. если одна из ЖКУ уже подала, например, отопление, то расчетный цент - уже не подаст эти данные.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
18.03.2015, 15:26
так и получается, что именно суммировать
вы же говорите что если в файле будут строки для одного клиента
GAZ ELECTRICITY
0 100
100 0
то ваша купленная программа запишет только последнее, т.е.
100 0
а вот если все сложить, то будет
100 100
0
 Аватар для JonniK
1 / 1 / 0
Регистрация: 26.09.2012
Сообщений: 61
18.03.2015, 15:48  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
так и получается, что именно суммировать
вы же говорите что если в файле будут строки для одного клиента
GAZ ELECTRICITY
0 100
100 0
то ваша купленная программа запишет только последнее, т.е.
100 0
а вот если все сложить, то будет
100 100
а-а-а, т.е. вы предлагаете все собирать в один файл, а уже потом анализировать этот один файл?
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
18.03.2015, 15:57
вообще не анализировать, просто скормить программе
0
 Аватар для JonniK
1 / 1 / 0
Регистрация: 26.09.2012
Сообщений: 61
20.03.2015, 10:01  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
вообще не анализировать, просто скормить программе
Цитата Сообщение от krapotkin Посмотреть сообщение
GAZ ELECTRICITY
0 100
100 0
то ваша купленная программа запишет только последнее, т.е.
100 0
еще раз, на примере того который вы привели.
программа не складывает, она просто затирает прошлое значение.
т.е. последняя запись будет 100 0
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
20.03.2015, 11:54
Не по теме, но:
функции ВПР и СУММЕСЛИМН в Excel еще, наверное, не придумали...
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
20.03.2015, 13:41
сам сбор файлов в один Excel будет не очень
проще сначала программой прогнать, сделать итого, потом скормить это в ТУ САМУЮ программу...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.03.2015, 13:41
Помогаю со студенческими работами здесь

Сравнение двух StringGrid-ов
здравствуйте уважаемые форумчане,вот возникла такая проблемка со сравнением двух stringgread: по сути код должен сравнивать поелементно...

Сравнение двух ячеек в StringGrid
Доброго времени дня. Есть StringGrid1, в котором 4 столбца*10 строк(картотека). Он заполняется. Потом в Edit вводится фамилия. При...

Сравнение данных из двух StringGrid
Здравствуйте, имеется два StringGrid. Данные в StringGrid загружаются из двух разных excel файлов. Необходимо сравнить две таблицы и данные...

Сравнение данных из двух StringGrid
Добрый день, добавляю данные в StringGrid, подскажите как их сравнить ? Добавлено через 59 секунд var pl, tl,py,ty: TStringList; ...

Сравнение двух столбцов в разных StringGrid с разной размерностью
Добрый день. Подскажите пожалуйста, как реализовать сравнение текста в двух столбцах в разных стринггридах. Размерность разная...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru