powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Убрать дубликаты в запросе из результата функции)))
25 сообщений из 30, страница 1 из 2
Убрать дубликаты в запросе из результата функции)))
    #39312666
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день!

Нашел в инете функцию:

Public Function UnionStr(Optional id, Optional Fam)
Static IDOld, FamUnion
If IsMissing(id) Then
IDOld = Empty
Exit Function
End If
If IDOld <> id Then
IDOld = id
FamUnion = Null
End If
FamUnion = (FamUnion + ", ") & Fam
UnionStr = FamUnion
End Function

она данные из столбца "загоняет" в строку через запятую. данные: тип Дата
но в этой строке встречаются дубликаты.

эта функция работает в достаточно запутанном) запросе:

SELECT
ПаспортКачестваДизайн.КодПаспорта, ПаспортКачестваДизайн.Номер, ПаспортКачестваДизайн.МаркаОболочки, ПаспортКачестваДизайн.КолвоОтгрузки, Оболочка.Диаметр, Оболочка.Цвет, Дизайны.Дизайн, ПаспортКачестваДизайн.КолКоробов, ПаспортКачестваДизайн.КолРулонов, ЗаявкиНаПечать.КодЗаявкиНаПечать, Цвета.Текст_РУС, Цвета.Текст_ПОЛ, Цвета.Текст_ЛИТ, Цвета.Текст_АНГ, Клиенты.Клиент, Дизайны.КодДизайна,
Last(UnionStr([ЗаявкиНаПечать]![КодЗаявкиНаПечать],[Рулоны]![Дата])) AS Data

FROM (Цвета INNER JOIN Оболочка ON (Цвета.Цвет = Оболочка.Цвет) AND (Цвета.Цвет = Оболочка.Цвет)) INNER JOIN ((((Дизайны INNER JOIN Клиенты ON Дизайны.КодКлиента = Клиенты.КодКлиента) INNER JOIN ЗаявкиНаПечать ON Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна) INNER JOIN ПаспортКачестваДизайн ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПаспортКачестваДизайн.КодЗаявкиНаПечать) INNER JOIN (ПечатьДизайнов INNER JOIN Рулоны ON ПечатьДизайнов.КодПечати = Рулоны.КодПечати) ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПечатьДизайнов.КодЗаявкиНаПечать) ON Оболочка.КодОболочки = ЗаявкиНаПечать.КодОболочки

GROUP BY ПаспортКачестваДизайн.КодПаспорта, ПаспортКачестваДизайн.Номер, ПаспортКачестваДизайн.МаркаОболочки, ПаспортКачестваДизайн.КолвоОтгрузки, Оболочка.Диаметр, Оболочка.Цвет, Дизайны.Дизайн, ПаспортКачестваДизайн.КолКоробов, ПаспортКачестваДизайн.КолРулонов, ЗаявкиНаПечать.КодЗаявкиНаПечать, Цвета.Текст_РУС, Цвета.Текст_ПОЛ, Цвета.Текст_ЛИТ, Цвета.Текст_АНГ, Клиенты.Клиент, Дизайны.КодДизайна

ORDER BY ПаспортКачестваДизайн.Номер;

фрагмент результата запроса на фото.

может подскажите как их убрать?
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312667
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Убрать дубликаты дат))
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312671
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не убрать, а не "загонять"
Код: vbnet
1.
2.
3.
If InStr(FamUnion, Fam) = 0 Then
  FamUnion = (FamUnion + ", ") & Fam
End If

.
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312681
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Public Function UnionStr(Optional id, Optional Fam)
Static IDOld, FamUnion
If IsMissing(id) Then
IDOld = Empty
Exit Function
End If
If IDOld <> id Then
IDOld = id
FamUnion = Null
End If

If InStr(FamUnion, Fam) = 0 Then
FamUnion = (FamUnion + ", ") & Fam
End If

UnionStr = FamUnion
End Function

Правильно разместил?
если да, то вообще ни какой даты не отображает(
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312693
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taranoff,

А, не то, простите.
Ведь там FamUnion = Null каждый раз.
Не посмотрела внимательно, решила, что полная строка формируется в UnionStr.
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312701
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taranoff,

Вы не могли бы оформить запрос и функцию тегами,
а то очень неудобно разбираться.
Пункт SRC, подпункты VBA или T-SQL.
Предварительно выделить нужный фрагмент.
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312708
Так попробуйте:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Function UnionStr(Optional id, Optional Fam)
Static IDOld, FamUnion
 If IsMissing(id) Then
   IDOld = Empty
   Exit Function
 End If
 If IDOld <> id Then
   IDOld = id: FamUnion = Fam
 ElseIf InStr(1, FamUnion, Fam) = 0 Then
   FamUnion = FamUnion + ", " & Fam
 End If
   UnionStr = FamUnion
End Function
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312724
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelletaranoff,

Вы не могли бы оформить запрос и функцию тегами,
а то очень неудобно разбираться.
Пункт SRC, подпункты VBA или T-SQL.
Предварительно выделить нужный фрагмент.

к сожалению так досконально этим вопросом не владею(
что такое: Пункт SRC, подпункты VBA или T-SQL.?
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312727
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
taranoff,

думаю тут вариант: функцию доработать, чтобы она дубликаты "не трогала"))
а запрос сейчас один, потом другой... функция полезная)))
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312728
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Так попробуйте:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Function UnionStr(Optional id, Optional Fam)
Static IDOld, FamUnion
 If IsMissing(id) Then
   IDOld = Empty
   Exit Function
 End If
 If IDOld <> id Then
   IDOld = id: FamUnion = Fam
 ElseIf InStr(1, FamUnion, Fam) = 0 Then
   FamUnion = FamUnion + ", " & Fam
 End If
   UnionStr = FamUnion
End Function



с таким вариантом запрос не выполняется вообще(
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312751
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taranoff__Michelletaranoff,

Вы не могли бы оформить запрос и функцию тегами,
а то очень неудобно разбираться.
Пункт SRC, подпункты VBA или T-SQL.
Предварительно выделить нужный фрагмент.

к сожалению так досконально этим вопросом не владею(
что такое: Пункт SRC, подпункты VBA или T-SQL.?Когда пишете сообщение,
посмотрите на панель инструментов над окном сообщения,
там увидите среди прочего комбобокс SRC с такими подпунктами.
И еще много чего увидите, но это уже потом будете рассматривать.
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312758
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
SELECT ПаспортКачестваДизайн.КодПаспорта, ПаспортКачестваДизайн.Номер, ПаспортКачестваДизайн.МаркаОболочки, ПаспортКачестваДизайн.КолвоОтгрузки, Оболочка.Диаметр, Оболочка.Цвет, Дизайны.Дизайн, ПаспортКачестваДизайн.КолКоробов, ПаспортКачестваДизайн.КолРулонов, ЗаявкиНаПечать.КодЗаявкиНаПечать, Цвета.Текст_РУС, Цвета.Текст_ПОЛ, Цвета.Текст_ЛИТ, Цвета.Текст_АНГ, Клиенты.Клиент, Дизайны.КодДизайна, Last(UnionStr([ЗаявкиНаПечать]![КодЗаявкиНаПечать],[Рулоны]![Дата])) AS Data
FROM (Цвета INNER JOIN Оболочка ON (Цвета.Цвет = Оболочка.Цвет) AND (Цвета.Цвет = Оболочка.Цвет)) INNER JOIN ((((Дизайны INNER JOIN Клиенты ON Дизайны.КодКлиента = Клиенты.КодКлиента) INNER JOIN ЗаявкиНаПечать ON Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна) INNER JOIN ПаспортКачестваДизайн ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПаспортКачестваДизайн.КодЗаявкиНаПечать) INNER JOIN (ПечатьДизайнов INNER JOIN Рулоны ON ПечатьДизайнов.КодПечати = Рулоны.КодПечати) ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПечатьДизайнов.КодЗаявкиНаПечать) ON Оболочка.КодОболочки = ЗаявкиНаПечать.КодОболочки
GROUP BY ПаспортКачестваДизайн.КодПаспорта, ПаспортКачестваДизайн.Номер, ПаспортКачестваДизайн.МаркаОболочки, ПаспортКачестваДизайн.КолвоОтгрузки, Оболочка.Диаметр, Оболочка.Цвет, Дизайны.Дизайн, ПаспортКачестваДизайн.КолКоробов, ПаспортКачестваДизайн.КолРулонов, ЗаявкиНаПечать.КодЗаявкиНаПечать, Цвета.Текст_РУС, Цвета.Текст_ПОЛ, Цвета.Текст_ЛИТ, Цвета.Текст_АНГ, Клиенты.Клиент, Дизайны.КодДизайна
ORDER BY ПаспортКачестваДизайн.Номер;



Так?
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312759
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taranoff,
а так:
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312761
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT ПаспортКачестваДизайн.КодПаспорта, ПаспортКачестваДизайн.Номер, ПаспортКачестваДизайн.МаркаОболочки,
 ПаспортКачестваДизайн.КолвоОтгрузки, Оболочка.Диаметр, Оболочка.Цвет, Дизайны.Дизайн, ПаспортКачестваДизайн.КолКоробов, 
ПаспортКачестваДизайн.КолРулонов, ЗаявкиНаПечать.КодЗаявкиНаПечать, Цвета.Текст_РУС, Цвета.Текст_ПОЛ, Цвета.Текст_ЛИТ, 
Цвета.Текст_АНГ, Клиенты.Клиент, Дизайны.КодДизайна, 
Last(UnionStr([ЗаявкиНаПечать]![КодЗаявкиНаПечать],[Рулоны]![Дата])) AS Data

FROM (Цвета INNER JOIN Оболочка ON (Цвета.Цвет = Оболочка.Цвет) AND (Цвета.Цвет = Оболочка.Цвет)) 
INNER JOIN ((((Дизайны INNER JOIN Клиенты ON Дизайны.КодКлиента = Клиенты.КодКлиента) 
INNER JOIN ЗаявкиНаПечать ON Дизайны.КодДизайна = ЗаявкиНаПечать.КодДизайна) 
INNER JOIN ПаспортКачестваДизайн ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПаспортКачестваДизайн.КодЗаявкиНаПечать) 
INNER JOIN (ПечатьДизайнов INNER JOIN Рулоны ON ПечатьДизайнов.КодПечати = Рулоны.КодПечати) ON ЗаявкиНаПечать.КодЗаявкиНаПечать = ПечатьДизайнов.КодЗаявкиНаПечать) ON Оболочка.КодОболочки = ЗаявкиНаПечать.КодОболочки

GROUP BY ПаспортКачестваДизайн.КодПаспорта, ПаспортКачестваДизайн.Номер, ПаспортКачестваДизайн.МаркаОболочки, 
ПаспортКачестваДизайн.КолвоОтгрузки, Оболочка.Диаметр, Оболочка.Цвет, Дизайны.Дизайн, ПаспортКачестваДизайн.КолКоробов, 
ПаспортКачестваДизайн.КолРулонов, ЗаявкиНаПечать.КодЗаявкиНаПечать, Цвета.Текст_РУС, Цвета.Текст_ПОЛ, Цвета.Текст_ЛИТ, Цвета.Текст_АНГ, Клиенты.Клиент, Дизайны.КодДизайна

ORDER BY ПаспортКачестваДизайн.Номер;



но думаю всё-таки надо с функцией разбираться))
запрос достаточно запутанный))
а в след. раз будет другой запрос с этой функцией))))
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312766
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkutaranoff,
а так:

на одной таблице все отл. работает)))
а если в запросе 5-6 таблиц и группировка идет не по тому параметру?))
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312794
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__MichelleНе убрать, а не "загонять"
Код: vbnet
1.
2.
3.
If InStr(FamUnion, Fam) = 0 Then
  FamUnion = (FamUnion + ", ") & Fam
End If

.Сбило с толку это Fam.
А ведь там дата.
Попробуйте так
Код: vbnet
1.
If InStr(FamUnion, Format(Fam, "dd.mm.yyyy")) = 0 Then
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312803
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

ни какую дату не выводит(

вот, немного упорядочил, может поможет))
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312826
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taranoff,

Поставьте, пожалуйста, это перед конкатенацией
Код: vbnet
1.
Debug.Print FamUnion & vbCrLf & Fam & vbCrLf & Format(Fam, "dd.mm.yyyy")

И выложите сюда то, что вышло в окне Immediate.
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312829
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312834
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не все даты вошли)))
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312836
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taranoff,

А теперь так попробуйте
Код: vbnet
1.
If Nz(InStr(FamUnion, Fam)) = 0 Then
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312839
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taranoffна одной таблице все отл. работает)))
а если в запросе 5-6 таблиц и группировка идет не по тому параметру?))
а эта функция и не будет работать при группировке по другому параметру
Ищите другие пути-несколько запросов, заполнять рекордсет
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312844
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelletaranoff,

А теперь так попробуйте
Код: vbnet
1.
If Nz(InStr(FamUnion, Fam)) = 0 Then



похоже, заработало)))
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312849
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taranoff,

Да, 11.09.2016 отсеклось, я вижу.
...
Рейтинг: 0 / 0
Убрать дубликаты в запросе из результата функции)))
    #39312853
taranoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelletaranoff,

Да, 11.09.2016 отсеклось, я вижу.

ок. спасибо за помощь, потестирую ...)
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Убрать дубликаты в запросе из результата функции)))
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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