Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Используется
Access 2016
MySql 5,7 - х64
Access использует внешние таблицы через ODBC
Таблицы расположены на MySql
Как сделать в форме сценарий для ввода в поле нескольких значений?
Сценарий
1. Набираем с клавиатуры несколько символов меток
2. Access предлагает наиболее подходящие для набранных символов метки из справочника (см. скрин)
3. По средствам стрелок клавиатуры выбираем из списка необходимую позицию.
4. Нажимаем "Ввод".
5. По средствам нажатия "Ввод" позиция заносится в поле. После позиции ставится знак разделителя. "," (запятая) например.
6. Набираем следующую позицию.
7. Цикл повторяется. См. п.2 - п.6.
Вопрос.
1. Как реализовать данный цикл?
2. Какими другими способами можно решить данную задачу?
3. Как сделать, чтобы данные в поле, где собираются метки не повторялись?
Отредактированно sql157 (02.04.2017 16:15:04)
Неактивен
Скрин аналог
Неактивен
Файл
Неактивен
всё-таки это форум по MySql
вероятность получить ответ про аccess невелика
емнип, там есть вариант списка, в котором можно выделить несколько позиций
Неактивен
vasya написал:
емнип, там есть вариант списка, в котором можно выделить несколько позиций
емнип - это тип поля?
Неактивен
емнип - это если мне не изменяет память
посмотрите в настройках при задании свойств эл-та формы
Неактивен
vasya написал:
емнип - это если мне не изменяет память
посмотрите в настройках при задании свойств эл-та формы
Не получается найти ни емнип, ни emnip...
Ну да ладно..
Может есть возможность триггером как-то это решить?
Пример.
Имеется таблица
Отредактированно sql157 (02.04.2017 09:15:08)
Неактивен
чтобы задействовать триггер нужно обновлять запись при каждом действии
тогда после каждого обновления добавлять значение `metki_sprch` к `metki`
емнип, в аксесе можно задать выполнение кода при действиях с этом формы
Неактивен
vasya написал:
чтобы задействовать триггер нужно обновлять запись при каждом действии
тогда после каждого обновления добавлять значение `metki_sprch` к `metki`
Я так и предполагаю...
Пример.
1. Поле `metki_sprch`. Выбрал 'metka_1';
2. Триггер добавил 'metka_1' в поле `metki`;
3. Поле `metki` содержит: 'metka_1';
4. Поле `metki_sprch`. Выбрал 'metka_3';
5. Триггер добавил 'metka_3' в поле `metki`;
6. Поле `metki` содержит: 'metka_1', 'metka_3';
и т.д.
Комбинации меток в поле `metki` будут разные для каждого поля.
Или я не правильно понимаю механизм?
Неактивен
sql157 написал:
Комбинации меток в поле `metki` будут разные для каждого поля.
Ошибка
... для каждой ЗАПИСИ.
Отредактированно sql157 (02.04.2017 13:34:54)
Неактивен
при выбрал в форме 'metka_1' тригер ничего не добавит
чтобы сработал триггер, нужно будет обновить данные
а так, да в триггере concat(`metki_sprch`, ', ', `metki`)
Неактивен
vasya написал:
при выбрал в форме 'metka_1' тригер ничего не добавит
чтобы сработал триггер, нужно будет обновить данные
а так, да в триггере concat(`metki_sprch`, ', ', `metki`)
Сделал в следующем виде.
- справочник меток;
- таблица Статей (статьям будут присваиваться метки);
- таблица журнал меток для статей;
- триггер_обновления(при обновлении метки в журнал заносится id статьи и метка.)
Вопрос.
1. Правильным ли будет реализованное мной решение.
2. Как сделать, чтобы триггер осуществлял проверку метки на уникальность? Т.е. если в журнале для статьи метка уже есть, то она не заносится в журнал... Или просто появляется сообщение об ошибке.
КОД
Неактивен
я потерял нить рассуждений
что хранится в metka_stat?
дополните тестовыми значениями на несколько строк и что должно происходить при обновлении
Неактивен
vasya написал:
я потерял нить рассуждений
что хранится в metka_stat?
дополните тестовыми значениями на несколько строк и что должно происходить при обновлении
Для примера взял базу статей.
Присвоим каждой статье несколько меток (тегов)
Access - клиент.
Служит для заполнения таблиц.
Сделал в следующем виде.
- Таблица "sprch_metki" - справочник меток;
- Таблица "stat" - таблица Статей (статьям будут присваиваться метки(теги));
- Таблица "grnl_metki" - журнал меток для статей. В таблице связывается статья с несколькими метками; "stat" 1:М "grnl_metki".
`id_stat` - id статьи;
`name_stat` - наименование статьи;
`content_stat`- контент статьи;
`metka_stat` - метка статьи;
К выпадающему списку в Access подключён "sprch_metki".
В Access из выпадающего списка выбираем метку и она попадает в MySql в таблицу "stat" в поле `metka_stat`.
В результате срабатывает триггер и заносит данные в таблицу "grnl_metki"
- Триггер stat_before_update - триггер обновления(при обновлении метки в таблице "stat" в журнал заносится id статьи и метка.)
Понимаю, что "нагородил"...
Но на сколько хватает опыта..
Если мне не удалось сформулировать, то сообщите, я попробую сделать пример с файлами.
Вопрос.
1. Правильным ли будет реализованное мной решение.
2. Как сделать, чтобы триггер осуществлял проверку метки на уникальность?
Т.е. если в журнале для статьи метка уже есть, то она не заносится в журнал... Или просто появляется сообщение об ошибке.
Неактивен
т.е. в таблице статей хранится последнее значение метки для этой статьи, а зачем?
добавляйте данные сразу в таблицу grnl_metki
сделайте в ней уникальный ключ (`id_metka`, `id_stat`) и дубликаты не будут добавлятся
Неактивен
Страниц: 1