powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как синхронизировать?
4 сообщений из 4, страница 1 из 1
Как синхронизировать?
    #32070138
Фотография BlackCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть простецкая страница (ASP). Код простой (пример из книги почти). Код работает. Суть в постраничном разбиении большого кол-ва записей из VIEW. В код сначала можно даже не вникать. Основное внизу.

<% @Language = "VBScript" %>
<% Response.Expires=0 %>
<HTML>
<HEAD>
<META name="VI60_DefaultClientScript" Content="VBScript">
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">

</HEAD>
<BODY>
<%
'Выбор страницы
Select Case Request.QueryString("Direction")
Case ""
Session("CurrentPage")=1
Case "Next"
Session("CurrentPage")=Session("CurrentPage")+1
Case "Previous"
Session("CurrentPage")=Session("CurrentPage")-1
End Select

'Константы
Const adKeyset=1
'Переменные
Dim objConn
dim objRec

Set objConn=Server.CreateObject("ADODB.Connection")
objConn.Open "ADS"

Dim strSQL
strSQL="Select * from VJOtklAvar order by dt_otkl DESC"

'Создаем набор данных
Set objRec=Server.CreateObject("ADODB.Recordset")
objRec.PageSize=10
objRec.Open strSQL,objConn,adKeyset
objRec.AbsolutePage=CLng(Session("CurrentPage"))

'Выводим результаты
%>

<P>Страница <%=Session("CurrentPage")%> из <%=objRec.PageCount%></P>
<TABLE WIDTH=75% BORDER=1 CELLSPACING=0 CELLPADDING=0>
<TR>
<TH>Первый столбец</TH>
<TH>Второй столбец</TH>
<TH>Третий столбец</TH>
</TR>
<%
dim i
For i=1 to objRec.PageSize
%>
<TR>
<TD><%=objRec("dt_otkl")%></TD>
<TD><%=objRec("dt_vvod")%></TD>
<TD><%=objRec("name_ul")%></TD>
</TR>
<%
objRec.MoveNext
Next
%>
</TABLE>

<!--Cсылка на след. страницу -->
<%
If CLng(Session("CurrentPage")) >=1 Then %>
<P><A HREF="Paging_Records.asp?direction=Next">Следующая страница</A></P>
<%End If%>

<!--Cсылка на предыдущую страницу -->
<%
If CLng(Session("CurrentPage"))>1 Then %>
<P><A HREF="Paging_Records.asp?direction=Previous">Предыущая страница</A></P>
<%End If%>


<%
objRec.Close
objConn.Close
Set objRec=Nothing
Set objConn=Nothing
%>
</BODY>
</HTML>


Дело в след.
При нажатии на ссылку "След. страница" можно перейти на N страниц вперед. При нажатии на "Пред. страница" так же хорошо переходим назад к ПЕРВОЙ странице.

Однако, если сейчас (находясь на первой стр.) нажать на стандартную кнопку "Обновить" на панели IE, то появляется след.:

Тип ошибки:
ADODB.Recordset (0x800A0BB9)
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/ADS_NEW/Paging_Records.asp, line 37

(прим. моё: objRec.AbsolutePage=CLng(Session("CurrentPage")) )

Происходит потому что кнопка навигации "Назад" (IE) до сих пор активна. Если ее сейчас нажимать то появляется N-ная (последняя напр. №8 или №50 неважно) выбранная страница, затем ПЕРВАЯ.

Сейчас стандартная кнопка IE "ОБНОВИТЬ" работает без ошибки. И стандартные кнопки навигации деактивизированы.

Получается какое то параллельное отслеживание выбранных страниц. С помощью собственно программы (ASP) и параллельно браузером что ли?

Как это разрулить? Или синхронизировать?


Заранее спасибо. Т.к. сегодня возможно уже не будет возможности ответить.
...
Рейтинг: 0 / 0
Как синхронизировать?
    #32070178
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После нажатия на ссылку "Следующая страница" у вас в браузере в адресе формируется URL "http://...Paging_Records.asp?direction=Next", по direction=Next берётся след. страница рекордсета.

При нажатии кнопки F5 этот URL запускается повторно с указанным параметром direction=Next, при этом берётся след. страница.

Разрулить очень просто, надо сбрасывать параметр.
В вашем случае в начале ASP надо поместить след. код.

'Выбор страницы
if Request.QueryString("Direction").count > 0 then
Select Case Request.QueryString("Direction")
Case ""
Session("CurrentPage")=1
Case "Next"
Session("CurrentPage")=Session("CurrentPage")+1
Case "Previous"
Session("CurrentPage")=Session("CurrentPage")-1
End Select
Response.Redirect "Paging_Records.asp"
end if
...
Рейтинг: 0 / 0
Как синхронизировать?
    #32070188
Фотография BlackCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо.
...
Рейтинг: 0 / 0
Как синхронизировать?
    #32070327
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример то из книжки (я даже знаю, из какой, сам читал :), но в реальности очень нездорово хранить номер страницы в session.

У себя я передаю номер страницы в качестве параметра, а не direction. И от асповской разбивки на страницы мне пришлось отказаться. Теперь разбиваю средствами сиквела.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как синхронизировать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]