27 messaggi dal 10 giugno 2002
Ciao ragazzi, chissà se qualcuno mi risponderà? Devo lanciare assolutamente uno script su un database Access 2000 per effettuarne l'amministrazione e per domani devo pure consegnarlo.
Il problema è il seguente:
la connessione al database fallisce dandomi il seguente errore:
*************************************************************************************
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Driver ODBC Microsoft Access]Errore generale. Impossibile aprire la chiave 'Temporary (volatile) Jet DSN for process 0xd4c Thread 0xee0 DBC 0x2072104 Jet' del Registro di sistema.
*************************************************************************************

Ho controllato sulla KB di Microsoft e l'errore 0x80004005 risulta non specificato. Già ho avuto problemi in passato riguardo alla connessione, allora avevo Windows 2000 SP2. La connessione, infatti mi fnzionava, fino all'atro ieri, sotto Win2K-SP2. Adesso, ho acquistato un nuovo computer con Win XP PRO-SP1 e non funziona più. Credo di aver capito che il problema dovrebbe essere nel driver ODBC o nel provider OLE DB sul database Jet DSN. Ho installato Microsoft Office 2000 (passerò a XP fra breve) e ho visto sul sito di Microsoft che Office installa sul sistema suoi driver, quindi ho provveduto ad installare l'MDAC 2.7, ma tutto è come prima. Ci sarebbero anche altre cosa da scaricare (parlo di driver ecc...), ma ho paura di incasinare il sistema, visto che gli sto dietro da due settimane per problemi hardware.

Qualcuno saprebbe consigliarmi su cosa fare? Altrimenti sono in una barca di guai, ovvero devo modificare 5000 record manualmente.

Il codice che utilizzo è il seguente:

file connessione.asp:
<%
dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")objConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};" & "DBQ=" & server.MapPath("../database/db.mdb") & ";uid=Amministratore;pwd=password"
%>

il file view_data.asp:

<%@LANGUAGE="VBSCRIPT"%>
<%Option Explicit%>
<% Server.ScriptTimeout = 500000 %>
<% response.buffer = false%>
<!--#include file="connessione.asp"-->
<%
Dim objrs, sqlstring, contOcc
contOcc = 0
sqlstring = "SELECT id, cog_rs, nome FROM customers WHERE cog_rs LIKE '% %';"
set objrs = server.CreateObject("adodb.recordset")
objrs.open sqlstring, objconn
%>

<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<p>DATI CHE HANNO (spazio) NEL CAMPO COG_RS:</p>
<p>&nbsp;</p>
<%
if not objrs.bof or not objrs.eof then
%>
<table width="500" border="1" cellspacing="2" cellpadding="0">
<tr>
<td>ID</td>
<td>COG / RS</td>
<td>NOME</td>
</tr>
<%
do while not objrs.eof
contOcc = contOcc + 1
%>
<tr>
<td><%=objrs("id")%></td>
<td><%=objrs("cog_rs")%></td>
<td><%=objrs("nome")%></td>
</tr>
<%
objrs.movenext
loop
%>
</table>
<table width="500" border="1" cellspacing="2" cellpadding="0">
<tr>
<td>Totale Occorrenze: <%=contOcc%></td>
</tr>
</table>
<%
end if ' not objrs.bof or not objrs.eof
%>
</body>
</html>
<%
objrs.close
set objrs = nothing
objconn.close
set objconn = nothing
%>


GRAZIE DI CUORE A CHI MI AIUTERA'
2.907 messaggi dal 15 maggio 2001
Contributi
Devi dare i permessi di scrittura alla cartella in cui risiede il database
823 messaggi dal 05 agosto 2002
Non è che stai usando un utente con privilegi insufficienti?

Stick to your guns.
Formazione su MySQL o Firebird? Contattami!
27 messaggi dal 10 giugno 2002
Grazie per i vostri suggerimenti, ma ho già risolto il problema sbirciando dall'MSDN/KB di Microsoft. Infatti ho notato che bisogna usare il provider Microsoft.Jet.OLEDB.4.0. Dicono anche che c'è compatibilità tra OLE DB e ODBC. Infatti ho riprovato tutti e due i metodi e funzionano. Ora tutto funziona, ovvero la lettura funziona perfettamente, ma la scrittura, modifica e cancellazione vanno a farsi friggere, in tutte e due i casi.

file connessione.asp:
**************************************************************************************
<%
dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
'objconn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\crmSVEA\avvio\crmSVEA.mdb"
objConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};" & "DBQ=C:\crmSVEA\avvio\crmSVEA_tmp.mdb;uid=Amministratore;password=svea2002"
%>
**************************************************************************************
file view_data.asp
**************************************************************************************
<%@LANGUAGE="VBSCRIPT"%>
<%Option Explicit%>
<% Server.ScriptTimeout = 500000 %>
<% response.buffer = false%>
<!--#include file="connessione.asp"-->
<%
Dim objrs, sqlstring, contOcc
contOcc = 0
sqlstring = "SELECT id, cog_rs, nome FROM customers WHERE cog_rs LIKE '% %';"
set objrs = server.CreateObject("adodb.recordset")
objrs.open sqlstring, objconn

if not objrs.bof or not objrs.eof then
do while not objrs.eof
contOcc = contOcc + 1
%>
<%=objrs("id")%>&nbsp;|&nbsp;
<%=objrs("cog_rs")%>&nbsp;|&nbsp;
<%=objrs("nome")%>&nbsp;|*|&nbsp;&nbsp;
<a href="view_data.exec.asp?action=del&id=<%=objrs("id")%>" target="exec">Canc</a>&nbsp;|&nbsp;
<a href="view_data.exec.asp?action=update&id=<%=objrs("id")%>" target="exec">Agg.</a>&nbsp;|&nbsp;
<a href="view_data.exec.asp?action=edit&id=<%=objrs("id")%>" target="exec">Modifica</a><br><hr>
<%
objrs.movenext
loop
%>
<br>Totale Occorrenze: <%=contOcc%>
<%
end if ' not objrs.bof or not objrs.eof
%>
</body>
</html>
<%
objrs.close
set objrs = nothing
objconn.close
set objconn = nothing
%>
**************************************************************************************
file view_data.exec.asp
**************************************************************************************
<%@LANGUAGE="VBSCRIPT"%>
<%Option Explicit%>
<% Server.ScriptTimeout = 500000 %>
<% response.buffer = false%>
<!--#include file="connessione.asp"-->
<%
Dim action, id, nome, cognome
action = request.QueryString("action")
id = request.QueryString("id")

if action="del" then
Dim sqlstring
sqlstring = "DELETE FROM customers WHERE id=" & cInt(id) & ";"
'response.write sqlstring
objconn.Execute sqlstring
if objASPError.ASPCode > "" then
response.write ("Errore numero" & objASPError.ASPCode & " = " & objASPError.Description)
response.write ("<br> Impossibile continuare l'operazione")
else
response.write ("Cancellazione del record ID: " & id & ". Operazione eseguita con successo")
end if 'objASPError.ASPCode > ""
end if ' action="del"

objconn.close
set objconn = nothing
%>

**************************************************************************************
Ora quando vado a richiamare, ad esempio, il link "http://localhost/crmsvea/SCRIPTS/view_data.exec.asp?action=del&id=47" tutte e due i driver provvedono diligentemente a rinfaccairmi il seguente errore:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][Driver ODBC Microsoft Access] Impossibile eliminare dalle tabelle specificate.
/crmsvea/SCRIPTS/view_data.exec.asp, line 15 (objconn.Execute sqlstring).
Vorrei capire cosa è successo? visto che ho sempre effettuato questa operazione (objconn.execute) con la massima semplicità. Ho provveduto a rendere di scrittura le cartelle dove ho il database, anche se già lo era, ma non è cambiato nulla.

Disperato ho deciso di farlo sul vecchio computer con Win2K, ma, con mio stupore, il file view_data.asp mi dava come risultati solo 180 record che rispettavano la "where", contro i 3000 e passa di quando lo eseguivo su Xp. Non credo siano i driver, visto che su XP anche con ODBC il risultato resta lo stesso.

Per stasera devo consegnare il database con le modifiche apportate e tutto va male... vi prego, aiutatemi!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.