Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 102

Несколько значений в ячейке ACCESS

22.07.2019, 18:05. Показов 4335. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток уважаемые гуру программирования! Имеется база данных в MS ACCES и Delphi Xe 10.3
Подскажите как реализовать добавление/считывание в базу значений через запятую (категории товара) в базу данных MS ACCESS?
Есть 2 таблицы ЗАКАЗЫ и ТОВАРЫ: необходимо в ячейку ТОВАРЫ_КОД таблицы ЗАКАЗЫ добавить через запятую ID товаров в этом заказе
Подходит вроде бы функция GROUP_CONCAT, но при компиляции ошибка: undefined function group_concat
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.07.2019, 18:05
Ответы с готовыми решениями:

Несколько значений в ячейке
Всем привет! Я первый раз создаю базу данных. И вроде структуру привел в более менее адекватный вид. Но в процессе проектирования...

Несколько значений в одной ячейке
Доброго времени суток! Для начала скажу, что искал тему по многим форумам но так и ничего не нашел. Суть проблемы : пусть...

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

45
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,386
Записей в блоге: 3
22.07.2019, 18:35
Цитата Сообщение от mosczar Посмотреть сообщение
необходимо в ячейку ТОВАРЫ_КОД таблицы ЗАКАЗЫ добавить через запятую ID товаров в этом заказе
Чушь какая-то... Прочитайте хоть пару страниц учебника по теме нормализации данных... Вы сами ужаснетесь своей идеи...
0
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 102
22.07.2019, 19:50  [ТС]
Может и чушь, про нормализацию читал. Как тогда реализовать данное? Прошу помощи в реализации данной задачи. Если категорий допустим 200 или 300 - создавать отдельную таблицу и записывать данные категории каждую в отдельной строчке со связью категория_код? Это база так разрастется что представить не могу после добавления 1000 записей
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
22.07.2019, 20:34
А вы считаете, что она меньше разрастется, если будет расти не по вертикали, по горизонтали? Количество данных останется то-же самое, зато сложность обработки возрастет существенно.
0
5966 / 4542 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
22.07.2019, 22:55
Цитата Сообщение от mosczar Посмотреть сообщение
Это база так разрастется что представить не могу после добавления 1000 записей
покажите пример
что у вас за база и что за 200 категорий
0
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 102
22.07.2019, 23:03  [ТС]
Можно пример реализации структуры таблиц для формирования следующей таблицы:

Покупатели (может быть несколько в одном заказе)
Адреса покупателей
Телефоны покупателей
Товары (общие товары которые выбраны этими покупателями, разных товаров не предусмотрено)

В dbgrid заказ в одну строчку при клике открывает вышеуказанную таблицу (в заказах могут отличаться только категория товара)
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
22.07.2019, 23:10
Нечто подобное, с весьма большим количеством категорий реализовано в базах использующих ОКВЭД
0
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 102
22.07.2019, 23:19  [ТС]
Пример сформированной таблицы во вложении
Миниатюры
Несколько значений в ячейке ACCESS  
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
22.07.2019, 23:22
Отображать данные вы можете и перечислением через разделитель, но хранить в базе придется уже построчно, каждому значению запись в базе.
0
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 102
22.07.2019, 23:33  [ТС]
Цитата Сообщение от Пытливый Посмотреть сообщение
Нечто подобное, с весьма большим количеством категорий реализовано в базах использующих ОКВЭД
Можно ссылку на пример

Добавлено через 5 минут
Цитата Сообщение от Пытливый Посмотреть сообщение
Отображать данные вы можете и перечислением через разделитель, но хранить в базе придется уже построчно, каждому значению запись в базе.
Тоесть вместо одной таблицы Заказы будут три:
1 заказы
2 заказы_покупатели
3 заказы товары

Я правильно понимаю?
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
22.07.2019, 23:34
1. Таблица "Покупатели": Код (Счетчик), Наименование/ФИО, Адрес, Телефоны.
2. Таблица "Товары": Код (Счетчик), Наименование, Цена, ... (может быть еще какая информация).
3. Таблица "Заказы": Код (Счетчик), НомерЗак (если нужен), ДатаЗак, [ВремяЗак (если нужно)], КодПокупателя (число), КодТовара (число), КоличествоТовара (число), ...

В DBGrid можно отображать в одну строку данные из таблицы Заказы: Номер, Дата (Время), Сумма (если есть).
"При клике" вытаскивать и показывать все строки по конкретному заказу, в которых перечисляются покупатели и товары и которые можно выбрать по КодуПокупателя из таблицы Покатели и по КодуТовара из таблицы Товары.

Итого можно обойтись тремя таблицами, если конечно ТС исчерпывающе обозначил задание.
0
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 102
22.07.2019, 23:41  [ТС]
Цитата Сообщение от Скандербег Посмотреть сообщение
1. Таблица "Покупатели": Код (Счетчик), Наименование/ФИО, Адрес, Телефоны.
2. Таблица "Товары": Код (Счетчик), Наименование, Цена, ... (может быть еще какая информация).
3. Таблица "Заказы": Код (Счетчик), НомерЗак (если нужен), ДатаЗак, [ВремяЗак (если нужно)], КодПокупателя (число), КодТовара (число), КоличествоТовара (число), ...

В DBGrid можно отображать в одну строку данные из таблицы Заказы: Номер, Дата (Время), Сумма (если есть).
"При клике" вытаскивать и показывать все строки по конкретному заказу, в которых перечисляются покупатели и товары и которые можно выбрать по КодуПокупателя из таблицы Покатели и по КодуТовара из таблицы Товары.

Итого можно обойтись тремя таблицами, если конечно ТС исчерпывающе обозначил задание.
Вас не затруднит на досуге примерчик накидать пожалуйста ( в дбгрид должны отображаться товары через запятую и покупатели через запятую )
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
22.07.2019, 23:48
Цитата Сообщение от mosczar Посмотреть сообщение
в дбгрид должны отображаться товары через запятую и покупатели через запятую
Такая реализация - это не сюда и не здесь.

Можно ли себе представить, что если товаров с десяток, да и покупателей не один-два, то какая же это будет строка в гриде, если все это впихнуть в одну единственную (бедную) строку?
Так никто и никогда не делает. А делают иначе: показывают все товары в колоночном списке. Покупателей, которым приспичило покупать один и тот же товар в одном и том же заказе тоже туда же: в колонку.
Но это надо показывать не в гриде, который отображает список заказов, а другом DBGrid. Который, вполне возможно, будет находится рядом со списком заказов.
0
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 102
23.07.2019, 00:03  [ТС]
Это не совсем магазин: покупатели и товары добавляются в заказы администратором. И визуально в dbgrid должно быть видно что это один заказ. Да количество покупателей и товаров может быть разным от 1 до 200 к примеру: например 30 покупателей получат 80 товаров. При печати данной строки покупатели должны быть в таблице ворд все с новой строчки с адресами и телефонами (как на рисунке выше) а товары в общей ячейке
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
23.07.2019, 00:24
Еще раз...
На форме есть список заказов, каждая позиция в котором содержит общее для любого заказа информацию: Номер, дата, время, сумма.
Где-то рядом на форме есть другой список, который содержит данные по конкретному заказу и который выбран в списке заказов.
В этом случае администратор может видеть абсолютно все данные по одному заказу и в удобном для себя виде - в столбцах.
Т.е. ему не придется долго "листать" строку вправо чтобы увидеть 10-20-100 товаров с покупателями, а сразу все товары и покупателей в списках столбиком.

Добавлено через 11 минут
Еще надо понимать, что в гриде, в строках которого будут перечислены товары, они тоже не будут видны все (ну. один-два).
Поэтому в любом случае администратору придется делать какие-то телодвижения, чтобы увидеть всё содержимое заказа.
Но в колонках это будет удобнее, чем в одну строку.
Заставь администратора "листать" список 200 товаров, записанных в строку и он на следующий день прибьет разработчика.
0
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 102
23.07.2019, 09:15  [ТС]
Есть примеры с функцией GROUP_CONCAT в дельфи? Буду признателен.
Вот описание функции ав MYSql https://webi.ru/webi_articles/8_14_f.html
Но в дельфи так не работает. Делал подобное кто нить?
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
23.07.2019, 10:07
GROUP_CONCAT это функция из MySQL и только. Для MSSQL есть свой аналог XML PATH, а вот для Акцеса такой функции нет, так-что реализация будет ваша. Для отображения данных в таком формате, как вы хотите есть компонент TokenEdit, но он из библиотеки DevExpress, а она для VCL платная.
0
5966 / 4542 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
23.07.2019, 11:36
никто не хранит данные в строке
как их потом искать? придется в каждой строке или like использовать или разбивать ее по разделителю и искать
первое индекс не использует, а второе просто долго

храните данные как вам советуют, а для вывода на экран выводите как хотите
0
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 102
23.07.2019, 13:34  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
никто не хранит данные в строке
как их потом искать? придется в каждой строке или like использовать или разбивать ее по разделителю и искать
первое индекс не использует, а второе просто долго

храните данные как вам советуют, а для вывода на экран выводите как хотите
1. Хранить индексы текстовых значений из другой таблицы в ячейке: 2,4,6,8,11
2. Последующая обработка - в word экспортировать текстовые значения этих индексов из связанной таблицы
3. печать документа

Добавлено через 1 минуту
Цитата Сообщение от Пытливый Посмотреть сообщение
GROUP_CONCAT это функция из MySQL и только. Для MSSQL есть свой аналог XML PATH, а вот для Акцеса такой функции нет, так-что реализация будет ваша. Для отображения данных в таком формате, как вы хотите есть компонент TokenEdit, но он из библиотеки DevExpress, а она для VCL платная.
Спасибо за разъяснения, а в EhLib подобного нет?
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
23.07.2019, 14:43
EhLib я не использую, но и на просторах инета я упоминаний не встречал, так-что возможно и нет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.07.2019, 14:43
Помогаю со студенческими работами здесь

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

Несколько значений в одной ячейке таблицы
В моем проекте человек может относится к нескольким организациям. Организации в отдельной таблице. В таблице с людьми предполагаю указывать...

Суммирование несколько значений чисел находящиеся в одной ячейке
https://www.cyberforum.ru/attachment.php?attachmentid=1004964&stc=1&d=1548227450 Всем доброго времени суток. Для начала изложу суть своей...

Суммирование несколько значений чисел находящиеся в одной ячейке
https://www.cyberforum.ru/attachment.php?attachmentid=1004964&stc=1&d=1548227450 Всем доброго времени суток. Для начала изложу суть своей...

Запрос к БД Access на сложение значений в ячейке
Здравствуйте. Как сделать запрос на сложение значений в ячейке. К примеру в таблице "Тест" цифровая ячейка со значением...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru