Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] VBS. Сортировка элементов массива и разделение на страницы (http://forum.oszone.net/showthread.php?t=271209)

McLotos 02-11-2013 13:44 2246023

VBS. Сортировка элементов массива и разделение на страницы
 
Добрый день. В общем при помощи VBS получаю массив элементов, но они выдаются в виде одного несортированного списка. Не было бы проблем. если бы список не содержал в себе больше 100 элементов. Подскажите как его отсортировать и разделить на страницы. Спасибо.

Iska 02-11-2013 14:04 2246032

Цитата:

Цитата McLotos
В общем при помощи VBS получаю массив элементов »

Приведите код.

Цитата:

Цитата McLotos
Не было бы проблем. если бы список не содержал в себе больше 100 элементов. »

Почему так? Каким образом связано с размером массива?

Цитата:

Цитата McLotos
Подскажите как его отсортировать »

Как угодно. Одним из методов сортировки «вручную» (перестановки, «пузырьковой» сортировки и т.п.; для краткого ознакомления: Алгоритм сортировки — Википедия), использованием JScript'ового метода «.sort()», задействования для сортировки объекта «ADODB.Recordset».

Цитата:

Цитата McLotos
и разделить на страницы. »

Поясните, что под сим подразумевается? И зачем.

McLotos 02-11-2013 14:12 2246038

Код:

document.write("<ul>")
i=0
Do Until adoRecordset.EOF
    i=i+1
    adoRecordset.MoveNext
Loop
adorecordset.Requery
Dim Elements() 'создаём пустой массив не указывая заранее его размер
Redim Elements(i) ' переназначаем размер массива
adoRecordset.MoveFirst
for i=LBound(Elements) to UBound(Elements)
Elements(i)=adoRecordset.Fields("name").Value
document.write("<li>" & Elements(i) & "</li>")
adoRecordset.MoveNext
Next
document.write("</ul>")
adoRecordset.Close
adoConnection.Close


Iska 02-11-2013 14:42 2246050

1. Используйте свойство «.Sort»: Sort Property (ADO).

2. Откуда берётся сам объект «adoRecordset»? Не пробовали использовать сортировку при заполнении объекта (наподобие "… ORDER BY …"), если таковая поддерживается поставщиком данных?

McLotos 02-11-2013 14:57 2246063

был бы SQL я бы конечно отсортировал прямо в запросе, а так, поставщиком данных является AD. скорее всего придётся передавать список в JS и там уже сортировку делать. =)
Спасибо. и ещё один вопросик, как запустить пинг из vbs я знаю, как в vbs использовать fPing?

Iska 02-11-2013 15:51 2246096

Цитата:

Цитата McLotos
был бы SQL я бы конечно отсортировал прямо в запросе, а так, поставщиком данных является AD. »

Возможность сортировки есть при использовании этого поставщика данных: Script Sort a Recordset by User Name.

Цитата:

Цитата McLotos
как в vbs использовать fPing? »

Я не знаю, что такое «fPing». Поясните.

McLotos 02-11-2013 16:16 2246115

fping это cmd утилита, которая может пинговать сразу несколько хостов одновременно, открывая для каждого хоста свой сокет.

Iska 02-11-2013 16:34 2246135

У меня нет fping. Также я не знаю, где взять его исполняемый файл под Windows.

Вы можете посмотреть на:
vbscript: асинхронная обработка множественных запросов WMI (на примере «Win32_PingStatus»)
VBS/WMI: Многопоточный WshController с ограничением длины очереди

McLotos 02-11-2013 17:07 2246152

спс. почитаю. Ну и последний вопрос (а то я наверное уже достал =))))) ) а как сделать поиск в массиве по первой букве?
нашёл. определить первую букву слова можно функцией
String(1,Slovo) или Left(Slovo,1)

Iska 02-11-2013 23:44 2246343

Left() или Mid(). Первая предпочтительнее. String() предназначена для иного: создать переменную типа «String» указанной длины.

Цитата:

Цитата McLotos
Ну и последний вопрос (а то я наверное уже достал )))) ) »

Достать — ничуть не достали, но Правилами оговорено: один вопрос (тематика) — одна тема, а мы тут уже на три темы наговорили.

McLotos 03-11-2013 00:21 2246359

Сори, совсем забыл про это правило. =(


Время: 17:06.

Время: 17:06.
© OSzone.net 2001-