1 (изменено: alexii, 2012-11-22 15:08:20)

Тема: VBScript: возможно ли в ADODB сделать запрос по своему ADODB.Recordset

Возможно ли в ADODB сделать запрос по своему ADODB.Recordset(у) без каких либо подключений к провайдеру баз данных.

Сделал первую таблицу:

Set ControlDateList = CreateObject("ADODB.Recordset")
ControlDateList.Fields.Append "UserProfile", adVarChar, MaxCharacters
ControlDateList.Fields.Append "ControlDate", adDBTimeStamp
ControlDateList.Open

В цикле заполняю её данными. Создаю вторую таблицу запросом по первой, конечно в запросе нужна группировка по "UserProfile" и выборкой максимума по "ControlDate":

Set myRecordset = CreateObject("ADODB.Recordset")
myRecordset.Source = "SELECT * FROM ControlDateList"
myRecordset.Open

Do Until myRecordset.EOF
    <блок моих операторов>
    myRecordset.MoveNext
Loop

2 (изменено: bernobas, 2012-11-26 10:09:19)

Re: VBScript: возможно ли в ADODB сделать запрос по своему ADODB.Recordset

просто написал скрипт по удалению устаревших временных папок из профилей пользователей, которые отбираю запросом:

Set colSubFolders = objService.ExecQuery("SELECT                                                                                            " & _
                                        "   *                                                                                               " & _
                                        "FROM                                                                                               " & _
                                        "   Win32_Directory                                                                                 " & _
                                        "WHERE                                                                                              " & _
                                        "   Drive = 'C:'                                                                                    " & _
                                        "   AND Path LIKE '\\Users\\%\\appdata\\local\\1c\\1cv82\\%'                                        " & _
                                        "   AND NOT Path LIKE '\\Users\\%\\appdata\\local\\1c\\1cv82\\%\\%'                                 " & _
                                        "   AND FileType LIKE 'File Folder'                                                                 " & _
                                        "   AND FileName <> 'logs' AND FileName <> 'conf' AND FileName <> 'dumps'                           ")

но после выборки приходится перелопачивать в цикле результат на определение максимальной даты для каждого профиля у имеющихся подкаталогов и заносить эти данные в свою таблицу, чтобы оставить более новые каталоги а более старшие удалить. Можно было бы попытаться выполнить данный запрос с группировкой и найти максимальную дату, но это еще порядка двух минут времени на выполнение, а написанная обработка результата первого запроса циклом выполняется за секунду - две, просто вероятность появления ошибки в моём цикле больше чем если бы выбрал максимальную дату запросом. И как я понимаю WQL не поддерживает MAX, MIN при GROUP BY

3

Re: VBScript: возможно ли в ADODB сделать запрос по своему ADODB.Recordset

bernobas, не поддерживает. Но можете посмотреть в сторону LogParser'а (Средство Log Parser 2.2).