Смекни!
smekni.com

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

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

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

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

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

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

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

<% option explicitResponse.Expires = 0Dim fs, fd, buffer, rs, arrTxT, Page, i, nPages'создаемобъект RecordsetSet rs = Server.CreateObject("ADODB.Recordset")rs.Fields.Append "Страна", 200, 255rs.Fields.Append "Столица", 200, 255rs.OpenSet fs = Server.CreateObject("Scripting.FileSystemObject")Set fd = fs.OpenTextFile(Server.MapPath("country.txt"), 1)'построчно считываем содержимое файлаDo While (Not fd.AtEndOfStream) 'добавляем строкуrs.AddNewbuffer = fd.ReadLinearrTxT = Split(CStr(buffer), ",")rs("Страна") = arrTxT(0)rs("Столица") = arrTxT(1)rs.UpdateLoop Set fs = Nothing'сортируем по полю Странаrs.Sort="Страна"'по 5 записей на страницуrs.PageSize = 5if Request.QueryString("Page") <> "" thenPage = CInt(Request.QueryString("Page"))elsePage=1end ifIf rs.PageCount > 0 Thenrs.AbsolutePage = PageElsePage = 0End IfResponse.Write "<table border = 1 width=200 bordercolor='#000000'>"Response.Write "<tr><td align=center bgcolor='#EEEEEE'><b>Страна</b></td>"Response.Write "<td align=center bgcolor='#EEEEEE'><b>Столица</b></td></tr>"i = 0'собственновыводDo While (Not rs.EOF) And (i < rs.PageSize)Response.Write "<tr>"Response.Write "<td align=center>" & rs("Страна") & "</td>" Response.Write "<td align=center>" & rs("Столица") & "</td>" Response.Write "</tr>" rs.MoveNexti = i + 1LoopnPages = rs.PageCount'панель навигации по страницамIf nPages > 1 thenResponse.Write "<tr><td colspan=2 align=center>"If Page <> 1 thenResponse.Write "<a href=""" & Request("script_name") & "?Page=" & Page - 1 & """>&lt;</a>"ElseResponse.Write "&lt;"End IfFor i = 1 to nPages If i = 1 thenResponse.Write " | "End IfIf i = Page thenResponse.Write i & " | "ElseResponse.Write "<a href=""" & Request("script_name") & "?Page=" & i & """>" & i & "</a> | "End IfNextIf Page <> nPages thenResponse.Write "<a href=""" & Request("script_name") & "?Page=" & Page + 1 & """>&gt;</a>"ElseResponse.Write "&gt;"End IfResponse.Write "</td></tr>"End IfResponse.Write "</table>"rs.CloseSet rs = Nothing%>

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