Nuovo problema su restituzione dati da database access

  • Creatore Discussione Creatore Discussione Toscano
  • Data di inizio Data di inizio

Toscano

Utente Attivo
27 Apr 2012
31
0
0
Firenze
Questo problema, sicuramente per chi ha un po' d'esperienza è una fesseria.
Mi spiego: ho una pagina asp che legge e restituisce i dati da un database access ordinati in una tabella.
Questi dati sono 10 record che hanno in un campo un determinato nome:
ad esempio se a nome corrisponde Pippo vengono visualizzati.

Il problema è che se la parola Pippo non c'è la pagina mi restituisce un errore invece io vorrei che mi restituisse un messaggio del tipo La parola Pippo non c'è

Vi posto il codice della pagina:

<%@LANGUAGE = VBScript%>
<%
' DEFINISCO LE VARIABILI CHE MI SERVONO PER L'APPLICAZIONE
Dim sc, cn, rs, quanti, pag, contatore

' DEFINISCO LA STRINGA DI CONNESSIONE
sc = ""
sc = sc & "driver={Microsoft Access Driver (*.mdb)};dbq="
sc = sc & Server.MapPath("data/data.mdb")

' IMPOSTO LA CONNESSIONE EDIL RECORDSET
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")

' APRO LA CONNESSIONE COL DATABASE
cn.Open sc

' DEFINISCO IL NUMERO DI RECORD DA VISUALIZZARE PER OGNI PAGINA
quanti = 10

' RECUPERO IL NUMERO DI PAGINA CORRENTE
' E CONTROLLO CHE NON SIA INFERIORE A 1
pag = Request.QueryString("pag")
If IsNumeric(pag) = False Or pag < 1 Then pag = 1

' IMPOSTO UN CONTATORE
contatore = 0
%>
<html>
<head>
<title>Paginazione dei risultati di query molto lunghe in ASP</title>
<style>a { color: blue; }</style>
</head>
<body>
<font face="arial" size="2">
<table align="left" width="300" border="1" >

<%
' APRO IL RECORDSET
rs.Open "SELECT * FROM Contatti WHERE NomeInsegnante ='Pippo'", cn, 1
' EFFETTUO MATERIALMENTE LA PAGINAZIONE
rs.PageSize = quanti
rs.AbsolutePage = pag
' ESEGUO IL CICLO
While rs.EOF = False And contatore < quanti
%>
<tr><td><%=rs ("Cognome e classe")& " - prenotato con prof." & rs("NomeInsegnante")%></td></tr>
<%
rs.MoveNext
' INCREMENTO IL VALORE DEL CONTATORE
contatore = contatore + 1
Wend
%>
</table>

</body>
</html>
<%
' UN PO DI PULIZIA...
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%>


Qualche suggerimento?
 
Ciao,

if rs.EOF Then se non esiste o non corrisponde

if NOT rs.EOF Then se esiste o corrisponde

in un ciclo

do while rs.EOF se non esiste o corrisponde

do while not rs.EOF se esiste o corrisponde


Codice:
<%@LANGUAGE = VBScript%>
<%
' DEFINISCO LE VARIABILI CHE MI SERVONO PER L'APPLICAZIONE
Dim sc, cn, rs, quanti, pag, contatore

' DEFINISCO LA STRINGA DI CONNESSIONE
sc = ""
sc = sc & "driver={Microsoft Access Driver (*.mdb)};dbq="
sc = sc & Server.MapPath("data/data.mdb")

' IMPOSTO LA CONNESSIONE EDIL RECORDSET
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")

' APRO LA CONNESSIONE COL DATABASE
cn.Open sc

' DEFINISCO IL NUMERO DI RECORD DA VISUALIZZARE PER OGNI PAGINA
quanti = 2

' RECUPERO IL NUMERO DI PAGINA CORRENTE
' E CONTROLLO CHE NON SIA INFERIORE A 1
pag = Request.QueryString("pag")
If IsNumeric(pag) = False Or pag < 1 Then pag = 1

' IMPOSTO UN CONTATORE
contatore = 0
%>
<html>
<head>
<title>Paginazione dei risultati di query molto lunghe in ASP</title>
<style>a { color: blue; }</style>
</head>
<body>

<table align="left" width="300" border="1">

<%
' APRO IL RECORDSET
rs.Open "SELECT * FROM Contatti WHERE NomeInsegnante ='Pippo'", cn, 1
' EFFETTUO MATERIALMENTE LA PAGINAZIONE

''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' Imposto un nome variabile per un dato non presente
dim ERRORE

' se il dato non è presente
if rs.EOF Then

' Il Messaggio visualizzato
ERRORE = "Record cercato non presente."

' Stampo a video il messaggio e aggiungo i tag
Response.Write"<tr><td><font face=""arial"" size=""2"">" & ERRORE & "</font></td></tr>"& vbCRLF &"</table>"& vbCRLF &"</body>"& vbCRLF &"</html>"

' Blocco l'esecuzione delle istruzioni successive
Response.end

' Continuo il ciclo di istruzioni se i dati corrispondono	
else

rs.PageSize = quanti
rs.AbsolutePage = pag
' ESEGUO IL CICLO

' Chiudo il controllo if rs.EOF Then 
end if

''''''''''''''''''''''''''''''''''''''''''''''''''''''''

do while not rs.EOF And contatore < quanti
%>
<tr><td><font face="arial" size="2"><%=rs ("Cognome e classe")& " - prenotato con prof. " & rs("NomeInsegnante")%></font></td></tr>

<%
rs.MoveNext
' INCREMENTO IL VALORE DEL CONTATORE
contatore = contatore + 1
loop
%>
</table>

</body>
</html>

<%
' UN PO DI PULIZIA...
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%>


Valeria.
 

Discussioni simili