- Файловая система
- Регулярные выражения
- Базы данных
- Двоичные данные
- Полезные функции

Получение данных с помощью объекта Recordset
Объект ADODB.Recordset хранит в себе записи, полученные из таблиц реляционных баз данных (таких как MS SQL Server, Oracle, MySQL и тд). Помимо коллекции записей (т.е. строк полученной таблицы) Recordset содержит коллекцию именованных полей Fields (столбцов таблицы), позволяющих обращаться к данным внутри записей.
Создание объекта Recordset – самый простой способ получить данные из базы. Для этого нужно вызвать метод Open, передав ему в качестве параметров строку соединения c БД и строку SQL-запроса.
В случае успешного выполнения запроса и получения непустого множества записей, указатель текущей записи будет установлен на первую из них.
Пример:
Set objRecordSet = CreateObject("ADODB.Recordset")
objRecordSet.CursorLocation = adUseClient'параметр необходим для корректного отображения RecordCount
'запрос возвращает список всех клиентов, кол-во и общую стоимость их заказов
QueryStr =" SELECT c.ContactName," & _
"(SELECT COUNT(*) FROM Orders o WHERE o.CustomerID=c.CustomerID) AS OrdersCount," & _
"(SELECT SUM(od.UnitPrice) FROM [Order Details] od INNER JOIN Orders o ON od.OrderID=o.OrderID WHERE o.CustomerID=c.CustomerID) AS SumPrice " & _
" FROM Customers c ORDER BY c.ContactName"
Call objRecordSet.Open(QueryStr, ConnectStr)'выполнение запроса
Do While Not objRecordSet.EOF
cn = objRecordSet("ContactName")
oc = objRecordSet("OrdersCount")
sp = objRecordSet("SumPrice")
WScript.Echo "ContactName: " & PadLeft(cn, "", 23) & " OrdersCount: " & PadLeft(oc, "", 2) & " SumPrice: $" & sp
objRecordSet.MoveNext
Loop
WScript.Echo "RecordCount: " & objRecordSet.RecordCount
objRecordSet.Close
Функция getRecordsetRows принимает на вход строку запроса и строку соединения, возвращая двумерный массив, содержащий результат выполнения запроса.
Function getRecordsetRows(QueryStr, ConnectionStr)
Set objRecordSet = CreateObject("ADODB.Recordset")
Call objRecordSet.Open(QueryStr, ConnectionStr)'выполнение запроса
getRecordsetRows = objRecordSet.GetRows()
objRecordSet.Close
End Function
Пример:
QueryStr =" SELECT c.ContactName," & _
"(SELECT COUNT(*) FROM Orders o WHERE o.CustomerID=c.CustomerID) AS OrdersCount," & _
"(SELECT SUM(od.UnitPrice) FROM [Order Details] od INNER JOIN Orders o ON od.OrderID=o.OrderID WHERE o.CustomerID=c.CustomerID) AS SumPrice " & _
" FROM Customers c ORDER BY c.ContactName"
rows = getRecordsetRows(QueryStr, ConnectStr)
For i = 0 to Ubound(rows, 2)'размер массива по второму индексу
WScript.Echo rows(0, i) & " " & rows(1, i) & " " & rows(2, i)
Next