67 messaggi dal 17 luglio 2002
Salve, in questi giorni ho inserito due threads. Uno sulla visualizzazione dei records di una tabella ed uno sull'inserimento. A questo punto, mi manca quello della modifica. Ed eccomi quà.
Supponiamo che io abbia una pagina grid che mostri i records di una tabella e volessi modificare il singolo record. Dovrei rendere un campo del record di tipo URL anzichè LABEL e fino a quì ci sono. Con un response.redirect dovrei reindirizzare il tutto ad una pagina di dettaglio passando il campo chiave della tabella, (MA COME?)
Ecco il listato della pagina di elenco dei records:

<HTML>
<TITLE>Elenco fatture</TITLE
<center>
<%
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\mdb-database\fatture.mdb"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open "select datafattura from fatture", cn
Set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.open "select numfattura from fatture", cn
Set rs2 = Server.CreateObject("ADODB.Recordset")
rs2.open "select importodocumento from fatture", cn
Set rs3 = Server.CreateObject("ADODB.Recordset")
rs3.open "select incassato from fatture", cn
Set rs4 = Server.CreateObject("ADODB.Recordset")
rs4.open "select fatture.importodocumento-fatture.incassato AS residuo FROM fatture", cn
%>
<CENTER>
<% response.write "<img src=/calc.png>" %>
<TABLE>
<TR BGCOLOR="#FF0000">
<TD COLSPAN="5"><FONT FACE="ARIAL" COLOR="#FFFFFF"><DIV ALIGN="CENTER"><SPAN CLASS="STYLE1"><STRONG>Elenco fatture</STRONG></SPAN></FONT></TD></TR>
<TR BGCOLOR="#00CCFF">
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Data fattura</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Numero fattura</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Importo documento</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Incassato</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Residuo</FONT></TD>
<%
Do While not rs.EOF
Do While not rs1.EOF
Do While not rs2.EOF
Do While not rs3.EOF
Do While not rs4.EOF
%>
<TR>
<TD align="center" bgcolor="#eeeeee"><% response.write rs.Fields("datafattura").Value %></TD>
'DAL CAMPO CHE SEGUE, VORREI LINKARE LA PAGINA DI DETTAGLIO PASSANDO IL PARAMETRO IDFATTURA, MA COME SI FA?
<TD align="center" bgcolor="#eeeeee"><a href="dettagliofattura.asp?idfattura=(UGUALE A CHE COSA?)"><% response.write rs1.Fields("numfattura").Value %></a></TD>
<TD align="center" bgcolor="#eeeeee"><% response.write rs2.Fields("importodocumento").Value %></TD>
<TD align="center" bgcolor="#eeeeee"><% response.write rs3.Fields("incassato").Value %></TD>
<TD align="center" bgcolor="#eeeeee"><% response.write rs4.Fields("residuo").Value %></TD>
</TR>
<%
rs.MoveNext
rs1.MoveNext
rs2.MoveNext
rs3.MoveNext
rs4.MoveNext
Loop
Loop
Loop
Loop
Loop
rs.Close
rs1.Close
rs2.Close
rs3.Close
rs4.Close
set rs = Nothing
set rs1 = Nothing
set rs2 = Nothing
set rs3 = Nothing
set rs4 = Nothing
cn.Close
Set cn = Nothing
%>
</TABLE>
</HTML>
<FORM method="POST" action="inseriscifattura.asp">
<input type="Submit" value="Inserisci fattura">
2.190 messaggi dal 04 marzo 2004
Contributi | Blog
Se posso permettermi, non è necessario che usi tutti questi oggetti Recordset, puoi fare un'unica select specificando i campi che vuoi recuperare
rs.open "select idfattura, numfattura, datafattura from fatture", cn 

ed eseguire un unico
 Do While not rs.EOF 

In questo modo puoi passare in querystring l'identificativo del record così:
<a href='dettagliofattura.asp?idfattura=<%=rs.Fields("idfattura").Value %>'>

Nella pagina di dettaglio/modifica recuperi idfattura da QueryString ed esegui una query mirata a quello specifico record tipo
"select idfattura, numfattura, datafattura from fatture where idfattura = " & _idfatturaDaQueryString

Alessio Leoncini (WinRTItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer
67 messaggi dal 17 luglio 2002
novecento ha scritto:

<a href='dettagliofattura.asp?idfattura=<%=rs.Fields("idfattura").Value %>'>

Grazie novecento, l'ho provato e funge benissimo. Ho dovuto solo cambiare gli apici in doppi apici, altrimenti mi avrebbe considerato questa stringa come fosse commentata.
Adesso arriva la parte più ardua perchè dovrò costruire la pagina di modifica del record.
Intanto ho preso l'idfattura ricevuto e l'ho convertiro in session in modo da portarmelo automaticamente nella pagina successiva, quella di modifica.
L'ho fatto in questo modo:
if request.querystring("idfattura")<>"" then
session("idfattura")=request.querystring("idfattura")
end if

Per favore dimmi se c'è un modo più elegante o più conveniente per passare il parametro ed eventualmente, qualora non ci fosse, mi potresti dire come interrompere la sessione al rientro nella pagina che elenca tutte le fatture?
Grazie
2.190 messaggi dal 04 marzo 2004
Contributi | Blog
Puoi passare idfattura alla pagina di modifica ancora in querystring, anche la sessione non è sbagliata ma non è proprio il massimo per un valore così "volatile" cioè che vive solo tra due pagine.
Al rientro nella pagina di elenco puoi annullare il valore di sessione con session("idfattura") = nothing

Alessio Leoncini (WinRTItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer
67 messaggi dal 17 luglio 2002
Grazie infinite novecento.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.