Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2 3  Все   Вниз
  Печать  
Автор Тема: Поиск записи в Access  (Прочитано 123564 раз)
0 Пользователей и 1 Гость смотрят эту тему.
monrus
Опытный

ru
Offline Offline

« : 10-02-2007 08:16 » 

Как сделать, чтобы при вводе данных в поле на форме - находилась похожая строка в базе и выводилась на форму КАК В СТРОКЕ СОСТОЯНИЯ ФОРМЫ В ACCESS 2007?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 10-02-2007 14:24 » 

monrus, после каждого введенного символа выполняй поиск с LIKE. Только какая от этого польза?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
monrus
Опытный

ru
Offline Offline

« Ответ #2 : 10-02-2007 17:19 » 

Просто у меня на форме в Акцессе 2007 есть поле "поиск" (см. рисунок - №1), где по первым введенным буквам отображается на форме нужная запись. А в Акцессе 2003, который на работе - такого поля нет. Хотелось бы такое же реализовать с обычным полем (см. рис.- №2). Чтобы не нажимать постоянно для поиска Ctrl+F

* Буфер обмена02.gif (15.19 Кб - загружено 2286 раз.)
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #3 : 12-02-2007 06:28 » 

что-то типа этого
Код:
Private Sub MyTextBox_Change()
    Dim rst As DAO.Recordset, intI As Integer

    Set rst = Form.Recordset
    rst.FindFirst "[MyField] like '" & MyTextBox.Text & "*'"
    Debug.Print rst.NoMatch
    MyTextBox.SelStart = Len(MyTextBox.Text)
   
End Sub
« Последнее редактирование: 15-12-2007 16:23 от Алексей1153++ » Записан

I Have Nine Lives You Have One Only
THINK!
monrus
Опытный

ru
Offline Offline

« Ответ #4 : 12-02-2007 15:28 » 

HandKot, большое спасибо!!!
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #5 : 13-02-2007 15:48 » 

А как сделать чтобы он во всех полях искал?
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #6 : 14-02-2007 06:07 » 

А как сделать чтобы он во всех полях искал?
попробуйте так
rst.FindFirst "[MyField] like '" & MyTextBox.Text & "*' OR [MyField2] like '" & MyTextBox.Text & "*'"
« Последнее редактирование: 15-12-2007 16:25 от Алексей1153++ » Записан

I Have Nine Lives You Have One Only
THINK!
monrus
Опытный

ru
Offline Offline

« Ответ #7 : 14-02-2007 13:58 » 

спасибо. это получается надо все поля прописывать?
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #8 : 15-02-2007 06:12 » 

спасибо. это получается надо все поля прописывать?
а вы как думали
Если взять, к примеру вас, тоже ведь глазами будете пробегать все поля
а комп ничем не лучше, по крайней мере, телепатией и предсказаниями не владеет Улыбаюсь
Записан

I Have Nine Lives You Have One Only
THINK!
monrus
Опытный

ru
Offline Offline

« Ответ #9 : 15-02-2007 14:14 » 

Улыбаюсь. Извиняюсь - я имел ввиду, чем каждый раз новое поле прописывать, можно было бы как в SQL типа all или *. Но все равно большое спасибо что помог!!!
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #10 : 22-02-2007 15:30 » 

Еще один вопрос - этот метод ищет в строке с первого символа. а как слелать чтобы с любогоместа в строке искал.
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #11 : 26-02-2007 05:55 » 

Еще один вопрос - этот метод ищет в строке с первого символа. а как слелать чтобы с любогоместа в строке искал.
поставить символ "звездочка" в начале
Код:
rst.FindFirst "[MyField] like '*" & MyTextBox.Text & "*' OR [MyField2] like '*" & MyTextBox.Text & "*'"
« Последнее редактирование: 15-12-2007 16:26 от Алексей1153++ » Записан

I Have Nine Lives You Have One Only
THINK!
monrus
Опытный

ru
Offline Offline

« Ответ #12 : 27-02-2007 13:40 » 

Огромное спасибо!
Записан
corvin-nik
Гость
« Ответ #13 : 03-05-2007 08:20 » 

monrus, HandKot,  Везет же людям, все у них заработало. А я уже второй день бьюсь и ничего кроме ошибки 3077 (пропущен оператов в выражении) ничего не получается, если же поставить одиночные кавычки, вроде как по правилам, то вообще ничего не ищется.
Помогите пожалуста понять, что может быть не так? Изначальный пример кода не работает.
« Последнее редактирование: 03-05-2007 08:22 от corvin-nik » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #14 : 03-05-2007 13:45 » 

corvin-nik,
rst.FindFirst "[MyField] like '*" & MyTextBox.Text & "*' OR [MyField2] like '*" & MyTextBox.Text & "*'"

corvin-nik, тоже в ИЕ сидишь ? )
Записан

corvin-nik
Гость
« Ответ #15 : 03-05-2007 14:49 » 

corvin-nik,
rst.FindFirst "[MyField] like '*" & MyTextBox.Text & "*' OR [MyField2] like '*" & MyTextBox.Text & "*'"

corvin-nik, тоже в ИЕ сидишь ? )


Спасибо! Сижу, блином Билли эдак и так р-р-р-р Улыбаюсь
Записан
corvin-nik
Гость
« Ответ #16 : 03-05-2007 14:51 » new

Еще один вопрос: как можно выделять найденные символы, чтоб не шарить глазами по строкам?
Записан
daikmax
Гость
« Ответ #17 : 30-07-2008 22:35 » 

Может уже не актуально, но всетаки интересно, как сделать такойже поиск, но по двум полям, дапустим имя и фамилия???
Записан
daikmax
Гость
« Ответ #18 : 30-07-2008 22:38 » 

Может уже не актуально, но всетаки интересно, как сделать такойже поиск, но по двум полям, дапустим имя и фамилия???
задача такова: два поля даля ввода текста на поиск, сам поиск по одной колонке, только так как в примере сверху... Так сказатй поиск в реалйном времени Улыбаюсь)
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 31-07-2008 03:53 » 

daikmax, поиск по N поляд делается почти точно также, как и поиск по одному полю: ищем по первому, совпадения проверяем по остальным полям.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
daikmax
Гость
« Ответ #20 : 01-08-2008 20:16 » 

Private Sub MyTextBox_Change()
    Dim rst As DAO.Recordset, intI As Integer

    Set rst = Form.Recordset
    rst.FindFirst "[MyField] like '*" & MyTextBox.Text & "*' OR [MyField2] like '*" & MyTextBox.Text & "*'"
    Debug.Print rst.NoMatch
    MyTextBox.SelStart = Len(MyTextBox.Text)
   
End Sub

этот код выполняет поиск по двум разным полям базы, каждый раз когда я набераю символ в  один текстбокс?! Верно?
У меня немного другая задача, таблица дапустим в две колонки, 1-я имя, 2-а фамилия! Надо
идентичный поиск, если я ввел фамилию, и в базе фамилии одинаковые, то я ввожу есчо и имя!
Как сделать правелйый провеку, и возможена ли реализацыя такова поиска?!
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #21 : 04-08-2008 04:26 » 

попробуйте так
Код:
'где вводим фамилию
Private Sub MyTextBoxFamily_Change()
    Dim rst As DAO.Recordset, intI As Integer

    Set rst = Form.Recordset
    rst.FindFirst "[MyField_Family] like '*" & MyTextBoxFamily.Text & "*' AND [MyField_Name] like '*" & MyTextBoxName.Text & "*'"
    Debug.Print rst.NoMatch
    MyTextBoxFamyly.SelStart = Len(MyTextBoxFamily.Text)
End Sub

'где вводим имя
Private Sub MyTextBoxName_Change()
    Dim rst As DAO.Recordset, intI As Integer

    Set rst = Form.Recordset
    rst.FindFirst "[MyField_Family] like '*" & MyTextBoxFamily.Text & "*' AND [MyField_Name] like '*" & MyTextBoxName.Text & "*'"
    Debug.Print rst.NoMatch
    MyTextBoxName.SelStart = Len(MyTextBoxName.Text)
End Sub
Записан

I Have Nine Lives You Have One Only
THINK!
LexandrIII
Гость
« Ответ #22 : 19-11-2008 09:02 » 

А как сделать поиск, чтобы в таблице оставались толке записи, которые набираешь в отдельном поле поиска?
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #23 : 19-11-2008 10:50 » 

не совсем понятен вопрос
возможно Вы имели ввиду св-во Filtr объекта RecordSet
Записан

I Have Nine Lives You Have One Only
THINK!
LexandrIII
Гость
« Ответ #24 : 26-11-2008 11:25 » 

HandKot, возможно. Есть таблица и есть поле ввода. Мне нужно, чтобы в таблице оставались только записи соответствующие тому, что набирается в поле ввода. Соответствие допустим будет по полю Name таблицы.
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #25 : 27-11-2008 05:09 » 

на событие изменения в поле (txtFilter) ввода пишете, что-то похожее на это
sub txtFilter_Change
  myRecordset.Filtr = "Name like '" + txtFilter + "*'"
 
end sub
Записан

I Have Nine Lives You Have One Only
THINK!
EnergyUzh
Гость
« Ответ #26 : 10-06-2009 07:25 » 

Код:
Private Sub Поиск_Change()
Dim rst As DAO.Recordset, intI As Integer
    Set rst = Form.Recordset
    rst.FindFirst "Инструкции like '*" & Поиск.Text & "*'"
    Debug.Print rst.NoMatch
    Поиск.SelStart = Len(Поиск.Text)
End Sub

Выбивает ошибку 3070 "Инструкции" не распознается ядром базы даных Microsoft Jet
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #27 : 10-06-2009 10:08 » 

 а такое поле вообще есть в таблице/рекордсете ?

так же попробуйте обернуть "брикетами"
Код:
rst.FindFirst "[Инструкции] like '*" & Поиск.Text & "*'"
Записан

I Have Nine Lives You Have One Only
THINK!
EnergyUzh
Гость
« Ответ #28 : 10-06-2009 10:16 » 

Спасибо, не заметил ошибку в написании. И еще одно можно ли как-то переделать этот код что бы в поле можно было писать не только одно слово, и пользоваться пробелом...
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #29 : 10-06-2009 10:25 » 

не понял
Записан

I Have Nine Lives You Have One Only
THINK!
Страниц: [1] 2 3  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines