• User

    Prelevare un numero di parole dal database Access

    Ciao a tutti,
    da quello che vado a scrivere si capisce che non sono molto pratico di asp.

    Il mio PROBLEMA è questo: ho un database in Access e una pagina in asp che ne preleva i dati.

    Fino a qui non ci sono problemi, il problema nasce dal volere presentare solo un numero di parole di un record (il tipico articolo con il ...continua ).

    Cosa devo scrivere per avere una "anteprima" del campo descrizione??

    Questo è il codici che ho:

    <%        
    

    var Sql = "SELECT * FROM articoli ORDER BY id DESC";
    var Mostra = new ActiveXObject("ADODB.Recordset");
    Mostra.Open(Sql,Cn,1);
    var pag = parseInt(Request.QueryString("id"));
    if (isNaN(pag) || pag < 1) pag = 1;
    if (!Mostra.EOF) {
    Mostra.PageSize = 3;
    Mostra.AbsolutePage = pag;
    }
    var i = 0;%>
    <!--ARTICOLI-->
    <%while (!Mostra.EOF && i<3) {%>

    <h2><b>
    <%=Server.HTMLEncode(Mostra("titolo"))%></b><br>
    <font color="#696969"><%=Server.HTMLEncode(Mostra("descrizione"))%>
    </font>

    Grazie.


  • Super User

    Usa la funzione substring(strainga, indice, lunghezza) dove indice è l'indice della lettera da cui partire (nel tuo caso 0)


  • User

    Grazie per la risposta, ma non sono proprio pratico,
    questa funzione come la devo inserire?

    Esempio: io ho questo codice che so che mi preleva il testo
    dalla colonna "descrizione":

    <%=Server.HTMLEncode(Mostra("descrizione"))%>

    La funzione substring la devo mettere così

    <%=Server.HTMLEncode(Mostra(subtring("descrizione, 0, 100"))%>

    Scusami l'ignoranza ma non sono un programmatore (e si vede)


  • Super User

    no devi mettere

    <%=Server.HTMLEncode(subtring(Mostra("descrizion e, 0, 100"))%>


  • User

    Ciao e grazie per larisposta tempestiva,
    ho inserito il codice ma ora mi da:

    Microsoft JScript compilation error '800a03ee'
    Expected ')'
    /index.asp, line 78

    Prima di inserire il codice ho corretto alcuni errori di battitura,
    ti rinvio quello corretto:

    <%=Server.HTMLEncode(substring(Mostra("descrizione, 0, 100"))%>


  • Super User

    <%=Server.HTMLEncode(substring(Mostra("descrizione , 0, 100")))%>


  • User

    Ti stavo per riscrivere che avevo notato la parentesi
    ma ora mi da:

    **ADODB.Recordset error '800a0cc1'
    Item cannot be found in the collection corresponding to the requested name or ordinal.
    /index.asp, line 78

    Grazie per l'infinita pazienza!!!

    **


  • Super User

    Lo spazio in descrizione è solo un errore del forum? Perchè non sembra tutto attaccato come dovrebbe essere


  • User

    Si, il codice che ho inserito è:

    <%=Server.HTMLEncode(substring(Mostra("descrizione, 0, 100")))%>


  • Super User

    Scusa non avevo controllato il reto della funzone, ovviamente così non va...

    <%=Server.HTMLEncode(substring(Mostra("descrizione") , 0, 100)))%>


  • User

    Ho inserito il codice ma ho tolto una parentesi e mi da:
    **Microsoft JScript runtime error '800a138f'
    Object expected
    /index.asp, line 78

    Con la parentesi in più mi da:

    **

    Microsoft JScript compilation error '800a03ec'
    Expected ';'
    /index.asp, line 78
    Response.Write(Server.HTMLEncode(substring(Mostra("descrizione"), 0, 100))))
    ---------------------------------------------------------------------------^**
    **


  • User

    fai cosi:

    Response.Write Left(Mostra("descrizione"),100)

    cosi ti scrive i prinmi 100 caratteri...


  • User

    Grazie per l'aiuto ma mi da questo errore:

    Microsoft JScript runtime error '800a138f'

    Object expected

    /index.asp, line 83


  • User

    potresti postare il codice completo cosi possiamo aiutarti e capire dov è l errore?


  • User

    Riporto di seguito il codice completo:

    <%@LANGUAGE = JScript%>
    <%
    var Cn = new ActiveXObject("ADODB.Connection");
    var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("/mdb-database/csi.mdb");
    Cn.Open(Sc);

    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ".w3.org/TR/html4/loose.dtd">

    <html>
    <body leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">

    <%
    var Sql = "SELECT * FROM case ORDER BY id DESC";
    var Mostra = new ActiveXObject("ADODB.Recordset");
    Mostra.Open(Sql,Cn,1);

    var pag = parseInt(Request.QueryString("id"));
    if (isNaN(pag) || pag < 1) pag = 1;
    if (!Mostra.EOF) {
    Mostra.PageSize = 3;
    Mostra.AbsolutePage = pag;
    }
    var i = 0;

    %><!--ARTICOLI--><%while (!Mostra.EOF && i<3) {%>

    																							<tr height="72">
    																								<td valign="top" width="140" height="72"><img src='../public/immagini_articoli/<%=Server.HTMLEncode(Mostra("foto"))%>' alt="foto anteprima" height="102" width="140" border="0"></td>
    																								<td valign="top" height="72">
    																									<h2><b><%=Server.HTMLEncode(Mostra("titolo"))%></b><br>
    																																														<br>
    

    <%=Server.HTMLEncode(substring(Mostra("descrizione") , 0, 100))%>

    																										<br>
    																										<a href='articoli.asp?id=<%=Mostra("id")%>'>Continua &gt;&gt;</a></h2>
    																								</td>
    																							</tr>
    																							<tr height="20">
    																								<td colspan="2" valign="top" height="20"></td>
    																							</tr>
    																							<%
    		i++;
    		Mostra.Movenext();
    		 
    	}
    %>
    </table>

  • User

    ciao, prova così:

    [PHP]
    <%
    var Cn = new ActiveXObject("ADODB.Connection");
    var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("/mdb-database/csi.mdb");
    Cn.Open(Sc);

    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ".w3.org/TR/html4/loose.dtd">

    <html>
    <body leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">

    <%
    var Sql = "SELECT * FROM case ORDER BY id DESC";
    var Mostra = new ActiveXObject("ADODB.Recordset");
    Mostra.Open(Sql,Cn,1);

    var pag = parseInt(Request.QueryString("id"));
    if (isNaN(pag) || pag < 1) pag = 1;
    if (!Mostra.EOF) {
    Mostra.PageSize = 3;
    Mostra.AbsolutePage = pag;
    }
    var i = 0;

    %><!--ARTICOLI--><%while (!Mostra.EOF && i<3) {%>

    <tr height="72">
    <td valign="top" width="140" height="72"><img src='../public/immagini_articoli/<%=Mostra("foto")%>' alt="foto anteprima" height="102" width="140" border="0"></td>
    <td valign="top" height="72">
    <h2><b><%=Mostra("titolo")%></b><br>
    <br>

    <%=Left(Mostra("descrizione"),100)%>

    <br>
    <a href='articoli.asp?id=<%=Mostra("id")%>'>Continua >></a></h2>
    </td>
    </tr>
    <tr height="20">
    <td colspan="2" valign="top" height="20"></td>
    </tr>
    <%
    i++;
    Mostra.Movenext();

    }
    %>
    </table>
    [/PHP]


  • User

    Questo è l'errore che mi da:

    Microsoft JScript runtime error '800a138f'

    Object expected

    /index.asp, line 86

    La linea 86 è <%=Left(Mostra("descrizione"),100)%>

    Sto iniziando a perdere ogni speranza...


  • User

    sicuramente Mostra("descrizione") è vuoto o inesistente...è li l'errore


  • User

    Il campo descrizione esiste ed è più lungo di 100 caratteri,
    lo conferma il fatto che se lo richiamo con questo
    <%=Server.HTMLEncode(Mostra("descrizione"))%>
    mi appare tutto il testo contenuto nel database senza
    ombra di errori.
    A questo punto qualcuno sa consigliarmi uno strumento
    ex-novo per mostrare in una pagina il contenuto di
    un database con i campi Titolo, foto e descrizione (con il discorso che abbiamo fatto fin'ora).

    Fino ad ora ho utilizzato quei codici perchè sono gli unici che conosco
    e che ho preso da un vecchio tutorial e che mi funzionano,
    ma se potete consigliarmi qualcosa di migliore va bene ugualmente.

    Grazie