С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/362: Рейтинг темы: голосов - 362, средняя оценка - 4.55
1 / 1 / 1
Регистрация: 03.12.2010
Сообщений: 49
1

Создание формы для поиска записи из таблицы

01.05.2012, 21:02. Показов 73602. Ответов 76
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!!! У меня такая проблема не могу создать поиск по таблице значения введенного с формы. То есть есть форма "Ведите номер КПО" там всего 1 текстовое поле и 2 кнопки, при нажатии на кнопку ок должна выводится определенная запись из таблицы. Я в коде нечего не понимаю но по менющке еще кое что смогу покликать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
01.05.2012, 21:02
Ответы с готовыми решениями:

Создание формы поиска на сайте. Почему не выводится результат поиска при вводе символов в поле поиска?
Добрый день! Создаю форму поиска с всплывающими подсказками. Попробую, выложить строки кода,...

Создание формы для поиска
Добрый день. Я только начала работать с программой access. Уже научилась создавать запросы и формы....

Создание формы для поиска
Доброго времени суток коллеги! Как то понадобилось мне создать форму для поиска по всем записям...

Создание формы и скрипта для поиска
Нужна ваша помощь так как я это плохо разбираюсь , у меня вот например есть номера паспортов,...

76
2095 / 1171 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
02.05.2012, 13:11 2
Лучший ответ Сообщение было отмечено как решение

Решение

Пример простого поиска с использованием всего одной строки кода VBA и запроса на выборку:
Допустим, есть таблица Клиенты с полями КодКлиента, ОКПО, Наименование клиента.
-Создаем форму с полем со списком для выбора кода ОКПО, назовем его КритОКПО. В источник данных для него добавляем поля КодКлиента и ОКПО, при этом на экран выводим только ОКПО путем задания ширины полей подстановки (0см;2см). Т.о. поле со списком содержит значение кода клиента, а на экран выводится код ОКПО.
-Создаем запрос на основе таблицы Клиенты, для поля КодКлиента задаем условие отбора - равенство критерию отбора на форме. При этом, если критерий не задан: IsNull(Forms![Поиск]![КритОКПО]), то покажем все записи - "*". Т.о. условие отбора для поля КодКлиента:
Like IIf(IsNull(Forms![Поиск]![КритОКПО]);"*";Forms![Поиск]![КритОКПО])
-На форму поиска добавляем подчиненную ленточную форму на основе созданного запроса
-На событие После обновления поля со списком КритОКПО обновляем подчиненную форму:
Visual Basic
1
Me.ïîä÷èíåííàÿ_ôîðìà_Êëèåíòû.Form.Requery
Вложения
Тип файла: rar Очень простой поиск.rar (20.0 Кб, 3721 просмотров)
7
Эксперт MS Access
7446 / 4580 / 302
Регистрация: 12.08.2011
Сообщений: 14,280
03.05.2012, 06:42 3
Лучший ответ Сообщение было отмечено как решение

Решение

А вот тоже самое, только без единой строчки кода и даже без использования запроса
Вложения
Тип файла: rar Супер простой поиск.rar (19.6 Кб, 5872 просмотров)
7
2095 / 1171 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
08.05.2012, 07:21 4
alvk, как????
1
Эксперт MS Access
7446 / 4580 / 302
Регистрация: 12.08.2011
Сообщений: 14,280
08.05.2012, 13:47 5
Ameli, что как? "ловкость рук и никакого мошеннства" (c)
2
1 / 1 / 1
Регистрация: 03.12.2010
Сообщений: 49
09.05.2012, 03:30  [ТС] 6
Всем спасибо, очень помогли!!!
0
2638 / 1337 / 256
Регистрация: 25.10.2010
Сообщений: 2,196
14.05.2012, 12:30 7
Лучший ответ Сообщение было отмечено как решение

Решение

Ameli, если alvk не придумал никаких других хитростей, то в данном случае используются свойства объекта Подчиненная форма Клиенты ОСНОВНЫЕ ПОЛЯ и ПОДЧИНЕННЫЕ ПОЛЯ.
В свойство ОСНОВНЫЕ ПОЛЯ прописывается имя поля со списком (КритОКПО), а в свойство ПОДЧИНЕННЫЕ ПОЛЯ имя поля, по которому осуществляется фильтр (КодКлиента)
3
mpot
13.06.2012, 15:14 8
Очень крутой способ, спасибо!

Подскажите пожалуйста, как еще можно реализовать фильтр по множественному выбору значений одного поля?
То есть, если нужно выбрать сразу несколько кодов ОКПО?
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
13.06.2012, 15:38 9
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от mpot Посмотреть сообщение
как еще можно реализовать фильтр по множественному выбору значений одного поля?
То есть, если нужно выбрать сразу несколько кодов ОКПО?
К примеру создать на форме список(поставив в свойствах списка Несвязное выделение - Со связным выбором) с ОКПО.
И менять источник записей в зависимости от выбранных значений в списке.

См. приложение.
Зажав Ctrl выбираешь в списке несколько ОКПО, во втором списке данные будут отфильтрованы.
Вложения
Тип файла: rar db_ОКПО.rar (14.6 Кб, 2031 просмотров)
7
mpot
13.06.2012, 17:45 10
Agapov_stas, нереально круто.
Огромное спасибо.
0 / 0 / 0
Регистрация: 21.06.2012
Сообщений: 3
21.06.2012, 11:10 11
Цитата Сообщение от Agapov_stas Посмотреть сообщение
К примеру создать на форме список(поставив в свойствах списка Несвязное выделение - Со связным выбором) с ОКПО.
И менять источник записей в зависимости от выбранных значений в списке.
Добрый день.
выбор работает только с числовым значением поля ОКПО. Можно ли сделать так, что бы ОКПО было текстовым с возможностью частичного ввода(LIKE"*ОКПО*")? Если не затруднит выложите пример.
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
21.06.2012, 15:28 12
Цитата Сообщение от vikroma Посмотреть сообщение
выбор работает только с числовым значением поля ОКПО. Можно ли сделать так, что бы ОКПО было текстовым
Да, можно.(см.вложение)
Цитата Сообщение от vikroma Посмотреть сообщение
с возможностью частичного ввода(LIKE"*ОКПО*")
Не понял...
ИЛИ выбирать несколько значений(хоть числовых, хоть текстовых, не важно)
ИЛИ при вводе(т.е. событие Change поля) значения в поле менять значения в списке..

Что именно?

Или Вы имеете ввиду, что:
1. Выбрать несколько значений ОКПО
2. Вводя во второе поле значение, фильтровать исходя из УЖЕ выбранных ОКПО?
Вложения
Тип файла: rar db_ОКПО.rar (12.7 Кб, 380 просмотров)
1
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
21.06.2012, 16:13 13
Если все же нужно, чтобы фильтрация одновременно была(т.е. по другому полю включая выделенные ОКПО), то вот..
Вложения
Тип файла: rar db_ОКПО_2.rar (14.0 Кб, 576 просмотров)
1
0 / 0 / 0
Регистрация: 21.06.2012
Сообщений: 3
21.06.2012, 17:47 14
пока не разобрал почему у меня в первом случае не выходило с текстом.
я пытаюсь вместо окпо подставить значения из другой таблицы, но мне надо чтоб выбиралось значения содержащие часть данных. если брать пример из последней программы, мне надо чтоб были все ОКПО содержащие "ук" и "е". Или "1" и "2" и "3у".
С уважением Виктор.
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
21.06.2012, 18:37 15
Цитата Сообщение от vikroma Посмотреть сообщение
мне надо чтоб были все ОКПО содержащие "ук" и "е". Или "1" и "2" и "3у".
Не знаю, зачем, но так что ли?(см.вложение)
Вложения
Тип файла: rar db_ОКПО_3.rar (13.4 Кб, 1058 просмотров)
1
0 / 0 / 0
Регистрация: 21.06.2012
Сообщений: 3
22.06.2012, 10:20 16
Agapov_stas, Вы гений!
именно то что надо.
у меня есть таблица с 100 000 записей и там надо находить данные с тем или иным содержанием.
при этом поиски периодические, с добавлениями. Ваш вариант самый лучший для таких поисков.
Огромное спасибо за помощь.
С уважением Виктор.
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
22.06.2012, 10:24 17
Цитата Сообщение от vikroma Посмотреть сообщение
у меня есть таблица с 100 000 записей и там надо находить данные с тем или иным содержанием.
Виктор, вероятно, что есть и лучше(быстрее по выполнению) способ.
Это был лишь вариант..

P.S. в строчке:
Visual Basic
1
a = " SELECT Таблица1.ОКПО, Таблица1.Поле1, Таблица1.Поле2 FROM Таблица1 WHERE 1=1 AND " & " " & SelToStr(Me.Список0, 0)
1=1 и AND можно убрать, лишнее..
Visual Basic
1
a = " SELECT Таблица1.ОКПО, Таблица1.Поле1, Таблица1.Поле2 FROM Таблица1 WHERE " & " " & SelToStr(Me.Список0, 0)
1
20 / 20 / 0
Регистрация: 22.08.2012
Сообщений: 103
22.08.2012, 10:37 18
Цитата Сообщение от alvk Посмотреть сообщение
А вот тоже самое, только без единой строчки кода и даже без использования запроса
Спасибо! А как организовать подобнейший же поиск, но по нескольким критериям отбора.
При чем, необходимо отображение всех записей, и при выборе параметров поиска производилась автоматическая фильтрация?
Поля поиска: Населенный пункт, цена ОТ-ДО, количество комнат ОТ - ДО
0
Эксперт MS Access
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
22.08.2012, 11:22 19
Цитата Сообщение от paradogs Посмотреть сообщение
А как организовать подобнейший же поиск, но по нескольким критериям отбора.
При чем, необходимо отображение всех записей, и при выборе параметров поиска производилась автоматическая фильтрация?
Поля поиска: Населенный пункт, цена ОТ-ДО, количество комнат ОТ - ДО
Использовать удобнейший инструмент Основные поля/Подчиненные поля (LinkMaster/ChildFields) не получится, поскольку задаются интервалы. Удобно, в данном случае, сформировать динамический запрос в коде и задать его SQL-строку строку свойству RecordSource подчиненной формы.
Формирование запроса, например так
Visual Basic
1
2
3
4
5
6
7
dim s, p
if isnull(me.[Населенный пункт]) then p="True" else p="[Населенный пункт]='" & me.[Населенный пункт] & "'"
s="select * from Таблица " _
& " where " & p _
& " and ([Цена] between " & nz(me.[ЦенаОТ],0) & " and " & nz(me.[ЦенаДО], 9999999999)) _
& " and ([Количество комнат] between " & nz(me.[Количество комнатОТ],0) & " and " & nz(me.[Количество комнатДО],100)) 
me.МояПодчиненнаяФорма.Form.RecordSource=s
Этот код можно поместить на кнопку или на процедуру AfterUpdate каждого из контролов условий формы

Функция NZ здесь применена для выполнения условия показывать все, если какой-то параметр не выбран.
Код для населенного пункта также учитывает возможность выбрать все, если он не задан.

Имена контролов формы и полей таблицы следует исправить на истинные.

И последнее. Вместо текстового имени населенного пункта, лучше использовать его числовой код из справочника населенных пунктов. Если такого справочника нет, надо его создать. Иначе вас ждут неожиданные и трудноуловимые ошибки в разном написании одного и того же пункта
1
alexman
23.09.2012, 19:30 20
Цитата Сообщение от alvk Посмотреть сообщение
А вот тоже самое, только без единой строчки кода и даже без использования запроса
как реализовали без запроса?
23.09.2012, 19:30
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
23.09.2012, 19:30
Помогаю со студенческими работами здесь

Создание формы для редактирования таблицы
Есть задача на создание формы для редактирования шедуллера БД. Таблицу на SQL и процедуры...

Копирование данных одного поля из разделенной формы (таблицы) в нужные записи другой таблицы
Здравствуйте! Добрый вечер! Подскажите пожалуйста, как из разделенной формы (в которой после...

Перенос id-а открытой записи из Формы 1 в источник записи для Формы 2
Есть форма 1, в ней есть такое поле как id - уникальный идентификатор записи и набор многих...

Выбрать по 1 записи из таблицы 2 для каждой записи из таблицы 1
В таблице Document_Action по несколько записей для некоторых (не для всех) записей из таблицы...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru