27 messaggi dal 20 dicembre 2018
Salve. la mia richiesta è questa. Ho una query campi incrociati che mi da come risultato una checkbox che in base al record puo' essere piena o vuota. Vorrei cliccando sulla checkbox che mi aprisse una pagina asp collegata che mi facesse vedere i dettagli del record. Il problema è che nella query a campi incrociati non ho potuto mettere il campo ID e quindi non riesco a collegare le due pagine. se mi rispondete posso farvi avere sia la query che il codice asp inserito.


ecco la query:
CmdSQL="TRANSFORM IIF(first(monete.possesso)=true, '<input type=""checkbox"" name=""possesso"" onclick=""google()"" Checked=""ON""> ',IIF(First(monete.possesso)=false,'<input type=""checkbox"" name=""possesso"" onclick=""google()"" value="""" unChecked=""OFF"">','-'))"
CmdSQL=CmdSQL+"SELECT monete.[anno conio] FROM monete where monete.stato = 'austria' and monete.iddescr <> 2000 "
CmdSQL=CmdSQL+"GROUP BY monete.[anno conio] "
CmdSQL=CmdSQL+"PIVOT [iddescr];"
set objRs = Conn.Execute(CmdSQL)


questa è la funzione Google():
<script type="text/javascript">
function google() {
window.location = "http://raritag.asp?id=monete.id";
}
</script>



al momento tramite la funzione Google() riesco a linkare la pagina a quella rarita.asp ma mi fa vedere l'ID numero 1 mentre io vorrei vedere quello collegato alla checlist che ho cliccato.
so che è impossibile da fare ma spero che qualcuno possa aiutarmi.
grazie
Felice
Modificato da ecommerce2018 il 19 febbraio 2019 20:20 -
333 messaggi dal 05 novembre 2012
Ciao,

faccio fatica ad interpretare il codice che hai postato...fondamentalmente se non hai un campo univoco che identifica la tua checklist non hai modo di collegare le pagine.

IIF(first(monete.possesso)=true, '<input type=""checkbox"" name=""possesso"" onclick=""google(' + first(monete.id) + ')"" Checked=""ON"">' ...


function google(id) {
   window.location = "http://raritag.asp?id=id";
}


/Ciao

Alessio
27 messaggi dal 20 dicembre 2018
ciao grazie. Il problema è proprio quello.
con la query vedo attraverso le checkbox le monete mancanti o possedute per anno e per stato e per unità.

nella query non ha senso che io metta l'id della moneta xche non mi serve vederlo scritto accanto alla checkbox.
ma senza quell'ID la pagina rarita.asp non riesce a collegare la checkbox con l'id della moneta cliccata.

ho provato la tua correzione ma non va neanche quella.
sono sicuro che il modo ci sara' ma io non riesco.
grazie della risposta e ciao
felice
333 messaggi dal 05 novembre 2012
nella query non ha senso che io metta l'id della moneta xche non mi serve vederlo scritto accanto alla checkbox.


Ma la modifica che ti ho segnalato non scrive il campo id accanto alla checkbox...serve per passare il campo id alla funzione javascript che hai chiamato google

Scusa se te lo chiedo...hai applicato la modifica come indicato (ho omesso la seconda input ma il concetto è il medesimo)?

/Ciao

Alessio
27 messaggi dal 20 dicembre 2018
si l'ho fatto ma nella pagina rarita.asp vedo sempre il record con id 1 mentre vorrei vedere quello giusto.
ti passo tutto il codice cosi' si vede meglio come viene la query a campi incrociati:

questa è la pagina austria.asp

<%

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/euro.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open url_DB
response.write "<H4>Monete euro </H4>"

CmdSQL="TRANSFORM IIF(first(monete.possesso)=true, '<input type=""checkbox"" name=""possesso"" onclick=""google()"" Checked=""ON""> ',IIF(First(monete.possesso)=false,'<input type=""checkbox"" name=""possesso"" onclick=""google()"" value="""" unChecked=""OFF"">','-'))"
CmdSQL=CmdSQL+"SELECT monete.[anno conio] FROM monete where monete.stato = 'austria' and monete.iddescr <> 2000 "
CmdSQL=CmdSQL+"GROUP BY monete.[anno conio] "
CmdSQL=CmdSQL+"PIVOT [iddescr];"
set objRs = Conn.Execute(CmdSQL)


%>

<table border="0" style="background-color: #ff00ff; width:99%" cellspacing="0" height="50%">

<tr>
<%

if NOT objRS.eof then
response.write "<TR><Td>Anno/Moneta</Td>"+vbcrlf
for i=1 to ObjRs.fields.count-1
response.write("<TH>"+objRs(i).name+"</TH>")
next
response.write "</TR>"+vbcrlf
Do while NOT objRs.EOF


%> <Th valign="middle" class="bnuevo" bgcolor="#000000" width="141">
<font size="2"><font color="#000000"><%=objRs("anno conio")%>
</font></font><font color="#008000"></font></Th>
<%


for i=1 to ObjRs.fields.count-1


%> <Th class="brepe" valign="middle" bgcolor="#ffffff" width="141">
<font size="2"><font color="#ffffff"><%=objRs(i)%>
</font><font color="#ffffff"></font></Th>

<%

next
response.write "</TR></Th>"
objRs.Movenext
Loop
response.write"</TABLE><BR>"+vbcrlf
end if
-----------------------------------------------------
questa è la pagina rarita.asp


<%
url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/euro.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open url_DB
Set RecSet = Server.CreateObject("ADODB.Recordset")
' PRELEVA I DATI DELLA NEWS SELEZIONATA


SQL = " SELECT DISTINCT Monete.ID, Monete.IDDescr, Monete.Conservazione, Monete.[data inserimento], Monete.Stato, Monete.descrizione, Monete.fdc, Monete.[Anno Conio], Last(RARITA.RARITA) AS UltimoDiRARITA, Monete.possesso, Monete.serie, Monete.Segno, Monete.foto, Max(Format(rarita.circolanti,'##,##0')) as Maxdicircolanti, Max(Format(rarita.divfdc,'##,##0')) as Maxdidivfdc, Max(Format(rarita.divfs,'##,##0')) as Maxdidivfs, Max(Format(rarita.tiratura,'##,##0')) as Maxditiratura FROM RARITA INNER JOIN Monete ON (RARITA.UNITA = Monete.IDDescr) AND (RARITA.ANNO = Monete.[Anno Conio]) AND (RARITA.STATO = Monete.Stato) GROUP BY Monete.ID, Monete.IDDescr, Monete.Conservazione, Monete.Stato, Monete.[Anno Conio], Monete.[data inserimento], Monete.fdc, Monete.possesso, Monete.descrizione, Monete.serie, Monete.Segno, Monete.foto, RARITA.CIRCOLANTI, RARITA.DIVFDC, RARITA.DIVFS, RARITA.TIRATURA HAVING (((monete.id)= " & Request.QueryString("id") &" ))"
RecSet.Open SQL, Conn, adOpenStatic




%>
<TABLE border="1" id="table5" style="width: 98%">
<TR>
<TD bgcolor="#D9D9D9">
<p style="text-align: center">
<b><font face="Verdana" size="2">


Dettaglio moneta: <% Response.Write RecSet("stato")%>&nbsp; ANNO:


<% Response.Write Recset("anno conio")%>&nbsp;


<% Response.Write Recset("id")%></font></b><p style="text-align: center">
<b><font face="Verdana" size="2">&nbsp;


<% Response.Write Recset("descrizione")%></font></b>

&nbsp;- &nbsp;- &nbsp;- <b><font face="Verdana" size="2">AGGIUNTA IL</font></b>:


<% Response.Write Recset("data inserimento")%></font></b><table border="1" width="100%" id="table6">
<tr>
<td style="text-align: center"><b>ZECCA</b></td>
<td style="text-align: center"><b>SERIE</b></td>
<td style="text-align: center"><b>POSSESSO</b></td>
<td style="text-align: center"><b>FDC</b></td>
</tr>
<tr>
<td style="text-align: center"><b><font face="Verdana" size="2">


<% Response.Write Recset("segno")%></td>
<td style="text-align: center"><b><font face="Verdana" size="2">


<% Response.Write Recset("serie")%></td>
<td style="text-align: center"><b><font face="Verdana" size="1">

<% if recset("possesso") = true then %>
<input type="checkbox" name="possesso" value="ON" <% Response.Write Recset("possesso")%> Checked="ON"></td>

<% else %>
<input type="checkbox" name="possesso" value="ON" <% Response.Write Recset("possesso")%> UnChecked="OFF"></td>

<% end if %>

<td style="text-align: center"><b><font face="Verdana" size="2">

<% if recset("FDC") = true then %>
<input type="checkbox" name="possesso0" value="ON" <% Response.Write Recset("FDC")%> Checked="ON"></td>
<% else %>
<input type="checkbox" name="possesso0" value="ON" <% Response.Write Recset("FDC")%> UnChecked="OFF"></td>

<% end if %>
</tr>

<tr>
<td style="text-align: center"><b>CIRCOL.</b></td>
<td style="text-align: center"><b>DIV. FDC</b></td>
<td style="text-align: center"><b>DIV. FS</b></td>
<td style="text-align: center"><b>TOT.TIR.</b></td>
</tr>

<tr>
<td style="text-align: center"><b>
<font face="Verdana" size="1" color="#0000FF">


<% Response.Write Recset("maxdicircolanti")%></td>
<td style="text-align: center"><b>
<font face="Verdana" size="1" color="#0000FF">


<% Response.Write Recset("maxdidivfdc")%></td>
<td style="text-align: center"><b>
<font face="Verdana" size="1" color="#0000FF">

<% Response.Write Recset("maxdidivfs")%></td>
<td style="text-align: center"><b>
<font face="Verdana" size="1" color="#000000">

<% Response.Write Recset("maxditiratura")%></td>

</tr>

<tr>
<td style="text-align: center"><b>RARITA&#39;</b></td>
<td style="text-align: center">&nbsp;</td>
<td style="text-align: center"><b>CONSERV.</b></td>
<td style="text-align: center">&nbsp;</td>
</tr>

<tr>
<td style="text-align: center"><b><font face="Verdana" size="2">


<% Response.Write Recset("ultimodirarita")%></td>
<td style="text-align: center"><b><font face="Verdana" size="2">


</td>
<td style="text-align: center"><b><font face="Verdana" size="2">


<% Response.Write Recset("conservazione")%></td>
<td style="text-align: center"><b><font face="Verdana" size="2">

</td>

</tr>


</table>
<b><font face="Verdana" size="2">


<p style="text-align: center">


<img border="0" src="<%=RecSet("foto")%>" alt="visualizza la moneta"></TABLE>
</body>
</html>
<%
RecSet.Close
Conn.Close
Set Conn = Nothing
%>
---------------------------------------------
quando apre la pagina rarita.asp lui non cerca il record esatto ma fa vedere sempre il record id 1
boh...
333 messaggi dal 05 novembre 2012
Ciao,

perdonami, probabilmente per un mio limite ma fatico a comprendere il codice che hai postato...

Senza entrare troppo nel dettaglio del tuo codice, vediamo se ragionando sulla logica riusciamo a fare qualche passo in avanti...

Prima pagina (austria.asp)

Non vedo la modifica suggerita, ma sono fiducioso che l'hai provata e poi hai ripristinato la versione precedente... :-)

In questa pagina vuoi visualizzare in una tabella, tante righe quanti sono gli anni di conio delle monete presenti a db, corretto?

Seconda pagina (rarita.asp)

Prova (se non hai ancora provato) a richiamare (direttamente da browser) la pagina raritag.asp?id=XXX, sostituendo XXX con un id a piacimento...cosa succede? visualizzi le informazioni corrette?

Quando parli di campi incrociati a cosa ti riferisci? Al fatto che stai utilizzando una join?

Per curiosità...livello di conoscenza sql access o sql in generale? livello di conoscenza asp o web in generale?

/Ciao
Modificato da scioCoder il 21 febbraio 2019 23:46 -

Alessio
27 messaggi dal 20 dicembre 2018
ciao e grazie della risposta. sono appena rientrato dal lavoro. allora la query a campi incrocati o crosstab è un raggruppamento che si utilizza per spostare le intestazioni delle colonne in righe e le righe in colonne. il problema è che quello che si vede non corrisponde esattamente ad un recordset ma è una vista migliore della tabella. Nel mio caso mi trovo come intestazione delle righe il campo anno dove a sinistra ci sono gli anni tipo 1999, 2000, 2001 ecc..., come intestazione colonne 1c, 2c. 5c ecc. e come valore mi trovo una checkbox corrispondente al campo possesso dove se è spuntata è vero e quindi ho la moneta, in caso contrario non è spuntata. Non posso inserire il campo id che servirebbe per collegare questa pagina asp con quella rarita.asp dove ci sarebbe il dettaglio della moneta, perché altererebbe la visione della maschera.

Per quantoriguarda le conoscenze di sql devo dirti che sono programmatore access da 20 anni e non ho problemi ad utilizzare le sql. Per quanto riguarda la conoscenza di asp sono un principiante che pero' capisce quello che legge. forse se ti mandassi magari via email la pagina austria.asp cosi come la vedo e quella rarita forse si capirebbe meglio quello che avviene.
grazie anticipatamente dell'aiuto. è molto prezioso.
ciao
felice
333 messaggi dal 05 novembre 2012
Ciao Felice,

allora la query a campi incrocati o crosstab è un raggruppamento che si utilizza per spostare le intestazioni delle colonne in righe e le righe in colonne

ah ok, io lo conosco come pivoting :-)

forse se ti mandassi magari via email la pagina austria.asp cosi come la vedo e quella rarita forse si capirebbe meglio quello che avviene

non serve, basta quello che hai postato...

mi sono riletto i post di questa domanda...scusa se insisto

CmdSQL="TRANSFORM IIF(first(monete.possesso)=true, '<input type=""checkbox"" name=""possesso"" onclick=""google(' + monete.id + ')"" Checked=""ON""> ',IIF(First(monete.possesso)=false,'<input type=""checkbox"" name=""possesso"" onclick=""google(' + monete.id + ')"" value="""" unChecked=""OFF"">','-'))"
CmdSQL=CmdSQL+"SELECT monete.[anno conio] FROM monete where monete.stato = 'austria' and monete.iddescr <> 2000 "
CmdSQL=CmdSQL+"GROUP BY monete.[anno conio] "
CmdSQL=CmdSQL+"PIVOT [iddescr];"

function google(id) {
   window.location = "http://raritag.asp?id=id";
}


Ma questa modifica l'hai provata?

Seconda pagina (rarita.asp)

Prova (se non hai ancora provato) a richiamare (direttamente da browser) la pagina raritag.asp?id=XXX, sostituendo XXX con un id a piacimento...cosa succede? visualizzi le informazioni corrette?


e questa? quale è l'esito?

/Ciao

Alessio

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.