Visualizzazione dei risultati da 1 a 7 su 7

Discussione: ordine record e stampa

  1. #1

    ordine record e stampa

    ciao,
    ho un paio di domande su due problemini...

    allora, ho una serie di voci, in un db access, vengono estratte e le devo impaginare in una pagina web che dovro' stampare.

    la prima necessita' e' di poter stabilire/modificare l'ordine di queste voci: ho inserito per ogni record un id_order (numerico) che mi dara' l'ordine..

    pero' non so come modificarlo, cioe' ad esempio:
    voce - id_order
    ---------------
    voce1 - 1
    voce2 - 2
    voce3 - 3
    .

    ammettiamo che voce2 voglio spostarla in su, come prima voce, io avrei bisogno di uno script, che mi cambi l'id di voce2 e quello di voce1, pero' non sono capace, cioe' so' cambiare voce2 ma non le altre voci che andrebbero modificate il base allo spostamento fatto...
    come potrei fare?

    l'altra cosa e' che mi chiedevo se e' possibile impostare margini, intestazione e pie' di pagina, da script, in modo da avere sotto controllo il layout finale in fase di stampa...

    grazie
    ciao

  2. #2
    Utente di HTML.it L'avatar di fiber81
    Registrato dal
    Oct 2002
    Messaggi
    328
    Secondo me la cosa più semplice da fare è dare la possibilità di "spostare in sù" e "spostare in giù" una voce, in modo tale che l'unica operazione che devi fare è invertire l'id_order della voce che vuoi spostare con quella precedente o successiva.

    Per la seconda domanda con asp non lo puoi fare perchè è lato server, magari con javascript
    Ci sono 10 tipi di persone al mondo, quelli che conoscono la numerazione binaria e quelli che non la conoscono!

  3. #3
    si vabe' la seconda cosa e' secondaria, la prima invece mi interessa...
    in effetti non ci avevo pensato...quindi dici una cosa del tipo:
    voce - id_order
    ---------------
    voce1 - 1
    voce2 - 2
    voce3 - 3

    sposta voce2 in su
    --> guardo l'id_ordine subito minore a quello di voce2 e li inverto
    sposta voce2 in giu
    --> guardo l'id_ordine subito maggiore a quello di voce2 e li inverto

    dovrebbe funzionare in effetti...mo ci provo....
    grazie intanto

  4. #4
    puoi dare un'occhio per favore....penso di abagliare qualcosa nella logica....
    codice:
    <%
    tomove_id=request.querystring("id")
    action=request.querystring("action")
    
    Set Conn=Server.CreateObject("ADODB.Connection") 
    DbProdotti="driver={Microsoft Access Driver (*.mdb)}; " 
    DbProdotti=DbProdotti & " DBQ=" & Server.MapPath("db.mdb")
    Conn.Open DbProdotti
    
    ' leggo id_order del record da spostare
    Set rs = Server.CreateObject("ADODB.Recordset") 
    rs.Open "SELECT * FROM voci WHERE id=" & tomove_id, Conn ,3,3
    tomove_order = rs("id_order")
    rs.Close
    Set rs = Nothing
    
    ' guardo qual'e il record superiore e inferiore a quello da spostare
    Set rs = Server.CreateObject("ADODB.Recordset") 
    rs.Open "SELECT * FROM voci", Conn ,3,3
    Do While Not rs.EOF
    	If up_found = false Then
    		If rs("id_order") < tomove_order Then
    			up_order = rs("id_order")
    			up_id = rs("id")
    			up_found = true
    		End If
    	End If
    	If low_found = false Then
    		If rs("id_order") > tomove_order Then
    			low_order = rs("id_order")
    			low_id = rs("id")
    			low_found = true
    		End If
    	End If
    	rs.movenext
    Loop
    rs.Close
    set rs = Nothing
    
    response.write ("tomove_order:" & tomove_order & "
    ")
    response.write ("tomove_id:" & tomove_id & "
    ")
    response.write ("up_order:" & up_order & "
    ")
    response.write ("up_id:" & up_id & "
    ")
    response.write ("low_order:" & low_order & "
    ")
    response.write ("low_id:" & low_id & "
    ")
    response.write ("ACTION:" & action & "
    ")
    
    ' assegno al record da spostare id_order di quello superiore
    If action = "su" Then
    	Set rs = Server.CreateObject("ADODB.Recordset") 
    	rs.Open "SELECT * FROM voci WHERE id=" & tomove_id, Conn ,3,3
    	rs("id_order") = up_order
    	rs.update
    	rs.Close
    	Set rs = Nothing
    	' assegno al record superiore id_order di quello spostato
    	Set rs = Server.CreateObject("ADODB.Recordset") 
    	rs.Open "SELECT * FROM voci WHERE id=" & up_id, Conn ,3,3
    	rs("id_order") = tomove_order
    	rs.update
    	rs.Close
    	Set rs = Nothing
    End If
    
    ' assegno al record da spostare id_order di quello inferiore
    If action = "giu" Then
    	Set rs = Server.CreateObject("ADODB.Recordset") 
    	rs.Open "SELECT * FROM voci WHERE id=" & tomove_id, Conn ,3,3
    	rs("id_order") = low_order
    	rs.update
    	rs.Close
    	Set rs = Nothing
    	' assegno al record superiore id_order di quello spostato
    	Set rs = Server.CreateObject("ADODB.Recordset") 
    	rs.Open "SELECT * FROM voci WHERE id=" & low_id, Conn ,3,3
    	rs("id_order") = tomove_order
    	rs.update
    	rs.Close
    	Set rs = Nothing
    End If
    Conn.Close
    Set Conn = Nothing
    response.redirect ("default.asp")
    %>

  5. #5
    Utente di HTML.it L'avatar di fiber81
    Registrato dal
    Oct 2002
    Messaggi
    328
    Ma scusa io farei 3 query:

    "SELECT id_order FROM voci WHERE id=" & tomove_id
    tomove_order = rs("id_order")

    "SELECT id_order FROM voci WHERE id=" & tomove_id+1
    order_dopo = rs("id_order")

    "SELECT id_order FROM voci WHERE id=" & tomove_id-1
    order_prima = rs("id_order")

    poi fai un if, se action="su"
    "UPDATE voci SET id_order="&tomove_order&" WHERE id=" & tomove_id-1
    "UPDATE voci SET id_order="&order_prima&" WHERE id=" & tomove_id

    se action="giù"
    "UPDATE voci SET id_order="&tomove_order&" WHERE id=" & tomove_id+1
    "UPDATE voci SET id_order="&order_dopo&" WHERE id=" & tomove_id

    Prova
    Ci sono 10 tipi di persone al mondo, quelli che conoscono la numerazione binaria e quelli che non la conoscono!

  6. #6
    riadattandolo sono riuscito a fare quello che volevo, l'unico problema me lo da con gli estremi della mia lista....

    cioe' se cerco di spostare in su la prima voce e in giu' l'ultima

    pero' avrei bisogno che rilevando l'errore mi faccia un redirect
    e' possibile??

  7. #7
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    codice:
    k = 1
    ultimoRecord = rs.recordCount 
    
    while not Rs.eof 
       if k <> 1 then 
       ' STAMPI IL CODICE SU
          Response.write("SU")
       end if   
       if k <> ultimoRecord  then
         Response.write("GIU")
       end if   
       Rs.movenext
       k = k + 1 
    Wend
    %>
    quindi:
    stampa sempre il link per spostare SU tranne al primo giro del loop
    stampa sempre il link per spostare GIU tranne all'ultimo giro del loop

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 © 2026 vBulletin Solutions, Inc. All rights reserved.