visualizzazione tabella

walkimi

Nuovo Utente
9 Ago 2009
4
0
0
ciao, ecco quello che vorrei fare:
allora cliccando su un hyperlink definito dalla stringa
<asp:hyperlinkfield headertext="Ditta"
SortExpression="Ditta"
datatextfield="Ditta"
datanavigateurlformatstring="report_pagamenti.aspx?Ditta1={0}"
datanavigateurlfields="Ditta" />

in una tabella mi manda alla pagina

http://localhost/MyWeb/report_pagamenti.aspx?Ditta1=**

quello che vorrei fare è che nella pagina venga visualizzata una tabella filtrata tramite il parametro/variabile Ditta1 cioè risultato dalla query

<asp:AccessDataSource runat="server" id="AccessDataSource1" DataFile="C:\Inetpub\wwwroot\myweb\controllo fatture.mdb" SelectCommand="SELECT Contratti.Ditta, Fatture.Numero, Fatture.[numero fattura], Fatture.[data fattura], Fatture.Importo, Fatture.descrizione FROM Contratti INNER JOIN Fatture ON Contratti.Numero = Fatture.Numero WHERE (((Contratti.Ditta)=&quot;**&quot;))">

dove al posto degli asterischi ci sia il nome della Ditta1 cliccata nell'altra pagina.
è solo un problema di sintassi... se qualcuno riesce velocemente ad aiutarmi.....
grazie
 
Ultima modifica:

Vins

Moderatore
Membro dello Staff
MOD
28 Lug 2009
238
19
0
Se risulta un errore di sintassi il problema sarà dovuto al fatto che nella query dopo il WHERE ci sono 3 parentesi aperte ma solo 2 vengono chiuse

WHERE (((Contratti.Ditta)=&quot;**&quot)">
 

walkimi

Nuovo Utente
9 Ago 2009
4
0
0
ciao,
no le parentesi vanno bene, nel post che ho fatto una è stata presa in uno smile.
il problema penso che sia che non riesco a portarmi dietro la scelta che faccio cliccando sull'hyperlink, nel senso che se clicco su uno dei link ad esempio "Spin" questo mi manda alla pagina
http://localhost/MyWeb/report_pagamenti.aspx?Ditta1=Spin

ora nella pagina report_pagamenti.aspx voglio inserire la query che ad un certo punto utilizzi la variabile (magari sto usando un termine non corretto) Ditta1 che abbia il valore "Spin".

premetto che nella pagina di origine non ho definito in alcun modo Ditta1, l'ho indicato semplicemente nei parametri, non so se questo può essere un problema.

ho provato ora se nella pagina di destinazione inserisco il codice

<%@Page Language="C#" Debug="true"%>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
if (Request.QueryString["Ditta1"] != null)
{
String id1 = Request.QueryString["Ditta1"];
Response.Write("La categoria corrente è " + Ditta1 );
dim passaggio;
}
}
</script>

che ho trovato in giro per il web in effetti mi restituisce il valore corretto di Ditta1 (nel caso "Spin").
se però vado a scrivere nella query Ditta1 cercando di cambiare apici in tutti i mdi, mi da errore.
allora o sbaglio la sintassi di indicare Ditta1 nella query, o devo definire in qualche modo il suo valore nella nuova pagina.
per completezza posto il codice della seconda pagina, che funziona ma mi restituisce sempre i dati filtrati per il valore WATG, che è quello che dovrebbe essere il valore di Ditta1 variabile.....

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Senza nome 1</title>
</head>

<%@Page Language="C#" Debug="true"%>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
if (Request.QueryString["id1"] != null)
{
String id1 = Request.QueryString["id1"];
Response.Write("La categoria corrente è " + id1 );
dim passaggio;
}
}
</script>

<body>
<form id="form1" runat="server">

<asp:AccessDataSource runat="server" id="AccessDataSource1" DataFile="C:\Inetpub\wwwroot\myweb\controllo fatture.mdb" SelectCommand="SELECT Contratti.Ditta, Fatture.Numero, Fatture.[numero fattura], Fatture.[data fattura], Fatture.Importo, Fatture.descrizione
FROM Contratti INNER JOIN Fatture ON Contratti.Numero = Fatture.Numero
WHERE (((Contratti.Ditta)=&quot;WATG&quot;))">
</asp:AccessDataSource>
<asp:GridView runat="server" id="GridView1" AutoGenerateColumns="False" DataSourceID="AccessDataSource1" AllowSorting="True">
<Columns>
<asp:boundfield DataField="Ditta" SortExpression="Ditta" HeaderText="Ditta">
</asp:boundfield>
<asp:boundfield DataField="Numero" SortExpression="Numero" HeaderText="Numero">
</asp:boundfield>
<asp:boundfield DataField="numero fattura" SortExpression="numero fattura" HeaderText="numero fattura">
</asp:boundfield>
<asp:boundfield DataField="data fattura" SortExpression="data fattura" HeaderText="data fattura">
</asp:boundfield>
<asp:boundfield DataField="Importo" SortExpression="Importo" HeaderText="Importo">
</asp:boundfield>
<asp:boundfield DataField="descrizione" SortExpression="descrizione" HeaderText="descrizione">
</asp:boundfield>
</Columns>
</asp:GridView>
</form>

</body>

</html>
 

Vins

Moderatore
Membro dello Staff
MOD
28 Lug 2009
238
19
0
Prova a fare così, quando recuperi id1 nel Page_Load costruisci la query nel modo seguente

AccessDataSource1.SelectCommand = String.Format(@"SELECT Contratti.Ditta, Fatture.Numero, Fatture.[numero fattura],
Fatture.[data fattura], Fatture.Importo, Fatture.descrizione
FROM Contratti INNER JOIN Fatture ON Contratti.Numero = Fatture.Numero
WHERE Contratti.Ditta='{0}' ", id1)

e nell'AccessDataSource1 togli il SelectCommand
 

walkimi

Nuovo Utente
9 Ago 2009
4
0
0
...ecco il secondo quesito...

Prova a fare così, quando recuperi id1 nel Page_Load costruisci la query nel modo seguente

AccessDataSource1.SelectCommand = String.Format(@"SELECT Contratti.Ditta, Fatture.Numero, Fatture.[numero fattura],
Fatture.[data fattura], Fatture.Importo, Fatture.descrizione
FROM Contratti INNER JOIN Fatture ON Contratti.Numero = Fatture.Numero
WHERE Contratti.Ditta='{0}' ", id1)

e nell'AccessDataSource1 togli il SelectCommand
ciao, grazie così funziona !
ora naturalmente ho una domanda ulteriore : supponiamo che in una pagina iniziale posso cliccare su 2 link , il primo mi trasmette il parametro "1" e il secondo il parametro "2". ora vorrei fare in modo che cliccando ad esempio su il primo mi vada nella pagina con l'accesso ad un database configurato con la query

AccessDataSource1.SelectCommand = String.Format(@"SELECT 1C.Ditta, 1F.Numero, 1F.[numero fattura],
1F.[data fattura], 1F.Importo, 1F.descrizione
FROM 1C INNER JOIN Fatture ON 1C.Numero = 1F.Numero
WHERE 1C.Ditta='{0}' ", id1)

mentre se clicco sul secondo al posto dell'"1" vorrei avere il "2", e così via in caso di altri link.

in pratica ho 2 tabelle una per contratti e l'altra per fatture, sempre con la stessa struttura ma legate ad attività diverse e vorrei chiamarle "1C" "1F" e "2C" "2F" e a seconda della scelta che faccio attraverso un link eseguire una query sull'una piuttosto che sull'altra.....

:book:
 

Vins

Moderatore
Membro dello Staff
MOD
28 Lug 2009
238
19
0
Supponendo che le tabelle si chiamino 1C,2C,1F e 2F puoi scrivere così:

//E’ il numero che recuperi
string numeroTabellaCorrente = "1";

string SelectCommand =
String.Format(@"SELECT {1}C.Ditta,
{1}F.Numero,
{1}F.[numero fattura],
{1}F.[data fattura],
{1}F.Importo,
{1}F.descrizione
FROM {1}C INNER JOIN {1}F ON {1}C.Numero = {1}F.Numero
WHERE {1}C.Ditta='{0}' ", id1, numeroTabellaCorrente);

{0} corrisponde a id1, {1} corrisponde a numeroTabellaCorrente.
Se numeroTabellaCorrente = "1" gli {1} verranno sostituiti con 1, numeroTabellaCorrente = "2" con 2 e così via