1

Тема: VBS поиск в Recordset

На сколько я понимаю, seek не заработает
Какие есть альтернативы?

C:\temp>type ab.vbs
Set UsersIT = CreateObject("ADODB.Recordset")
    UsersIT.Fields.Append "User",200,150
    UsersIT.Open

    UsersIT.AddNew
    UsersIT("User") = "123"
    UsersIT.Update

    UsersIT.AddNew
    UsersIT("User") = "456"
    UsersIT.Update

x = "123"
UsersIT.Seek "=", x
 If UsersIT.NoMatch Then
    MsgBox "No"
 Else
    MsgBox "Yes"
 End If

C:\temp>cscript ab.vbs
Сервер сценариев Windows (Microsoft R) версия 5.8
c Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.

C:\temp\ab.vbs(14, 1) ADODB.Recordset: Текущий поставщик не поддерживает необходимый интерфейс для функции Index.

2

Re: VBS поиск в Recordset

На сколько я понимаю, seek не заработает sad

Правильно понимаете — How to use the Seek method with ActiveX Data Objects (ADO) against a Jet recordset:

Additionally, you can use the Seek method only when a recordset is accessing the table directly. In this example, the recordset is instructed to access the table directly by the adCmdTableDirect argument in the Open method. You cannot use the Seek method on objects such as queries and linked tables. You can use the Seek method only on native Microsoft Jet tables. If your database contains linked tables, you can open an external connection to the back-end database that stores the table, and then use the Seek method directly on the table.

Какие есть альтернативы?

А Вы расскажите глобальную цель. Я уж не припомню сколько .Seek не пользовал.

3

Re: VBS поиск в Recordset

alexii пишет:

А Вы расскажите глобальную цель. Я уж не припомню сколько .Seek не пользовал.

Цель простая. Есть набор записей. Нужно проверить, есть ли конкретная фамилия в этом наборе. Если есть - одно. Если нет - другое. Тупо перебором - долго imho.

4

Re: VBS поиск в Recordset

Есть набор записей.

Откуда он берётся?

Update: Если извне — используйте условия в запросе SQL. Если, как в примере, формируется «ручками» — свойство «.Filter». И там, и там результат — в свойстве «.RecordCount».

Option Explicit

Const adFilterNone = 0

With WScript.CreateObject("ADODB.Recordset")
    .Fields.Append "User",200,150
    .Open
    
    .AddNew : .Fields.Item("User") = "123"
    .AddNew : .Fields.Item("User") = "456"
    
    .Filter = "User='123'"
    WScript.Echo .RecordCount
    
    .Filter = "User='456'"
    WScript.Echo .RecordCount
    
    .Filter = "User='789'"
    WScript.Echo .RecordCount
    
    .Filter = adFilterNone
    WScript.Echo .RecordCount
End With

WScript.Quit 0

5

Re: VBS поиск в Recordset

Спс )