Объект Recordset и текстовые файлы (ASP)

Статья - Компьютеры, программирование

Другие статьи по предмету Компьютеры, программирование

Объект Recordset и текстовые файлы (ASP)

Христофоров Юрий

В этой статье речь пойдет о построении объекта Recordset на основе информации из текстового файла. Сталкиваясь с задачей представления данных из текстовых файлов (с поддержкой сортировок по нескольким полям, разбиением набора данных по страницам) возникает вопрос: как решить данную задачу наиболее просто? Первый вариант решения - использование массивов. Второй вариант, о котором и пойдет речь, - создание объекта Recordset и дальнейшая работа с ним.

Постановка задачи:

Есть текстовый файл (country.txt), который представляет собой набор записей вида: Страна,Столица. Необходимо вывести постранично (5 записей на страницу) в виде HTML таблицы содержимое этого файла с сортировкой по полю Страна.

ASP-скрипт, который осуществляет этот вывод:

<% option explicit

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

""then">if Request.QueryString("Page") <> "" then

Page = CInt(Request.QueryString("Page"))

else

Page=1

end if

0Then">If rs.PageCount > 0 Then

rs.AbsolutePage = Page

Else

Page = 0

End If

"">Response.Write ""

"

"

i = 0

собственно вывод

Do While (Not rs.EOF) And (i < rs.PageSize)

"">Response.Write ""

"&rs("")&""

"&rs("")&""

"">Response.Write ""

rs.MoveNext

i = i + 1

Loop

nPages = rs.PageCount

панель навигации по страницам

If nPages > 1 then

"

If Page <> 1 then

&lt;"

Else

Response.Write "&lt;"

End If

For i = 1 to nPages

If i = 1 then

Response.Write " | "

End If

If i = Page then

Response.Write i & " | "

Else

" & i & " | "

End If

Next

If Page <> nPages then

&gt;"

Else

Response.Write "&gt;"

End If

"

End If

"">Response.Write ""

rs.Close

Set rs = Nothing

%> Пример работы скрипта:

Список литературы

Для подготовки данной работы были использованы материалы с сайта