Visualizzazione dei risultati da 1 a 5 su 5

Discussione: navigazione recordset

  1. #1

    navigazione recordset

    ciao...mi si è presentato un nuovo un problema.
    con gli strumenti di dwmx (non odiatemi...sono un grafico e so usare a malapena quelli ) non riesco a creare una barra di navigazione recordset che funzioni correttamente.
    sto creando una pagina grazie alla quale mi posso muovere tra i record per poterli modificare, ma il moveNext ed il movePrev vengono interpretati come "spostati di 10 record"...
    vi incollo il codice:

    <%
    ' *** Update Record: construct a sql update statement and execute it

    If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then

    ' create the sql update statement
    MM_editQuery = "update " & MM_editTable & " set "
    For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
    MM_formVal = MM_emptyVal
    Else
    If (MM_altVal <> "") Then
    MM_formVal = MM_altVal
    ElseIf (MM_delim = "'") Then ' escape quotes
    MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
    Else
    MM_formVal = MM_delim + MM_formVal + MM_delim
    End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
    MM_editQuery = MM_editQuery & ","
    End If
    MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal
    Next
    MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId

    If (Not MM_abortEdit) Then
    ' execute the update
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
    Response.Redirect(MM_editRedirectUrl)
    End If
    End If

    End If
    %>
    <%
    Dim Recordset1
    Dim Recordset1_numRows

    Set Recordset1 = Server.CreateObject("ADODB.Recordset")
    Recordset1.ActiveConnection = MM_database_STRING
    Recordset1.Source = "SELECT * FROM prenotazioni ORDER BY ID DESC"
    Recordset1.CursorType = 0
    Recordset1.CursorLocation = 2
    Recordset1.LockType = 1
    Recordset1.Open()

    Recordset1_numRows = 0
    %>
    <%
    Dim Repeat1__numRows
    Dim Repeat1__index

    Repeat1__numRows = 10
    Repeat1__index = 0
    Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
    %>
    <%
    ' *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

    Dim Recordset1_total
    Dim Recordset1_first
    Dim Recordset1_last

    ' set the record count
    Recordset1_total = Recordset1.RecordCount

    ' set the number of rows displayed on this page
    If (Recordset1_numRows < 0) Then
    Recordset1_numRows = Recordset1_total
    Elseif (Recordset1_numRows = 0) Then
    Recordset1_numRows = 1
    End If

    ' set the first and last displayed record
    Recordset1_first = 1
    Recordset1_last = Recordset1_first + Recordset1_numRows - 1

    ' if we have the correct record count, check the other stats
    If (Recordset1_total <> -1) Then
    If (Recordset1_first > Recordset1_total) Then
    Recordset1_first = Recordset1_total
    End If
    If (Recordset1_last > Recordset1_total) Then
    Recordset1_last = Recordset1_total
    End If
    If (Recordset1_numRows > Recordset1_total) Then
    Recordset1_numRows = Recordset1_total
    End If
    End If
    %>

    <%
    ' *** Recordset Stats: if we don't know the record count, manually count them

    If (Recordset1_total = -1) Then

    ' count the total records by iterating through the recordset
    Recordset1_total=0
    While (Not Recordset1.EOF)
    Recordset1_total = Recordset1_total + 1
    Recordset1.MoveNext
    Wend

    ' reset the cursor to the beginning
    If (Recordset1.CursorType > 0) Then
    Recordset1.MoveFirst
    Else
    Recordset1.Requery
    End If

    ' set the number of rows displayed on this page
    If (Recordset1_numRows < 0 Or Recordset1_numRows > Recordset1_total) Then
    Recordset1_numRows = Recordset1_total
    End If

    ' set the first and last displayed record
    Recordset1_first = 1
    Recordset1_last = Recordset1_first + Recordset1_numRows - 1

    If (Recordset1_first > Recordset1_total) Then
    Recordset1_first = Recordset1_total
    End If
    If (Recordset1_last > Recordset1_total) Then
    Recordset1_last = Recordset1_total
    End If

    End If
    %>
    <%
    Dim MM_paramName
    %>
    <%
    ' *** Move To Record and Go To Record: declare variables

    Dim MM_rs
    Dim MM_rsCount
    Dim MM_size
    Dim MM_uniqueCol
    Dim MM_offset
    Dim MM_atTotal
    Dim MM_paramIsDefined

    Dim MM_param
    Dim MM_index

    Set MM_rs = Recordset1
    MM_rsCount = Recordset1_total
    MM_size = Recordset1_numRows
    MM_uniqueCol = ""
    MM_paramName = ""
    MM_offset = 0
    MM_atTotal = false
    MM_paramIsDefined = false
    If (MM_paramName <> "") Then
    MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "")
    End If
    %>
    <%
    ' *** Move To Record: handle 'index' or 'offset' parameter

    if (Not MM_paramIsDefined And MM_rsCount <> 0) then

    ' use index parameter if defined, otherwise use offset parameter
    MM_param = Request.QueryString("index")
    If (MM_param = "") Then
    MM_param = Request.QueryString("offset")
    End If
    If (MM_param <> "") Then
    MM_offset = Int(MM_param)
    End If

    ' if we have a record count, check if we are past the end of the recordset
    If (MM_rsCount <> -1) Then
    If (MM_offset >= MM_rsCount Or MM_offset = -1) Then ' past end or move last
    If ((MM_rsCount Mod MM_size) > 0) Then ' last page not a full repeat region
    MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
    Else
    MM_offset = MM_rsCount - MM_size
    End If
    End If
    End If

    ' move the cursor to the selected record
    MM_index = 0
    While ((Not MM_rs.EOF) And (MM_index < MM_offset Or MM_offset = -1))
    MM_rs.MoveNext
    MM_index = MM_index + 1
    Wend
    If (MM_rs.EOF) Then
    MM_offset = MM_index ' set MM_offset to the last possible record
    End If

    End If
    %>
    <%
    ' *** Move To Record: if we dont know the record count, check the display range

    If (MM_rsCount = -1) Then

    ' walk to the end of the display range for this page
    MM_index = MM_offset
    While (Not MM_rs.EOF And (MM_size < 0 Or MM_index < MM_offset + MM_size))
    MM_rs.MoveNext
    MM_index = MM_index + 1
    Wend

    ' if we walked off the end of the recordset, set MM_rsCount and MM_size
    If (MM_rs.EOF) Then
    MM_rsCount = MM_index
    If (MM_size < 0 Or MM_size > MM_rsCount) Then
    MM_size = MM_rsCount
    End If
    End If

    ' if we walked off the end, set the offset based on page size
    If (MM_rs.EOF And Not MM_paramIsDefined) Then
    If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then
    If ((MM_rsCount Mod MM_size) > 0) Then
    MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
    Else
    MM_offset = MM_rsCount - MM_size
    End If
    End If
    End If

    ' reset the cursor to the beginning
    If (MM_rs.CursorType > 0) Then
    MM_rs.MoveFirst
    Else
    MM_rs.Requery
    End If

    ' move the cursor to the selected record
    MM_index = 0
    While (Not MM_rs.EOF And MM_index < MM_offset)
    MM_rs.MoveNext
    MM_index = MM_index + 1
    Wend
    End If
    %>
    <%
    ' *** Move To Record: update recordset stats

    ' set the first and last displayed record
    Recordset1_first = MM_offset + 1
    Recordset1_last = MM_offset + MM_size

    If (MM_rsCount <> -1) Then
    If (Recordset1_first > MM_rsCount) Then
    Recordset1_first = MM_rsCount
    End If
    If (Recordset1_last > MM_rsCount) Then
    Recordset1_last = MM_rsCount
    End If
    End If

    ' set the boolean used by hide region to check if we are on the last record
    MM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount)
    %>

    <%
    ' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

    Dim MM_keepNone
    Dim MM_keepURL
    Dim MM_keepForm
    Dim MM_keepBoth

    Dim MM_removeList
    Dim MM_item
    Dim MM_nextItem

    ' create the list of parameters which should not be maintained
    MM_removeList = "&index="
    If (MM_paramName <> "") Then
    MM_removeList = MM_removeList & "&" & MM_paramName & "="
    End If

    MM_keepURL=""
    MM_keepForm=""
    MM_keepBoth=""
    MM_keepNone=""

    ' add the URL parameters to the MM_keepURL string
    For Each MM_item In Request.QueryString
    MM_nextItem = "&" & MM_item & "="
    If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
    End If
    Next

    ' add the Form variables to the MM_keepForm string
    For Each MM_item In Request.Form
    MM_nextItem = "&" & MM_item & "="
    If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
    End If
    Next

    ' create the Form + URL string and remove the intial '&' from each of the strings
    MM_keepBoth = MM_keepURL & MM_keepForm
    If (MM_keepBoth <> "") Then
    MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
    End If
    If (MM_keepURL <> "") Then
    MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1)
    End If
    If (MM_keepForm <> "") Then
    MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
    End If

    ' a utility function used for adding additional parameters to these strings
    Function MM_joinChar(firstItem)
    If (firstItem <> "") Then
    MM_joinChar = "&"
    Else
    MM_joinChar = ""
    End If
    End Function
    %>
    <%
    ' *** Move To Record: set the strings for the first, last, next, and previous links

    Dim MM_keepMove
    Dim MM_moveParam
    Dim MM_moveFirst
    Dim MM_moveLast
    Dim MM_moveNext
    Dim MM_movePrev

    Dim MM_urlStr
    Dim MM_paramList
    Dim MM_paramIndex
    Dim MM_nextParam

    MM_keepMove = MM_keepBoth
    MM_moveParam = "index"

    ' if the page has a repeated region, remove 'offset' from the maintained parameters
    If (MM_size > 1) Then
    MM_moveParam = "offset"
    If (MM_keepMove <> "") Then
    MM_paramList = Split(MM_keepMove, "&")
    MM_keepMove = ""
    For MM_paramIndex = 0 To UBound(MM_paramList)
    MM_nextParam = Left(MM_paramList(MM_paramIndex), InStr(MM_paramList(MM_paramIndex),"=") - 1)
    If (StrComp(MM_nextParam,MM_moveParam,1) <> 0) Then
    MM_keepMove = MM_keepMove & "&" & MM_paramList(MM_paramIndex)
    End If
    Next
    If (MM_keepMove <> "") Then
    MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1)
    End If
    End If
    End If

    ' set the strings for the move to links
    If (MM_keepMove <> "") Then
    MM_keepMove = MM_keepMove & "&"
    End If

    MM_urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "="

    MM_moveFirst = MM_urlStr & "0"
    MM_moveLast = MM_urlStr & "-1"
    MM_moveNext = MM_urlStr & CStr(MM_offset + MM_size)
    If (MM_offset - MM_size < 0) Then
    MM_movePrev = MM_urlStr & "0"
    Else
    MM_movePrev = MM_urlStr & CStr(MM_offset - MM_size)
    End If
    %>

    aiuto...

  2. #2
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    la paginazione di recordset di dwmx non funziona una minchia!
    mi sa che la dovrai fare a mano o scaricare uno script gia' fatto.
    in questo non so aiutarti mi spiace, ti posso soltanto consigliare di abbandonare il codice generato di dreamweaver, c'ho provato anch'io e non c'e' stato verso.
    ciao

  3. #3
    E già che ci sei scrivilo nel forum con il tag [CODE] o avrai a vita i nostri occhi sulla tua coscienza.

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Con quel codice ci avrai sulla coscienza per sempre!

    Roby

  5. #5
    fiuuu, per motivi di sicurezza sui dati abbiamo abbandonato il database...
    posso finalmente tornare a fare il grafico
    shine on you!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.