|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.12.2009, 17:36 | #1 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
Фильтр по текстовому полю
Помогите начинающему аналитику БД.
Проблема: создаю базу данных, где учитываются маркетинговые акции. В таблице акции есть поле номер_акции и акция. В номере соответственно указывается инвентарный номер, который включает в себя 1. Тип акции (локальная, федеральная) 2. Месяц начала акции 3. Канал сбыта 4. Тип акции 5. Порядковый номер акции. Создаю маску ввода, внешний вид получается такой: Фед-01-Опт-01-01 и все выглядит очень читабельно. Проблема в том, что когда я создаю фильтр для отфильтровки нужной акции, то при наличии знака "-" (а он идет как разделитель в маске ввода, чтобы можно было понять в какое поле, что вводить), то фильтр не срабатывает... Отфильтровывается 0 значений. Если убирать знаки "-", то фильтр работает, но выглядит номер акции нечитабельно и вводится еще сложнее (не понятно, где заканчивается одно и начинается другое... (Фед01Опт0101). Как быть и что можно поправить? |
28.12.2009, 19:05 | #2 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте начинающий аналитик БД Иванов_ДМ.
Из Вашего описания понятно, что проблема существует, но представления о "проблеме" оно не даёт. Выложите архив с заранее подготовленным (избавленным от переизбыточных данных, OLE объектов,.... и сжатый средствами MS Access) файлом БД, описанием "проблемы" и ожидаемого результата. И на примере Вашей БД можно будет продемонстрировать способы её решения. Евгений. |
28.12.2009, 20:50 | #3 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
Teslenko_EA, спасибо за ответ.
Выкладываю архив с двумя вариантами одной БД. В первом - желаемый формат данных в столбце, по которому не работает фильтр в запросе, в другом - действительный формат файла (фильтр в запросе по нему работает), но такой формат малопонятен для людей и вносящих новые данные, и просто смотрящих на существующие. Как сделать так, чтобы и данные писались через дефис, например так: Фед-01-Опт-01-01 (а не вот так: Фед01Опт0101) и отфильтровка в запросе работала? |
28.12.2009, 22:29 | #4 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Иванов_ДМ, Вы очевидно невнимательно прочли мой предыдущий пост, файл в архиве должен быть - "избавленным от переизбыточных данных, OLE объектов,.... и сжатый средствами MS Access". Для оказания безвозмездной помощи, у меня нет в планах получения файлов размером более 200Кб. Или уменьшайте бесполезный объем, или ищите помощь на коммерческой основе.
Евгений. |
29.12.2009, 08:58 | #5 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
Teslenko_EA извиняюсь, вроде все удалил и почистил, но не обратил внимания, что размер такой был.
Перекачал сейчас таблицы в новые файлы, теперь они гораздо меньше. |
30.12.2009, 22:14 | #6 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте начинающий аналитик БД Иванов_ДМ.
1. основное назначение таблиц БД - хранение данных, для обработки данных применяется диалоговое окно (форма), максимально исключающая ошибки "человеческого фактора". Основная причина проблема, которую Вы себе создали, именно в отсутствии интерфейса. 2. маска ввода (в Вашей конструкции выглядит так: "&&&\-00\-&&&\-00\-00;;_") предназначена исключительно для облегчения ввода данных, т.е. поле отображающее введенные с её помощью данные вида "Фед-01-Опт-01-01" фактически содержит значение "Фед01Опт0101" и потому фильтр содержащий "-" не "работает". 3. Поле запроса сформированное как в подобной конструкции: Код:
Но результат будет лучше (с учетом планируемого использования) если: 1) использовать форму для работы сданными, 2) поля 1. Тип акции..., 2. Месяц начала..., 3. Канал сбыта, 4. Тип акции, 5. Порядковый номер... - сделать отдельными в таблице "Акции" с заполнением из списков (наборов констант), а поле Номер_акции формировать только в запросе конкатенацией (объединением) полей таблицы. Это только советы без замечаний и рекомендаций. Удачи Вам. С Новым Годом. Евгений. Последний раз редактировалось Teslenko_EA; 30.12.2009 в 22:18. |
30.12.2009, 22:48 | #7 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
Спасибо, кажется разобрался... Для фильтра в запросе можно также поставить значение без знаков "-".
Интересная мысль про сводный номер из различных значений, как-то в голову не приходило... Только как тогда сделать автоматически порядковый номер (он отличает акции, которые идентичны по всем остальным значениям), который идет последним? |
31.12.2009, 13:13 | #8 |
Форумчанин
Регистрация: 26.04.2008
Сообщений: 487
|
|
01.01.2010, 17:50 | #9 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте начинающий аналитик БД Иванов_ДМ.
После разделения поля Номер_акции на пять полей (F1-F5), создайте составной ключ для созданных пяти полей и уникальность будет поддерживаться. Задача определения номера для создаваемой "Акции" может быть решена с применением подобной SQL конструкции: Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Фильтрация по текстовому полю | andirock2112 | БД в Delphi | 3 | 18.05.2009 09:23 |
MFC: передача позиции ползунка текстовому полю | umnick | Visual C++ | 1 | 12.11.2008 19:54 |
Вопросы по текстовому редактору! | Bitrayder | Общие вопросы C/C++ | 4 | 10.03.2008 20:55 |