Newsgroup: it.comp.lang.javascript
Titolo: AIUTO X ASP

ciao a tutti, sto preparando una pagnia asp che contiene date di una
manifestazione ma, non essendo un esperto, non riesco a far funzionare
alcune condizioni (credo molto semplici). MI POTETE DARE UNA MANO?
La seguente pagina va a perscare i dati da un db (access) e
restituisce l'elenco diviso per mesi. fino a qui tutto ok.
il problema č che vorrei che mi restituisse una frase nel caso in cui
non ci fossero "manifestazioni" in quel mese:
<%
var ADOConn = new ActiveXObject("ADODB.Connection");
var strConn = "";
strConn += "driver={Microsoft Access Driver (*.mdb)};";
strConn += "dbq=" + Server.MapPath("races.mdb");
ADOConn.Open(strConn);
var sql = "SELECT * FROM 2003 where gara=true and mese='gennaio' order
by giorno";
var ris = ADOConn.Execute(sql);
while (!ris.EOF) {
%>
<TR height="28">
<td bgcolor="#e5ffe4"><font face="verdana" color="#000000" size="1">
<%
if ( (ris("data")==null) || (ris("data").length==0) )
Response.Write("---");
else Response.Write("<p>");  Response.Write(ris("giorno")); 
Response.Write("</p>");
%></b></TD>
<TD bgcolor="#bbe8cb"><font face="verdana" color="#000000" size="1">
<%
if ( (ris("torneo")==null) || (ris("torneo").length==0) )
Response.Write("nessun torneo in programma");
else Response.Write("<p><a href=http://" + ris("link") + ">");
Response.Write(ris("competizione")); Response.Write("</a></p>");
 
%></TD>
<td bgcolor="#e5ffe4" width="340"><font face="verdana" color="#000000"
size="1">
<%
if ( (ris("dettagli")==null) || (ris("dettagli").length==0) )
Response.Write("---");
else   Response.Write("<p>");  Response.Write(ris("dettagli")); 
Response.Write("</p>");
%>
</b></TD>
</tr>
<%
ris.MoveNext();
}
%>
Il problema č che non considera minimamente le condizioni IF ELSE ma
non riesco a capire perchč!!
GRAZIE A TUTTI
ciao
critter

 non riesco a capire perchč!!
Ho dato solo una scorsa veloce e non so se ci sono altri errori.
Il problema e' che tu stai programmando in jscript e stai usando 
"scorciatoie buzzurre" da vbscript.
Un oggetto recordset (ad es ris, come nel tuo codice), possiede una 
collection "Fields" che contiene i campi, ovvero tanti oggetti "Field".
Un oggetto Field ha, tra le altre, una proprieta' "value" che ne 
contiene il valore.
Quindi, per recuperare il valore di un campo:
objRS.Fields("nomeCampo").value
Nella condizione riportata sopra hai confrontato un oggetto field con un 
null jscript e poi hai verificato che la sua proprieta' length (che non 
esiste, quindi undefined) sia uguale a 0. Ovviamente ambo le condizioni 
sono false e il codice all'interno del blocco if non viene eseguito.
Attenzione soprattutto alle date, perche' l'oggetto date di Access non 
corrisponde affatto all'oggetto Date di jscript.
P.S. Mi raccomando, alla fine chiudi e distruggi recordset e connessioni.

...

ti ringrazio molto ma, come ti ho detto che non sono molto esperto, e
non riesco a trovare la sintassi giusta per objRS.Fields!!!
mi puoi dire come devo impostare l'IF per i campi vuoti (null o a
lunghezza 0)?
non riesco proprio a capire, o mi da un errore generico o mi dice che
objRS.Fields č undefined... :-(
grazie in anticipo...
 Riccio

 objRS.Fields č undefined... :-(
Se non dico boiate a memoria direi che il motore asp "converte" il null 
object dei db Access nel null object di jscript, quindi in generale:
if(nomeRecordset.Fields("nomeCampo").value==null)
oppure
if(nomeRecordset.Fields("nomeCampo").value==undefined)
Se non ti aspetti valori come uno 0 numerico o una stringa vuota (mi 
raccomando e' una cosa ben diversa da un valore null), jscript converte 
automaticamente in un valore booleano cio' che si trova tra parentesi.
Quindi scrivendo semplicemente
if(nomeRecordset.Fields("nomeCampo").value)
ottieni false nei casi succitati (stringa vuota, zero numerico e null) e 
true in qualunque altro caso.
Se non mi hai trovato abbastanza chiaro posta il codice che hai modificato.

GRAZIE MILLE Andrea !!
TUTTO A POSTO, mi ci è voluto un attimo a causa della mia "scarsa"
conoscenza di jscript ma adesso funziona benissimo.
grazie ancora
RiCcIo