|
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 102
|
|
Несколько значений в ячейке ACCESS22.07.2019, 18:05. Показов 4335. Ответов 45
Метки нет (Все метки)
Доброго времени суток уважаемые гуру программирования! Имеется база данных в MS ACCES и Delphi Xe 10.3
Подскажите как реализовать добавление/считывание в базу значений через запятую (категории товара) в базу данных MS ACCESS? Есть 2 таблицы ЗАКАЗЫ и ТОВАРЫ: необходимо в ячейку ТОВАРЫ_КОД таблицы ЗАКАЗЫ добавить через запятую ID товаров в этом заказе Подходит вроде бы функция GROUP_CONCAT, но при компиляции ошибка: undefined function group_concat
0
|
|
| 22.07.2019, 18:05 | |
|
Ответы с готовыми решениями:
45
Несколько значений в ячейке
Несколько значений в одной ячейке |
|
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
|
|
|
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 [ТС] | |
|
Пример сформированной таблицы во вложении
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 [ТС] | ||
|
0
|
||
|
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
||
| 22.07.2019, 23:48 | ||
|
Можно ли себе представить, что если товаров с десяток, да и покупателей не один-два, то какая же это будет строка в гриде, если все это впихнуть в одну единственную (бедную) строку? Так никто и никогда не делает. А делают иначе: показывают все товары в колоночном списке. Покупателей, которым приспичило покупать один и тот же товар в одном и том же заказе тоже туда же: в колонку. Но это надо показывать не в гриде, который отображает список заказов, а другом 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
|
|
| 23.07.2019, 11:36 | |
|
никто не хранит данные в строке
как их потом искать? придется в каждой строке или like использовать или разбивать ее по разделителю и искать первое индекс не использует, а второе просто долго храните данные как вам советуют, а для вывода на экран выводите как хотите
0
|
|
|
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 102
|
|||
| 23.07.2019, 13:34 [ТС] | |||
|
2. Последующая обработка - в word экспортировать текстовые значения этих индексов из связанной таблицы 3. печать документа Добавлено через 1 минуту
0
|
|||
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
|
| 23.07.2019, 14:43 | |
|
EhLib я не использую, но и на просторах инета я упоминаний не встречал, так-что возможно и нет.
1
|
|
| 23.07.2019, 14:43 | |
|
Помогаю со студенческими работами здесь
20
Несколько значений в одной ячейке Несколько значений в одной ячейке таблицы Суммирование несколько значений чисел находящиеся в одной ячейке Суммирование несколько значений чисел находящиеся в одной ячейке Запрос к БД Access на сложение значений в ячейке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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 - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|