monrus
Опытный
Offline
|
|
« : 10-02-2007 08:16 » |
|
Как сделать, чтобы при вводе данных в поле на форме - находилась похожая строка в базе и выводилась на форму КАК В СТРОКЕ СОСТОЯНИЯ ФОРМЫ В ACCESS 2007?
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #1 : 10-02-2007 14:24 » |
|
monrus, после каждого введенного символа выполняй поиск с LIKE. Только какая от этого польза?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #2 : 10-02-2007 17:19 » |
|
Просто у меня на форме в Акцессе 2007 есть поле "поиск" (см. рисунок - №1), где по первым введенным буквам отображается на форме нужная запись. А в Акцессе 2003, который на работе - такого поля нет. Хотелось бы такое же реализовать с обычным полем (см. рис.- №2). Чтобы не нажимать постоянно для поиска Ctrl+F
|
|
|
Записан
|
|
|
|
HandKot
Молодой специалист
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
Опытный
Offline
|
|
« Ответ #4 : 12-02-2007 15:28 » |
|
HandKot, большое спасибо!!!
|
|
|
Записан
|
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #5 : 13-02-2007 15:48 » |
|
А как сделать чтобы он во всех полях искал?
|
|
|
Записан
|
|
|
|
HandKot
Молодой специалист
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
Опытный
Offline
|
|
« Ответ #7 : 14-02-2007 13:58 » |
|
спасибо. это получается надо все поля прописывать?
|
|
|
Записан
|
|
|
|
HandKot
Молодой специалист
Offline
|
|
« Ответ #8 : 15-02-2007 06:12 » |
|
спасибо. это получается надо все поля прописывать?
а вы как думали Если взять, к примеру вас, тоже ведь глазами будете пробегать все поля а комп ничем не лучше, по крайней мере, телепатией и предсказаниями не владеет
|
|
|
Записан
|
I Have Nine Lives You Have One Only THINK!
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #9 : 15-02-2007 14:14 » |
|
. Извиняюсь - я имел ввиду, чем каждый раз новое поле прописывать, можно было бы как в SQL типа all или *. Но все равно большое спасибо что помог!!!
|
|
|
Записан
|
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #10 : 22-02-2007 15:30 » |
|
Еще один вопрос - этот метод ищет в строке с первого символа. а как слелать чтобы с любогоместа в строке искал.
|
|
|
Записан
|
|
|
|
HandKot
Молодой специалист
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
Опытный
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 »
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
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 » |
|
Еще один вопрос: как можно выделять найденные символы, чтоб не шарить глазами по строкам?
|
|
|
Записан
|
|
|
|
daikmax
Гость
|
|
« Ответ #17 : 30-07-2008 22:35 » |
|
Может уже не актуально, но всетаки интересно, как сделать такойже поиск, но по двум полям, дапустим имя и фамилия???
|
|
|
Записан
|
|
|
|
daikmax
Гость
|
|
« Ответ #18 : 30-07-2008 22:38 » |
|
Может уже не актуально, но всетаки интересно, как сделать такойже поиск, но по двум полям, дапустим имя и фамилия???
задача такова: два поля даля ввода текста на поиск, сам поиск по одной колонке, только так как в примере сверху... Так сказатй поиск в реалйном времени )
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #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
Молодой специалист
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
Молодой специалист
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
Молодой специалист
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
Молодой специалист
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
Молодой специалист
Offline
|
|
« Ответ #29 : 10-06-2009 10:25 » |
|
не понял
|
|
|
Записан
|
I Have Nine Lives You Have One Only THINK!
|
|
|
|