powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Сравнение двух DS или DW
15 сообщений из 15, страница 1 из 1
Сравнение двух DS или DW
    #33024250
Астралопитек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PB 9.0
Имеются два DS или DW, закачанные примерно одинаковым содержимым. Например, снимки оглавлений одного и того же каталога после ряда изменений или два прайс-листа, один из которых создан на основании другого. Типы полей и структуры полностью совпадают. Ряд записей добавлен, ряд удалён, кое-какие поля изменены.
Существует ли простой и изящный , в несколько строк и безо всяких циклов получить их разницу (типа как в Нортоне команда "Сравнить каталоги")?
Заранее благодарю за нетривиальные советы.
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33025232
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может решить с помошью языка SQL?
таблицы tbl1 (id1, str1, num1), tbl2 (id2, str2, num2)
Код: plaintext
1.
2.
 select id1, str1, num1
 from tbl1
 where str1+cast(num1 as varchar) not in (select str2+cast(num2 as varchar) from tbl2)

(сделано в уме, не проверено)
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33025431
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savosin_sergeyможет решить с помошью языка SQL?
таблицы tbl1 (id1, str1, num1), tbl2 (id2, str2, num2)
Код: plaintext
1.
2.
 select id1, str1, num1
 from tbl1
 where str1+cast(num1 as varchar) not in (select str2+cast(num2 as varchar) from tbl2)

(сделано в уме, не проверено)
если селектом то уже лучше юзать MINUS или INTERSECT
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33026165
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Астралопитек давал повод заподозрить его в использовании Oracle?
Или у нас теперь негласное правило - если не указан город подразумевается Москва, если не указана DBMS подразумевается Oracle?
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33026617
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
INTERSECT есть и в ASA 9
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33026620
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нетривиальный совет:
сбрасывать содержимое DW в файлы и сравнивать их хоть в ворде, хоть с помощью fc
Вот например как ворд красиво сравнивает
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33026628
Астралопитек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, я думал, что у нас если не указана DBMS, то подразумевается SYBASE и конкретно ASA . Указываю: ASA 8.
К остальным:
Спасибо, но лично я считал в данном случае использование SQL или внешних файлов именно тривиальным решением. Так же как ХП.
Очень интересно было бы узнать, есть ли решение на стороне клиента и именно с использованием каких-либо функций про DS, DW, буфера и пр.
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33026630
Астралопитек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку:
Это интересно потому, что на самом деле эти DW не простые таблицы, а доступные пользователю. В частности он может там фильтровать, а тажке задавать (на доступном ему пользовательском уровне) некоторое условие WHERE (например, устанавливая галки на некоторых строках; а потом указывая, среди кого сравнивать: среди отмеченных или среди НЕотмеченных. И т.п.)
Буду очень благодарен за рекомендации.
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33032562
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Загляни сюда (JFC.rar) , правда данный объект я использовал для сравнения ResultSet'ов DW, но может какие мысли подойдут.
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33033554
Астралопитек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets
Спасибо. Это не совсем то -- всё-таки используются внешние файлы -- но я тоже не увидел, как без них обойтись.
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33033664
gz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gz
Гость
Астралопитек Вдогонку:
Это интересно потому, что на самом деле эти DW не простые таблицы, а доступные пользователю. В частности он может там фильтровать, а тажке задавать (на доступном ему пользовательском уровне) некоторое условие WHERE (например, устанавливая галки на некоторых строках; а потом указывая, среди кого сравнивать: среди отмеченных или среди НЕотмеченных. И т.п.)
Буду очень благодарен за рекомендации.
Самый простой путь - использовать "галки" и всю прочую "муть" для генерации SQL с операторами UNION-MINUS-INTERSECT (выше уже рекомендовали). И не надо ничего сравнивать
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33033857
rhs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rhs
Гость
А что если так.
Создается третье ds_3 аналогичное по полям двум сравниваемым.
В него при помощи rowscopy заказчивается содержимое двух исходных ds.
Далее ds_3.sort(), ds_3.groupcalc()
Теперь о том как должен быть устроен результирующий ds_3.
- в нем должен быть определен group по ВСЕМ сравниваемым полям.
- сортировка по ВСЕМ сравниваемым полям.
- detail height= 0
- detail autosizeheight= true
- в отображаемых столбцах height= if( count( #1 for group 1)= 1, 64, 0)
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33034167
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2:Астралопитек
Объект который я прислал сравнивает два позиционированных массива... это я к тому что простого алгоритма сравнения скорее всего не получится, возникнет желание посмотреть а в какой из колонок в этой строке изменились данные и пр.

А если задача стоит как в нортоне то это два цикла по 1dw и 2dw с учетом выделения и с FIND() в 2dw и 1dw соответственно. Построить выражение FIND можно автоматически на основании структуры DW. Если не нашли в другом DW аналогичную строку, то считаем ее новой и подсвечиваем. Если строка изменилась то она будет подсвеченна в обоих DW.
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33044343
Астралопитек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gz Астралопитек Вдогонку:
Это интересно потому, что на самом деле эти DW не простые таблицы, а доступные пользователю. В частности он может там фильтровать, а тажке задавать (на доступном ему пользовательском уровне) некоторое условие WHERE (например, устанавливая галки на некоторых строках; а потом указывая, среди кого сравнивать: среди отмеченных или среди НЕотмеченных. И т.п.)
Буду очень благодарен за рекомендации.
Самый простой путь - использовать "галки" и всю прочую "муть" для генерации SQL с операторами UNION-MINUS-INTERSECT (выше уже рекомендовали). И не надо ничего сравнивать
Спасибо; но тогда начинается геморрой с пользователями. Хотелось бы эти галки не заносить обратно в базу, а использовать только на стороне клиента.
...
Рейтинг: 0 / 0
Сравнение двух DS или DW
    #33044344
Астралопитек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets 2:Астралопитек
Объект который я прислал сравнивает два позиционированных массива... это я к тому что простого алгоритма сравнения скорее всего не получится, возникнет желание посмотреть а в какой из колонок в этой строке изменились данные и пр.

А если задача стоит как в нортоне то это два цикла по 1dw и 2dw с учетом выделения и с FIND() в 2dw и 1dw соответственно. Построить выражение FIND можно автоматически на основании структуры DW. Если не нашли в другом DW аналогичную строку, то считаем ее новой и подсвечиваем. Если строка изменилась то она будет подсвеченна в обоих DW.
Ещё раз спасибо. Это очень близко к тому. что нужно.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Сравнение двух DS или DW
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]