Моя программа подкачки asp + sqlserver: особенностью этой программы является перетаскивание записей текущей страницы на страницу. Производительность хорошая, и нет необходимости в хранимых процедурах. Поскольку код не инкапсулирован, он очень фрагментирован. Чтобы использовать его в своей программе, вам нужно его кратко прочитать. Затем обратите внимание на значение мест, которые вам нужно установить себе. Некоторые можно опустить. Передачу некоторых параметров также можно опустить.
Код выглядит следующим образом:
'''' Инструмент подкачки Snow Saibei (сервер sql) не требует хранимых процедур --------------------------- ---
'В комментариях ## требует настроек пользователя
'В комментарии есть описание передачи параметров**, которые будут передаваться через параметры.
'Определить переменные
dim tOption 'условия запроса
dim tOrder 'Сортировка строк
dim tOrderField 'Поле заказа можно получить через параметры: order_field
dim tOrderDirection 'Направление сортировки можно получить с помощью параметров: order_direction
dim tPageSize 'Размер страницы
dim tTotalCount 'Общее количество записей можно получить через параметры: t_count
dim tPageCount 'Количество страниц
dim tCurPage 'Номер текущей страницы можно получить через параметры: page
dim tTableName 'Имя таблицы или представления
dim tFieldAlias 'псевдоним номера строки
dim tFieldList 'Список полей запроса
dim tPageField 'Поле, используемое для подкачки.
dim r_count 'Количество найденных записей
set rs=server.createobject("adodb.recordset") 'Объект набора записей
' обработка сортировки
tOrderField=Request("order_field") 'Получение поля сортировки (передача параметров**)
tOrderDirection=Request("order_dir") 'Получить направление сортировки (передача параметров**)
if(tOrderField="") then tOrderField="item_code" ' ### Установить поле сортировки по умолчанию
if(tOrderDirection="") then tOrderDirection="asc" ' ### Установить направление сортировки по умолчанию
'www.downcodes.com
tOrder=" упорядочить по " & tOrderField & " " & tOrderDirection & " " 'Создать строку сортировки
'Определить параметры
tPageSize=find_rs_count ' ### Установить размер страницы
tTableName="view_select1" ' ### Установка и запрос таблицы или представления
tFieldList=" * " ' ### Список полей для запроса
tPageField="item_code" ' ### Установить поле первичного ключа или уникального индекса для вычислений по страницам
'Обработка страницы
tCurPage=Request("page") 'Получить текущую страницу (передача параметров**)
tTotalCount=Request("t_count") 'Получить общее количество страниц (передача параметра**)
if(tCurPage=""), then tCurPage=1
если(cint(tCurPage)=0), то tCurPage=1
если(tPageCount=""), то tPageCount =1
if(cint(tPageCount)=0) then tPageCount=1
' Создаем условия запроса, которые обязательно будут различаться в зависимости от конкретной программы. Но последнее условие должно быть "где???"
tOption=" Issue_flag='Y'" ' ### Установка условий
if f_c<>"" then tOPtion= tOPtion & f_c ' ### Установить условия
if trip(tOption)="" then
tOption = " где 1=1 " 'Если условие отсутствует, добавьте его самостоятельно.
еще
tOption="где" и tOPtion
конец, если
'Создайте строку запроса, ядро этой программы подкачки. Эта строка запроса представляет собой запись, необходимую для загрузки только текущей страницы.
если(tCurPage>1) тогда
conStr="select top" & tPageSize & " " & tFieldList & " from " & tTableName & tOption
conStr =conStr & " и " & tPageField & " нет в (выберите верхний " & tPageSize*(tCurPage-1) & " " & tPageField & " from " & tTableName & tOption & " " & tOrder & ") " & tOrder
еще
conStr="select top" & tPageSize & " " & tFieldList & " from " & tTableName & tOption & " " & tOrder
конец, если
'Выполняем основной запрос и получаем соответствующий набор записей
Вызов ConnDataBase() ' ### Установление соединения с базой данных
rs.cursorlocation=3
rs.open conStr,conn,3,1 'Выполнить запрос
r_count = rs.recordcount
'Когда общее количество записей не было запрошено и общее количество записей превышает размер страницы, запросите общее количество записей в текущих условиях
если(r_count>=tPageSize или tCurPage>1) и tTotalCount=0, то
set rr=conn.execute("select count(*) from " & tTableName & " " & tOption)
tTotalCount=rr(0)
рр.закрыть()
setrr=ничего
конец, если
if(cint(tTotalCount)=0) then tTotalCount=r_count 'Если общее количество записей равно 0, установите количество записей в текущих разностных записях, равное общему количеству записей, указывая, что текущее общее количество записей меньше размер страницы
'Рассчитать количество страниц, используя размер страницы и общее количество записей
если(cint(tTotalCount)>cint(tPageSize)) то
tPageCount=cint((cint(tTotalCount) cint(tPageSize)))
if(cint(tTotalCount) mod cint(tPageSize))>0 тогда
tPageCount = tPageCount +1
конец, если
конец, если
tCurPage=cint(tCurPage)
tPageCount=cint(tPageCount)
'------------------------------------------------ - -------------------
Это весь код. Друзья, кому интересно, могут изучить его или инкапсулировать и добавить постраничную навигацию и другие методы. В любом случае, я надеюсь, что этот код может быть полезен всем.