• 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