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

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

Код: plaintext
1.
rst.CursorLocation=adUseServer
rst.Open  "Customers" , CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect  
...
Рейтинг: 0 / 0
12.02.2004, 09:05
    #32406574
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
Ясно.
Ну а дальше .
rst.index="PrimaryKey"
rst.seek "id='" & field.value &"'"
Так ?
...
Рейтинг: 0 / 0
12.02.2004, 09:26
    #32406597
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
rst.seek "ляляля", adSeekFirstEq
он ищет во всех полях составляющих индекс
...
Рейтинг: 0 / 0
12.02.2004, 09:28
    #32406601
marvan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
Во первых 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
12.02.2004, 09:32
    #32406606
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
Ребята , спасибо, то что надо!
...
Рейтинг: 0 / 0
12.02.2004, 09:39
    #32406617
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
проверка после seek
if rst.EOF then
msgbox "нeту!"
else
msgbox rst.[field]
end if
...
Рейтинг: 0 / 0
12.02.2004, 09:46
    #32406624
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
2 Alexander G
В DAO есть свойство NoMatch, оно подсказывает результат поиска.
А в ADO нужно выходит просто проверить rst.EOF.
Кстати , а почему не rst.EOF=True ?
...
Рейтинг: 0 / 0
12.02.2004, 09:54
    #32406634
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
Обращаемся к свойству, оно вернет True или False
Можно и =True, это нагляднее, но так короче.
...
Рейтинг: 0 / 0
12.02.2004, 10:38
    #32406705
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
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
12.02.2004, 10:58
    #32406743
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
Где же ты? Alexander G
...
Рейтинг: 0 / 0
12.02.2004, 11:35
    #32406812
marvan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
Только что проверил твой код для другой БД - всё работает.
Вывод: проблема с базой данных, или с Jet
...
Рейтинг: 0 / 0
12.02.2004, 11:44
    #32406832
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
2 marvan
Спасибо за проверку!
Ой и ё! Что же делать?
/ Кстати это все в VB 6.0 /
...
Рейтинг: 0 / 0
12.02.2004, 11:59
    #32406860
marvan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
попробуй заново установить mdac
...
Рейтинг: 0 / 0
12.02.2004, 12:08
    #32406879
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
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
12.02.2004, 12:23
    #32406905
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
А я ушел домой, дите кормить :) разница-то в 9 часовых поясов. Только сейчас из дома заглянул. Рад что все завершилось успешно.
...
Рейтинг: 0 / 0
12.02.2004, 12:26
    #32406913
marvan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
"Microsoft.Jet.OLEDB.4.0" не менялся с версии 2.1
...
Рейтинг: 0 / 0
12.02.2004, 12:33
    #32406931
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO .Поиск записи. Как использовать seek ?
2 Alexander G

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

2 marvan

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

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

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


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