Newsgroup: it.comp.www.asp
Titolo: Aiuto, errore con modulo ricerca database

Salve, volevo realizzare una semplice pagina di ricerca.
In pratica c'e' una pagina htm con un campo testo nel quale si inserisce un
certo valore.
Questo valore viene inviato con GET (o POST) ad una pagina ASP che provvede
a mostrare a video il contenuto di alcuni campi di un DB filtrandoli per il
valore ricercato.
Il fatto è che la cosa non funziona.
Mi ritorna questo valore:
      Impossibile visualizzare la pagina
      Si è verificato un problema a livello della pagina che si desidera
visualizzare che ne impedisce la visualizzazione.
--------------------------------------------------------------------------
      Please try the following:
        a.. Fare clic sul pulsante Aggiorna o riprovare più tardi.
        b.. Aprire la localhost home page e cercare i collegamenti alle
informazioni desiderate.
      HTTP 500.100 - Errore interno del server - errore ASP
      Internet Information Services
--------------------------------------------------------------------------
      Informazioni tecniche (per il personale del supporto tecnico)
        a.. Tipo di errore:
        Provider (0x80004005)
        Errore non specificato.
        /CorsoASP/db.asp, line 15
        b.. Tipo di browser:
        Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
        c.. Pagina:
        GET /CorsoASP/db.asp
        d.. Ora:
        mercoledì 10 marzo 2004, 23.16.16
        e.. Informazioni aggiuntive:
        Supporto Microsoft
Il fatto è che non lo fa sempre. Ad esempio se chiudo il browser ed aspetto
un po' e poi riprovo, funziona, ma se subito dopo richiamo la pagina del
form e riprovo mi da l'errore che ho scritto qui sopra.
Dove sbaglio?
Ecco il codice della pagina del modulo:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"
http://www.w3.org/TR/html4/loose.dtd
">
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="form1" method="get" action="db.asp">
<input name="region" type="text" id="region">
<input type="submit" name="Submit" value="Invia">
</form>
</body>
</html>
Ecco il codice della pagina che mi crea l'elenco
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/Prova.asp" -->
<%
Dim Recordset1__MMColParam
Recordset1__MMColParam = "1"
If (Request.QueryString("region") <> "") Then
Recordset1__MMColParam = Request.QueryString("region")
End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows
Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_Prova_STRING
Recordset1.Source = "SELECT * FROM LOCATIONS WHERE REGION_ID = " +
Replace(Recordset1__MMColParam, "'", "''") + " ORDER BY LOCATION_NAME ASC"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()
Recordset1_numRows = 0
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"
http://www.w3.org/TR/html4/loose.dtd
">
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="100%" border="1">
<tr>
<td>code</td>
<td>address</td>
<td>fax</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td><%=(Recordset1.Fields.Item("CODE").Value)%></td>
<td><%=(Recordset1.Fields.Item("ADDRESS").Value)%></td>
<td><%=(Recordset1.Fields.Item("FAX").Value)%></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
Ecco il codice del file Connections/Prova.asp
<%
' FileName="Connection_odbc_conn_dsn.htm"
' Type="ADO"
' DesigntimeType="ADO"
' HTTP="false"
' Catalog=""
' Schema=""
Dim MM_Prova_STRING
MM_Prova_STRING = "dsn=TrioMotors;"
%>
L'ho creato seguendo la guida di Dreamweaver.
Inoltre su un altro PC mi dà i seguenti errori:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Driver ODBC Microsoft Access] Impossibile usare "(sconosciuto)".
File già in uso.
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Driver ODBC Microsoft Access] Il modulo di gestione di database
Microsoft Jet non è in grado di aprire il file '(sconosciuto)'. Il file è
già aperto con accesso esclusivo da un altro utente o è necessario disporre
dell'autorizzazione per visualizzare i dati.

 visualizzare i dati.
Qui è un problema di permessi nella cartella del database che devono essere
attivi in lettura/scrittura/ecc per l'utente IUSR_nomemacchina.
Ciao
-- 
AZ [Microsoft .NET MVP]
.NET Community: 
http://www.aspitalia.com/
Il mio blog: 
http://blogs.aspitalia.com/az/
Microsoft MVP: 
http://italy.mvps.org/
Sito personale: 
http://ciclismo.sitiasp.it/

 attivi in lettura/scrittura/ecc per l'utente IUSR_nomemacchina.
Il PC in questione č un XP Professional ed il DB si trova o sul desktop o
nella cartella del progetto nella wwwroot.
IL problema si ripete anche se ne creo uno nuovo o utilizzo quello gią
presente con XP (quello di esempio, credo.)
Grazie

 Grazie


 Ma perchč alcune volte funziona ed altre no?
ti stai rispondendo da solo... fino a che usi il modo visuale e non sai
esattamente come funziona... puo' essere normale che le cose non vadano per
il verso giusto...
-- 
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
Le aziende devono scendere dalla loro torre d'avorio e parlare
con la gente con la quale vogliono entrare in contatto.

 ha scritto nel messaggio
news:c2skd8$21v2si$2...@ID-192116.news.uni-berlin.de...
Allora, credo di aver risolto.
Come prima cosa ho scaricato un aggiornamento di Jet (?) dal sito Microsoft
poichè ogni volta cha privo un DB di accesso mi usciva un avviso ed o
pensato che potesse essere quello a dare problemi.
Poi ho abbassato le protezioni per le espressioni pericolose, dato che anche
questo mi faceva uscire un avviso ad ogni apertura del DB.
La pagina funzionava solo ogni tanto.
Ho provato allora ad inserire la stringa di connessione seguente:
"Driver={Microsoft Access Driver (*.mdb)};
DBQ=C:\Inetpub\wwwroot\CorsoASP\db1.mdb"
e tutto ha funzionato.
Possibile che non posso usare il DSN?
Come mai trovavo sempre nella cartella del DB un file con lo stesso nome del
db con un lucchetto vicino sull'icona e con scritto informazioni di blocco
su record di Microsoft Access?.
Potrebbe darsi che non veniva chiusa la connessione?
La connessine con il db va chiusa alla fine di ogni pagina?
Grazie

 La connessine con il db va chiusa alla fine di ogni pagina?
Diciamo che va SEMPRE chiusa ogni qualvolta la si è aperta.
L'ideale è aprirla IMMEDIATAMENTE PRIMA di quando ti serve, e chiuderla 
IMMEDIATAMENTE DOPO che non ti serve più. Questo vale per sia per 
connessioni che per recordset, oltre che per qualsiasi oggetto, in 
generale.
Aprire a inizio pagina e chiudere alla fine può essere comodo per 
vedere meglio il codice, ma io lo trovo assolutamente stupido.
Poi è buona norma anche annullare l'oggetto
'crei l'oggetto
Set conn = .....
'lo apri, usi....
Conn.open...
....
Conn.Close()
'lo annulli
set conn=nothing