Объект Recordset и текстовые файлы (ASP)
Христофоров Юрий
В этой статье речь пойдет о построении объекта
Recordset на основе информации из текстового файла. Сталкиваясь с задачей
представления данных из текстовых файлов (с поддержкой сортировок по нескольким
полям, разбиением набора данных по страницам) возникает вопрос: как решить
данную задачу наиболее просто? Первый вариант решения - использование массивов.
Второй вариант, о котором и пойдет речь, - создание объекта Recordset и
дальнейшая работа с ним.
Постановка задачи:
Есть текстовый файл (country.txt), который
представляет собой набор записей вида: Страна,Столица. Необходимо вывести
постранично (5 записей на страницу) в виде HTML таблицы содержимое этого файла
с сортировкой по полю Страна.
ASP-скрипт, который осуществляет этот вывод:
Response.Expires
= 0
Dim
fs, fd, buffer, rs, arrTxT, Page, i, nPages
'создаем объект Recordset
Set
rs = Server.CreateObject("ADODB.Recordset")
rs.Fields.Append
"Страна", 200, 255
rs.Fields.Append
"Столица", 200, 255
rs.Open
Set
fs = Server.CreateObject("Scripting.FileSystemObject")
Set
fd = fs.OpenTextFile(Server.MapPath("country.txt"), 1)
'построчно считываем содержимое файла
Do While (Not fd.AtEndOfStream)
'добавляем строку
rs.AddNew
buffer = fd.ReadLine
arrTxT
= Split(CStr(buffer), ",")
rs("Страна") = arrTxT(0)
rs("Столица") = arrTxT(1)
rs.Update
Loop
Set fs = Nothing
'сортируем по полю Страна
rs.Sort="Страна"
'по 5 записей на страницу
rs.PageSize
= 5
if
Request.QueryString("Page") "" then
Page
= CInt(Request.QueryString("Page"))
else
Page=1
end
if
If
rs.PageCount > 0 Then
rs.AbsolutePage
= Page
Else
Page
= 0
End
If
Response.Write
""
Response.Write
"Страна"
Response.Write
"Столица"
i =
0
'собственно вывод
Do
While (Not rs.EOF) And (i
Response.Write
""
Response.Write
"" & rs("Страна") & ""
Response.Write
"" & rs("Столица") & ""
Response.Write
""
rs.MoveNext
i =
i + 1
Loop
nPages = rs.PageCount
'панель навигации по страницам
If
nPages > 1 then
Response.Write
""
If
Page 1 then
Response.Write
""
Else
Response.Write
"
End
If
For
i = 1 to nPages
If i
= 1 then
Response.Write
" | "
End
If
If i
= Page then
Response.Write
i & " | "
Else
Response.Write
"" & i
& " | "
End
If
Next
If
Page nPages then
Response.Write
">"
Else
Response.Write
">"
End
If
Response.Write
""
End
If
Response.Write
""
rs.Close
Set
rs = Nothing
%>
Пример работы скрипта:
Список литературы
Для подготовки данной работы были использованы
материалы с сайта http://www.activex.net.ru/