powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADO .Поиск записи. Как использовать seek ?
20 сообщений из 20, страница 1 из 1
ADO .Поиск записи. Как использовать seek ?
    #32406567
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В DAO у меня с этим нет проблемы. А вот в ADO что то не идет!

Для быстрого перехода / поиска записи надо использовать индекс. метод seek.
У меня что то не получается.
Если можно приведите небольшой пример.
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406572
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из Гетца
Создание набора записей поддерживающего метод Seek

Код: plaintext
1.
rst.CursorLocation=adUseServer
rst.Open  "Customers" , CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect  
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406574
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно.
Ну а дальше .
rst.index="PrimaryKey"
rst.seek "id='" & field.value &"'"
Так ?
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406597
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rst.seek "ляляля", adSeekFirstEq
он ищет во всех полях составляющих индекс
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406601
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во первых c:\WINDOWS\Help\ADO210.CHM - справка по ADO

И некоторые подробности:
метод Open объекта Table должен содержать adCmdTableDirect

Ex:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Public CnPro As ADODB.Connection
Public tIni As ADODB.Recordset
...
Set CnPro = New ADODB.Connection
With CnPro
    .Provider =  "Microsoft.Jet.OLEDB.4 . 0 "
    .Mode = adModeReadWrite
    .ConnectionString =  "File Name=AIE.udl;" 
    .Open
End With

Set tIni = New ADODB.Recordset
With tIni
     .ActiveConnection = CnPro
     .Source =  "tIni" 
     .CursorType = adOpenKeyset
     .LockType = adLockOptimistic
     .CursorLocation = adUseServer
     .Open , , , , adCmdTableDirect
     .Index =  "IniNm" 
End With
...
tIni.Seek  "CurTab" , adSeekFirstEQ
...


для поиска составным ключом используется такая конструкция:
Код: plaintext
1.
tIni.Index =  "IniNmVal" 
tIni.Seek Array( "CurTab" ,  4 ), adSeekFirstEQ
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406606
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята , спасибо, то что надо!
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406617
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверка после seek
if rst.EOF then
msgbox "нeту!"
else
msgbox rst.[field]
end if
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406624
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alexander G
В DAO есть свойство NoMatch, оно подсказывает результат поиска.
А в ADO нужно выходит просто проверить rst.EOF.
Кстати , а почему не rst.EOF=True ?
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406634
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обращаемся к свойству, оно вернет True или False
Можно и =True, это нагляднее, но так короче.
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406705
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADO 2.7 Library

Пишет ошибку "Текущий проводник не поддерживает необходимый интерфейс для функции индекс". Что тут не так то?

Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Public DbFile As String

Public Sub ConnectToDB()
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
db_file = App.Path + "\baza.mdb"

With conn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db_file
.Mode = adModeReadWrite
conn.Open
End With

With rs
.ActiveConnection = conn
.Source = "MyTable"
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.CursorLocation = adUseServer
.Open , , , , adCmdTableDirect
.Index = "MyKey"
End With

End Sub

Затыкается на .index
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406743
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где же ты? Alexander G
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406812
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только что проверил твой код для другой БД - всё работает.
Вывод: проблема с базой данных, или с Jet
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406832
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 marvan
Спасибо за проверку!
Ой и ё! Что же делать?
/ Кстати это все в VB 6.0 /
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406860
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй заново установить mdac
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406879
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 marvan
Все нашел ошибку. Вот так верно. И метод Seek заработал по индексу.

Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Public DbFile As String

Public Sub ConnectToDB() '
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
db_file = App.Path + "\baza.mdb"

With conn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db_file
.Mode = adModeReadWrite
conn.Open
End With

With rs
.ActiveConnection = conn
.Source = "MyTable" 'имя таблицы в базе
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.CursorLocation = adUseServer
.Open , , , , adCmdTableDirect
.Index = "PrimaryKey" 'вот здесь ошибка была
End With
'---------------------------------------------
rs.Seek str(MyField.Text)
'------------------------------------------------
MsgBox (rs(0))
End Sub

Теперь на .index не затыкается.

А кстати с каким mdac -ом встает Microsoft.Jet.OLEDB.4.0
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406905
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я ушел домой, дите кормить :) разница-то в 9 часовых поясов. Только сейчас из дома заглянул. Рад что все завершилось успешно.
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406913
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Microsoft.Jet.OLEDB.4.0" не менялся с версии 2.1
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32406931
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alexander G

Так у Вас сейчас вечер?
Дитё это хорошо. Пусть растет большой и здоровый!

2 marvan

Вот еще что заметил кое что.
Если база в формате Access 2000 все пашет, а если в формате Access 97 затыкается. Пишет ошибку "Текущий проводник не поддерживает необходимый интерфейс для функции индекс".

Ну это уже не имеет значения. Главное что работает под 2000.

Насчет Jet 4.0 , я понял.
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32407024
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык, в сведениях откуда - у меня соответствует. А дите - 11 класс :), куда расти
...
Рейтинг: 0 / 0
ADO .Поиск записи. Как использовать seek ?
    #32407069
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для родителей дети есть дети, все равно какого возраста, дитё есть дитё!
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADO .Поиск записи. Как использовать seek ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]