Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/41: Рейтинг темы: голосов - 41, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 03.04.2008
Сообщений: 39

Как сотворить поиск записи по базе Access???

03.04.2008, 11:04. Показов 7996. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, кто знает как сотворить поиск записи по базе Access?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2008, 11:04
Ответы с готовыми решениями:

Исчезли последние записи в базе Access
Добрый день! Есть 6 клиентских компьютеров + 1 серверный. На серверном лежат базы данных Access к которым идет обращение с клиентских...

Поиск по Базе Access
Всем привет друзья, у меня такой вопрос как реализовать поиск по базе сразу по нескольким ключам? Т.е к примеру есть вот такая таблица: ...

поиск по базе Access
Всем привет. Использую Visual C++ 6.0. Делаю приложение с использованием базы данных. Нашел вот такой код. void...

14
Ghost
03.04.2008, 11:08
чего? неясен вопрос. Если надо искать по всем таблицам - ищи по всем таблицам.
0 / 0 / 0
Регистрация: 03.04.2008
Сообщений: 39
03.04.2008, 11:16  [ТС]
Да нет, просто я пока только изучаю VB, а срочно нужно сделать поиск записи в Access. Мне нужен простой пример кода, как строится поиск записи по базе, а дальше я разберусь. Подскажите, если не не сложно. База Access - .mdb файл.
0
Ghost
03.04.2008, 11:49
Что значит - поиск записи по базе? Поиск строки в таблицЕ или таблицАХ???
0 / 0 / 0
Регистрация: 03.04.2008
Сообщений: 39
03.04.2008, 12:52  [ТС]
поиск строки в таблице
0
Ghost
03.04.2008, 13:51
Конкретного поля или целой строки?

Для поля
Code
1
2
3
4
5
    Dim vx as Variant
    vx = DLookUp('ИмяПоля','ИмяТаблицы'[,'Условие'])
 
условие без WHERE
    например, vx = DLookUp('Name','Users','UserID = 12345')
для строки
Code
1
2
3
4
    Dim rs as DAO.RecordSet
    set rs = CurrentDb.OpenRecordset('Users',dbOpenDynaset)
    rs.Filter = '[UserID] =  12345'
    set rs = rs.OpenRecordset
Такие пироги
0 / 0 / 0
Регистрация: 03.04.2008
Сообщений: 39
03.04.2008, 14:02  [ТС]
Большое Вам человеческое спасибо
0
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 181
03.04.2008, 14:24
Можно воспользоваться FindFirst

Value - что ищем
в dbsearch получаем ID
поля в табл: [ID], [Name]

Set Database = OpenDatabase('x:...???.mdb')
'запросом тоже можно фильтровать используя SELECT ... FROM ... WHERE ...
SQL = 'SELECT Names.ID, Names.Name FROM [Names];'
Set Recordset = Database.OpenRecordset(SQL)
Criteria = 'Name = '' & Value & '''
With Recordset
.FindFirst Criteria
If .NoMatch Then
dbsearch = 0
Else
dbsearch = !ID
End If
End With
0
Ghost
03.04.2008, 14:56
тоже честный способ.
Неплохо подходит, когда надо сделать 10-1000 поисков - по крайней мере на 1000 поисках будет быстрее DLookup'а и серии одиночных поисков моими (вышеописанными, т.е. переоткрытия рекордсета) методами.
При необходимости провести > 10000 поисков лучше уточнить условия задачи - т.к. все предложенные способы покажут НИЗКОЕ шустробыстрие.
Ghost
03.04.2008, 15:00
да, в догонку - недоглядел.
Возвращать лучше Null, а не 0 ))))
Видел я как-то базу на Access, где в ПКе был 0 - вот повеселиться-то можно было бы )))
А уж для SQL Server 0 в PK сделать - как 2 пальца.

Резюм:
Для одиночного поиска поля - лучше DLookUp
Для поиска СТРОКИ - или переоткрытие с фильтром (чуть дольше, чем ) или поиск по FindFirst (чуть быстрее)
Для массового поиска - только FindFirst
Для очччень массового - тут надо логику писать на SQL - такая переделка сократила у меня время работы проги с ЧАСОВ до МИНУТ (да, код на VBA писал не я)
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 181
03.04.2008, 16:22
Насчёт 0 согласен. К тому-же если возврат будет не ID(Primary Key) (при поиске значение всегда будет не NULL) а другое поле.
Но пример на то и пример - не есть готовое решение. Можно позволить вольности. Обработку возможных ошибок тоже вставлять надо.
Глядишь и написали бы целое НЕЧТО тут )

'Для очччень массового ' логика простая - дополнительно фильтруем.
Не SQL = 'SELECT Names.ID, Names.Name FROM [Names];'
а SQL = 'SELECT Names.ID, Names.Name FROM [Names] WHERE (((Names.Name)=' & DQUOTE & Value & DQUOTE & '));' (где DQUOTE = '''')

C уважением,

ma3ai
0
Ghost
03.04.2008, 18:03
хмммм....

под оччччень массовым я понимал работу с 20000 тыс записей в одной таблице, к которой прсобачено еще так 5 таблиц с еще по 10000 тыс записей ))

И тогда вспоминаем про запросы, которые (вот зуб даю ) работают на потоке (см. описанный выше объем данных) ну гораааааздо быстрее ))
А если я по пьяной лавочке )) и индексов грамотно напихаю, то тогда просто даже кофе попить не успею ))))
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 181
03.04.2008, 18:23
Дык то оно и есть ... можно и 500000 раз такое дело ...

P.S. но кофе много не пей - говорят это вредно
0
0 / 0 / 0
Регистрация: 03.04.2008
Сообщений: 39
07.04.2008, 08:08  [ТС]
В общем, мужики, получилось во так:

Private Sub Поле_Поиск_AfterUpdate()
If Len(Trim(Поле_поиск)) <> 0 Then
Организация.SetFocus
DoCmd.FindRecord Trim(Поле_поиск), acAnywhere, False, acSearchAll, False, acCurrent, True
End If
End Sub

Работает как надо. Спасибо за консультацию.
0
Ghost
07.04.2008, 17:13
хммммммм........
Ню-ню, надо было уточнять, ГДЕ ищем - в БАЗЕ или НА ФОРМЕ.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.04.2008, 17:13
Помогаю со студенческими работами здесь

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

Поиск данных в базе access
Всем доброго всемени суток . Хочу проект перенести из Эксель в полноценное приложение.)) пользуюсь vs express. Базы данных уже...

Поиск по названию в базе Access
Доброго времени суток камрады ... Вынужден снова просить помощи.... Есть база access с несколькими таблицами, как можно организовать...

Быстрый поиск по базе в Access
Имеется ленточная форма и отдельное поле для ввода. Как сделать так, чтобы когда вводим в это поле слово, то текущая запись изменялась в...

Поиск и сравнение в базе Access
добрый вечер. Как привязать базу данных Access к форме, нашел информацию(чтение и редактирование) но как сделать поиск не могу...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru