powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в запросе вывести поле, допускающее несколько значений, в составе текста
23 сообщений из 23, страница 1 из 1
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39656063
IvanVasilich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Пожалуйста, помогите решить проблему.


Для примера своей задачи. Есть запрос:
- Поле 1: [Имя клиента]
- Поле 2 (поле, допускающее несколько значений*): [Даты] (например 1.06.2018; 6.06.2018)

Нужно вывести несколько полей в одном поле (Поле 3) в виде столбика:
Клиент: "Фирма"
Даты: 1.06.2018; 6.06.2018

В поле 3 пробовал делать так: "Клиент: " & [Имя клиента] & Chr(13) & Chr(10) & "Даты: " & [Даты].
Выдает сообщение: Поле, допускающее несколько значений, недопустимо в таком выражении.

Пробовал, но безуспешно
- CStr([Даты] - недопустимое выражение
- CDate([Даты].[Value] - выводит дату, правда неверную и добавляет строки в запросе (т.е. неприемлемо).

* отказаться от поля, допускающего несколько значений уже невозможно (работающая база с большой историей)

Заранее благодарю за помощь.
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39656067
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanVasilich, большинство людей тут отвечающих не работают с многозначными полями, ИМХО. И даже считают их вредными. Я в большей части поддерживаю эту кочку зрения. Хотя в некоторых случаях они довольно удобны.

Поэтому почитай статью от MS ->
Руководство по полям, одновременно допускающим несколько значений
и
Использование в запросах полей, одновременно допускающих несколько значений


IvanVasilich* отказаться от поля, допускающего несколько значений уже невозможно (работающая база с большой историей)Решается успешно "старыми" методами реляционных баз данных. Данные можно успешно извлечь (см статьи) и сделать по-человечески.
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39656069
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanVasilich, так-то приложи небольшой пример с проблемой (необязательно саму базу, можно модель), подумаем.

ЗЫ. есть идеи, но делать тестовую базу неохота, да и некогда.
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39656074
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanVasilich* отказаться от поля, допускающего несколько значений уже невозможно (работающая база с большой историей)

бедные пользователи, как же они выбирают даты в огромном списке дат
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39656987
IvanVasilich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, добрый день.

Да, я знаю, что многозначные поля не в почете. Но в моем случае их использование оказалось очень удобным.

Прикладываю модель базы.

Буду благодарен вам и другим участникам за помощь в решении моей задачи.
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657022
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanVasilichНо в моем случае их использование оказалось очень удобным.
пока 3 строки в таблице и 10 строк в таблице даты ---конечно удобно, особенно, если учесть, что есть ещк поле с множественным выбором

что будет, когда дат будет 365 и более, причем выбирать придется не смежные 2-3 даты,а в далеко стоящие(например 1 января и 1 июля)
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657034
IvanVasilich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемая ПЕНСИОНЕРКА.

Поверьте мне на слово. Я и есть один из пользователей. Решение о применении многозначных полей в моей базе было принято несколько лет назад, и оно оправдало себя быстрым выбором значений и еще целым рядом факторов. Неудобств, о которых вы пишите, нет (они решены).

Мне очень необходимо решение моей задачи, а не критика. Помогите, если можете.

Заранее благодарю.
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657040
Фотография alex_p_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanVasilich,
авторПоле 2 (поле, допускающее несколько значений*): [Даты] (например 1.06.2018; 6.06.2018)
Это уже не поле таблицы БД, а тупо набор текстовых данных. Даже не приведенный к 1НФ. Поле должно быть атомарным, т.е. значение его должно быть неделимым, т.е. без вот таких извратов типа 1.06.2018; 6.06.2018
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657060
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanVasilich,

три дополнительные поля в таблицу СВЕДЕНИЯ(или рабочую)
и 3 запроса
КодГазетаТДатаТТипТ1КомпасДаты:07.06.2018; 09.06.2018; 11.06.2018;типы:Большими;Простой;2НавигаторДаты:10.06.2018;15.06.2018;12.06.2018;13.06.типы:Выделенный;Большими;3Родные берегаДаты:12.06.2018;типы:Выделенный;Простой;
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657068
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanVasilich,

D:\Вывод поля с неск_знач180607MM.accdb
`Запрос: Запрос` 1
`
Код: sql
1.
2.
 SELECT Сведения.Код, Сведения.ГазетаТ, Сведения.ДатаТ, Сведения.ТипТ
 FROM Сведения;


` Запрос: Запрос21` 2
`
Код: sql
1.
2.
3.
4.
5.
 UPDATE Газеты INNER JOIN Сведения
 ON Газеты.Код_газеты = Сведения.Газета
 SET Сведения.ГазетаТ = [Газеты]![Газета], 
Сведения.ДатаТ = "Даты:", 
Сведения.ТипТ = "типы:";


` Запрос: Запрос22` 3
`
Код: sql
1.
2.
3.
UPDATE Даты INNER JOIN Сведения
 ON Даты.Код_даты =  Сведения.Дата.Value
 SET Сведения.ДатаТ = Сведения.ДатаТ  & [Даты].[Дата] & ";" & chr(13) & chr(10);


` Запрос: Запрос23` 4
`
Код: sql
1.
2.
3.
 UPDATE Тип INNER JOIN Сведения
 ON Тип.Код_типа = Сведения.Тип.Value
 SET Сведения.ТипТ = Сведения.ТипТ & [Тип].[Тип] & ";" & chr(13) & chr(10);
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657073
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_p_nIvanVasilich,
авторПоле 2 (поле, допускающее несколько значений*): [Даты] (например 1.06.2018; 6.06.2018)
Это уже не поле таблицы БД, а тупо набор текстовых данных. Даже не приведенный к 1НФ. Поле должно быть атомарным, т.е. значение его должно быть неделимым, т.е. без вот таких извратов типа 1.06.2018; 6.06.2018 Вы не правы. Это и есть многозначное поле, которое появилось в базах формата ACCDB. Панург давал ссылки на материалы по ним. Так, что просто изучите сначала документацию. При помощи них можно реализовать связь многие-ко многим А
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657082
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_p_nЭто уже не поле таблицы БД, а тупо набор текстовых данных. Даже не приведенный к 1НФ. Поле должно быть атомарным, т.е. значение его должно быть неделимым, т.е. без вот таких извратов типа 1.06.2018; 6.06.2018
JossПри помощи них можно реализовать связь многие-ко многим АОно и реализовано, просто доступа простого нет к этим таблицам. Но это именно вариант могие-ко-многим.
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657086
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss При помощи них можно реализовать связь многие-ко многим А
это удобно , когда надо прицепить справочники типа ИНОСТРАННЫЕ ЯЗЫКИ(английский, французский...) , но и то, если
--список не слишком длинный(в пределах 20-30 --экран)
--не надо добавлять еще и дополнительные поля, хотя бы типа УРОВЕНЬ ВЛАДЕНИЯ, СЕРТИФИКАТЫ ПЕРЕВОДЧИКА и т.д

из своей практики : Состав изделия
--деталь может входить в десятки изделий из сотен возможных
--деталь имеет много технологических переходов

связь М:М по коду детали
но вряд ли приемлем множественный выбор
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657093
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossЭто и есть многозначное поле, которое появилось в базах формата ACCDB. Панург давал ссылки на материалы по ним. Так, что просто изучите сначала документацию. При помощи них можно реализовать связь многие-ко многим А

автортипы:Большими;Простой;
к какой дате относится какой тип

намного разумнее иметь
таб1(код1, код газеты.....)
таб2(код2,код1,дата или ее код, код типа...)
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657300
IvanVasilich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,
благодарю вас за вариант решения. Преклоняюсь перед вами, ваше решение потребовало столько труда.

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

Не ожидал, что решение может быть таким громоздким. Видимо, это плата за использование многозначных полей?

Ведь кажется вот оно, в запросе это многозначное поле. Его значение можно скопировать, например, в текстовый файл.
- Неужели его невозможно извлечь в вычисляемое поле запроса как-то проще?
- Может быть все-таки есть более простое решения этой задачи?

Уважаемые профессионалы.
Пожалуйста, помогите решить задачу более простым способом.

Заранее благодарю за помощь всех участников обсуждения.
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657319
IvanVasilich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обращение ко всем ненавистникам многозначных полей.

Осмелюсь предположить, что у вас просто не возникала задача, чтобы вы могли оценить пользу от многозначных полей:

- Когда выбор идет из короткого списка, делать выбор кликами очень удобно
- Гораздо быстрее, чем добавлять в табличную форму из поля со списком
- Наглядно видно, что выбрано, а что нет. Легко вносить исправления

Я несколько лет использую это решение, и очень им доволен.

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

Вот только сейчас возникло затруднение (о чем это обсуждение), связанное с ограничением, присущим многозначным полям.

Благодарю за внимание.
Надеюсь, что простое решение должно существовать.
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657321
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanVasilich- Неужели его невозможно извлечь в вычисляемое поле запроса как-то проще?

можно, применив самописную функцию, но вряд ли устроит время выполнения
если в вашей таблице будет 1000 строк, у два поля с множественной подстановкой
это 2000 раз вызовется функция, а следовательно 2000 раз откроется/закроется связь основной таблицы со справочником
а если записей будет не 1000, а 10т-20т --программ зависнет
о 50т и более --даже говорить нет смысла

----
разделять же даты придется часто, ибо основа отчетов --это итоги и списки что-где-когда
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657322
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разделять же даты придется часто, ибо основа отчетов --это итоги и списки что-где-когда
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657372
IvanVasilich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА, благодарю вас за терпеливое отношение, за то, что не бросили мою задачу, и еще предлагаете решение.

Видимо мне нужно было дать больше подробностей о конечной цели этого дела.

1) На основе запроса не будут делаться отчеты. Это нужно только для запроса. Далее текст из вычисляемого поля (по всем строкам в запросе -- это некоторая небольшая выборка из таблицы), в котором данные в виде столбика (с участием значений из многозначных полей) будет просто копироваться в электронное письмо вручную.

2) Сейчас без проблем из имеющегося запроса (включающего многознач. поля) можно копировать в электронное письмо данные в виде таблицы
- Но в этой таблице слишком много столбцов -- это сложно для восприятия
- И не хочется делать таблицы в письмах (они могут отображаться некорректно)

Поэтому, нужно решение -- сделать каждую строку в виде столбика.

3) Мой запрос работает с текущей выборкой до 100 строк, не более.

4) Я не уверен, что верно понял о самописной функции (наверное, это как Dlookup, да?). Но ваше предложение, что можно создать функцию, мне кажется, и есть решение для моей задачи.

Буду вам благодарен, если вы сделаете для меня такое чудо.
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657491
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanVasilichБуду вам благодарен, если вы сделаете для меня такое чудо.
Код: vbnet
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Option Compare Database
Option Explicit
Dim rst As DAO.Recordset
Dim dbs As DAO.Database
''Sub mm00()
''mmdate 1
''mmtyp 1
''End Sub
Function mmdate(n1z)
Dim s1, ss
s1 = "SELECT Сведения.Код as kod1,    Сведения.Дата.Value  as d1, Даты.Дата as d2"
s1 = s1 & " FROM Даты"
s1 = s1 & "  INNER JOIN Сведения"
s1 = s1 & "  ON Даты.Код_даты = Сведения.Дата.Value"
s1 = s1 & " where Сведения.Код = " & n1z


Dim b As Byte
'b = Forms("Order Entry").[Элементы управления]("Страна").MultiSelect
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(s1)
Do While rst.EOF = False
ss = ss & " " & rst!d2

rst.MoveNext
Loop
Debug.Print ss
rst.Close
Set rst = Nothing
mmdate = ss
End Function
Function mmtyp(n1z)
Dim s1, ss
s1 = "SELECT Сведения.Код as kod1, Сведения.Тип.Value as d1,тип.тип as d2 "
s1 = s1 & " FROM Тип"
s1 = s1 & "  INNER JOIN Сведения"
s1 = s1 & "  ON Тип.Код_Типа = Сведения.тип.Value"
s1 = s1 & " where Сведения.Код = " & n1z


Dim b As Byte
'b = Forms("Order Entry").[Элементы управления]("Страна").MultiSelect
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(s1)
Do While rst.EOF = False
ss = ss & " " & rst!d2

rst.MoveNext
Loop
Debug.Print ss
rst.Close
Set rst = Nothing
mmtyp = ss
End Function




Код: sql
1.
2.
3.
4.
SELECT Сведения.Код, Газеты.Газета,
 "даты:" & mmdate(Сведения.Код) AS даты,
 "типы:" & mmtyp(Сведения.Код) AS типы
FROM Газеты INNER JOIN Сведения ON Газеты.Код_газеты = Сведения.Газета;



КодГазетадатытипы2Навигатордаты: 10.06.2018 15.06.2018 12.06.2018 13.06.2018типы: Выделенный Большими1Компасдаты: 07.06.2018 09.06.2018 11.06.2018типы: Большими Простой3Родные берегадаты: 12.06.2018типы: Выделенный Простой
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39657501
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanVasilich,

причем могут возникнуть проблемы, если много дат на позицию(строка более 255 символов, это 23 даты)
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39658023
IvanVasilich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА, благодарю вас.

Попробую разобраться (VBA для меня темный лес).

Еще раз спасибо!
...
Рейтинг: 0 / 0
Как в запросе вывести поле, допускающее несколько значений, в составе текста
    #39658038
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanVasilichПопробую разобраться (VBA для меня темный лес).
придется, ибо ваши потребности(проблемы) вышли из возможностей внедренных макросов
азбуку вы прошли(внедренные макросы)
теперь придется изучать книгу для чтения(код VBA)
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в запросе вывести поле, допускающее несколько значений, в составе текста
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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