PDA

Показать полную графическую версию : [решено] VBS. Сортировка элементов массива и разделение на страницы


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

Iska
02-11-2013, 14:04
В общем при помощи VBS получаю массив элементов »
Приведите код.

Не было бы проблем. если бы список не содержал в себе больше 100 элементов. »
Почему так? Каким образом связано с размером массива?

Подскажите как его отсортировать »
Как угодно. Одним из методов сортировки «вручную» (перестановки, «пузырьковой» сортировки и т.п.; для краткого ознакомления: Алгоритм сортировки — Википедия (http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0 %B0)), использованием JScript'ового метода «.sort()», задействования для сортировки объекта «ADODB.Recordset».

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

McLotos
02-11-2013, 14:12
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
1. Используйте свойство «.Sort»: Sort Property (ADO) (http://msdn.microsoft.com/en-us/library/ee275674(v=bts.10).aspx).

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

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

Iska
02-11-2013, 15:51
был бы SQL я бы конечно отсортировал прямо в запросе, а так, поставщиком данных является AD. »
Возможность сортировки есть при использовании этого поставщика данных: Script Sort a Recordset by User Name (http://gallery.technet.microsoft.com/scriptcenter/b3206c5e-6eb7-4fd8-9c38-136ebdd233f0).

как в vbs использовать fPing? »
Я не знаю, что такое «fPing». Поясните.

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

Iska
02-11-2013, 16:34
У меня нет fping. Также я не знаю, где взять его исполняемый файл под Windows.

Вы можете посмотреть на:
VBScript: асинхронная обработка множественных запросов WMI (на примере «Win32_PingStatus») (http://forum.script-coding.com/viewtopic.php?id=3783)
VBS/WMI: Многопоточный WshController с ограничением длины очереди (http://forum.script-coding.com/viewtopic.php?id=5682)

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

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

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

McLotos
03-11-2013, 00:21
Сори, совсем забыл про это правило. =(




© OSzone.net 2001-2012