Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324

Интересный вариант поиска существующей записи

19.02.2015, 18:33. Показов 1353. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как реализовать такой вариант?

--есть одиночная форма, данные из таблицы "работники"
--при вводе нового работника, в поле "фамилия"(простое поле), выпадал бы список в котором отображалась бы информация о работниках по первым буквам!
--информация такая: фамилия, имя отчество и дата рождения работника. и если такой уже существует, то просто выбрать его из списка, а если нет, то добавить нового!

понимаю подобных задач много и для меня они не секрет, весь фокус в том что эти действия должны выполняться на лету(!)

--юзер берет паспорт работника, вводит фамилию, Иванов,
--выпадает список со всеми Ивановыми,
--юзер сравнивает, нашего нет.
--По клавише энтер (таб или просто мышью), переходит к следующему полю для заполнения!
--а если наш есть то просто щелчком мыши выбирает его и остальные поля заполняются данными автоматически.

в этих операциях не должно быть никаких кнопок, или других элементов управления.

заранее всем спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.02.2015, 18:33
Ответы с готовыми решениями:

Обновление существующей записи
Здравствуйте. :) Нужно делать запись в существующей в таблице в выбранной строке из "Форма1" в которую выводятся данные по...

Insert существующей записи
Стряпаю прогу на C# , суть в том что она сканит компы в домене и заносит в БД информацию об установленном ПО на каждом ПК. Проблема в том,...

Заполнение полей по ранее существующей записи
Имеется код для формы с помощью, которого при внесении в поле "№паспорта" , если таковой уже имеется в БД, заполняются остальные поля...

9
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
19.02.2015, 19:32
sekonya, смотрите вложение. Если в поле со списком нет фамилии, вызовется форма Сотрудники с написаной новой фамилией
Вложения
Тип файла: rar Список.rar (19.3 Кб, 15 просмотров)
1
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
19.02.2015, 20:16  [ТС]
mobile, мне нужно именно так как описано в первом посте.
с чем это связанно? на вашем примере, в поле со списком мы вводим фамилию Иванов, там их несколько, но того кого мне надо нет, а соответственно и форма с новым сотрудником не откроется. По этому я хочу чтобы проверка шла в самой форме ввода, и именно в поле фамилия(!)

Добавлено через 5 минут
если на форме ввода под полем фамилия спрятать поле со списком, и при вводе в поле фамилия набора букв поле со списком бы раскрывалось, такое возможно?

Добавлено через 8 минут
а нет, пока поле со списком не получит фокус сделать ничего не возможно, но если попробовать элемент список?
при вводе если есть какой-то результат, делать его видимым и в зависимости от кол-ва совпадений менять его высоту, как вы на такое решение смотрите?

Добавлено через 18 минут
mobile, а как в вашем коде узнать кол-во записей результата?
Visual Basic
1
2
3
4
5
6
7
8
9
Dim s, r, i, t
    Dim rst As DAO.Recordset
    t = Me.cmdSotr.Text
    s = "select * from Сотрудники " _
    & " where Фамилия & Имя & отчество like '*" & t & "*'"
    Me.cmdSotr.RowSource = s
    Me.cmdSotr.SelStart = Len(t & "")
    Me.cmdSotr.SelLength = 0
    Me.cmdSotr.Dropdown
0
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
19.02.2015, 22:38  [ТС]
mobile, как то вот так(см. вложение) только чтобы все было на VBA
Вложения
Тип файла: rar Список.rar (54.7 Кб, 8 просмотров)
0
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
19.02.2015, 22:39  [ТС]
форма сотрудники, попробуйте создать новую запись
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
20.02.2015, 22:28
sekonya, ставить поле со списком на основную сущность в справочнике это очень опасно, чревато множеством случайных ошибок. Людям свойственно смотреть, что в списке и забывать при этом, что они находятся на уже введенной записи. Начнут смотреть, выберут кого-то, а потом паника - ведь они забыли кто там был.

Смотрите другой вариант заполнения и просмотра справочника с поддержкой Вашей просьбы о просмотре однофамильцев - в главной форме подформа справочника и список внизу. В этом списке фильтруются сотрудники, чья фамилия начинается на фамилию в справочнике (Иванов: Ивановский - Иванова - Иванович и т.д)
Переход на новую запись выдает в списке внизу всех сотрудников. Двойной клик по списку - переход к карточке выбранного сотрудника.
Вложения
Тип файла: rar Список.rar (30.2 Кб, 10 просмотров)
1
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
21.02.2015, 07:36  [ТС]
mobile, а что за процедура у вас на загрузке формы стоит?
Visual Basic
1
2
3
4
5
6
Private Sub Form_Load()
    If Len(Me.OpenArgs & "") > 0 Then
        Me.Recordset.AddNew
        Me.Фамилия = Me.OpenArgs
    End If
End Sub
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
21.02.2015, 08:44
Это осталось от прежнего варианта. Если параметр OpenArgs формы не пуст, то значит форма была вызвана для создания карточки нового сотрудника. В то же время процедура позволяет открывать форму автономно и не будет ошибок и не будет перехода на новую запись.

Вас устраивает новый вариант?
1
609 / 388 / 8
Регистрация: 14.04.2011
Сообщений: 1,324
21.02.2015, 08:51  [ТС]
да, вариант хороший! а вот про вот эту процедуру на загрузке формы, можете подробнее?
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
21.02.2015, 09:26
Лучший ответ Сообщение было отмечено sekonya как решение

Решение

Посмотрите процедуру Отсутствие в списке (NotInList) поля со списком в форме F1. Там анализирутся введенная фамилия и если такой нет в списке, то вызывается форма Сотрудники для пополнения списка. Но чтобы еще раз не писать фамилию, ее надо передать в форму Сотрудники. Для этого используется параметр OpenAgrs в команде вызова формы. Это последний позиционный параметр в OpenForm. При вызове ему задается значение параметра NewData процедуры NotInList, который содержит значение, отсутствующее в списке:
Visual Basic
1
DoCmd.OpenForm "Сотрудники", , , sotr, acFormAdd, acDialog, NewData
На загрузке формы Сотрудники, как я уже говорил, проверяется OpenAgrs. Если он не пустой, значит форма была вызвана для пополнения списка сотрудников и в OpenAgrs находится фамилия нового сотрудника. Следовательно, надо создать новую запись и вставить в нее фамилию, написанную ранее в поле со списком в форме F1. Что и делается.

Кстати, в команде вызова формы Сотрудники есть небольшая ошибка. Параметр sotr лишний, остался от чего-то, не помню чего. Надо изменить вызов
Visual Basic
1
DoCmd.OpenForm "Сотрудники", , , , acFormAdd, acDialog, NewData
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2015, 09:26
Помогаю со студенческими работами здесь

Ограничение на ввод дублера (уже существующей) записи в ПОЛЕ
Форумчане! Помогите создать процедуру, которая проверяет было ли такое (текстовое) значение уже введено в поле "Чип_Обозн" ...

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

Запрет дублирования уже существующей записи в таблице по "поле1" вводимым из формы?
Уважаемые форумчане? Подскажите, как запретить создание новой записи в форме при условии уже существующей аналогичной. При этом поле в...

Среднее арифметическое (интересный вариант)
В общем суть в том, что у нас есть бочки с жидкостью (Для понимания пусть будет жидкий азот) допустим 3 штуки 8л 4л 2л И...

Добавление записи(подстроки) к существующей записи(строке)
Предположим в таблице есть одно поле имя его - letters. В таблице существует одна запись где поле: letters = А. Возможно ли одним...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru