6 messaggi dal 17 marzo 2004
Ho difficoltà a usare il mio sito in asp in locale con XP Pro (in remoto on line funziona perfettamente ed anche in locale con Win ME). L'errore è:
Errore di run-time di Microsoft VBScript (0x800A01A8)
Necessario oggetto: 'DBRecordSet(...)'
/hazi.biz/includes/manager-inc.asp, line 305

Non trova evidentemente il db. Eppure ho cercato di dare il percorso in vario modo: indirizzo preciso, cartella virtuale ... Qualcuno sa se c'è un qualche settaggio particolare per IIS, qualcosa che lo differenzi profondamente da Win ME ad esempio per il riconoscimento dei percorsi o anche nel rapporto con i DB (in questo caso è un DB in Access)
Grazie
Umberto
2.907 messaggi dal 15 maggio 2001
Contributi
posta il codice che hai usato..
2.907 messaggi dal 15 maggio 2001
Contributi
dimenticavo, se utilizzi Norton occhio al Block Script
6 messaggi dal 17 marzo 2004
Grazie
Ho tolto il Block Script da Norton
Codice:
File di configurazione
Const DB_MAIN = "main.mdb"
Const GLOBAL_SITE_DATABASE_PATH = "c:\inetpub\Wwwroot\hazi.biz\mdb-database\"

File manager-inc.asp
Set oCn = DBConnexion(DB_MAIN)


Funzione di apertura del db
Function DBConnexion(sDBName)
Dim oPoolCn

If Not IsObject(oPoolConnection) Then
Set oPoolConnection = Server.CreateObject("Scripting.Dictionary")
End if

'if not present, open connection and add it to the dictionary
If Not oPoolConnection.Exists(sDBName) Then
Set oPoolCn = DBTrueConnexion(sDBName)
oPoolConnection.Add sDBName, oPoolCn
End If
Set DBConnexion = New ConnectionPool
DBConnexion.ConnectionName = sDBName
End function

' Gives a database's connection
' IN : sDBName (string) : database's name
' OUT : (Object) : Connection
Function DBTrueConnexion(sDBName)
Dim oCn, sConnString, oFs, sDBPath

sDBPath = GLOBAL_SITE_DATABASE_PATH 'sDBPath = Server.MapPath(GLOBAL_SITE_DATABASE_PATH)

Set oCn = Server.CreateObject("ADODB.Connection")

Select case GLOBAL_DB_TYPE
case "MSACC"
sConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & sDBPath & "\" & sDBName
if GLOBAL_DB_PASSWORD <> "" then
sConnString = sConnstring & ";PWD=" & GLOBAL_DB_PASSWORD
end if
case "MYSQL"
sConnString = "driver=MySQL ODBC 3.51 Driver;server=" & GLOBAL_SITE_DATABASE_PATH & ";uid=" & GLOBAL_DB_LOGIN & ";pwd=" & GLOBAL_DB_PASSWORD & ";database=" & sDBName
case Else
sConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & sDBPath & "\" & sDBName
if GLOBAL_DB_PASSWORD <> "" then
sConnString = sConnstring & ";PWD=" & GLOBAL_DB_PASSWORD
end if
End Select

On Error Resume Next
oCn.Open sConnString
If Err.number <> 0 Then
Response.Write "<br>" & GetTranslation("LANG_SQL_ERROR")
If IsAuthorizedBin(ROLE_ADMINISTRATOR) Then
Response.Write " " & Err.number & ": " & Err.Description & "<br>"
Response.Write "Connection String : " & sConnString & "<br>"
End If
Err.Clear
End If
On Error Goto 0

Set DBTrueConnexion = oCn
End Function


Pensavo cosa utile reinstallare IIS ...
Umberto
2.907 messaggi dal 15 maggio 2001
Contributi
Ovviamente quando richiami la funzione Dbconnexion passi il nome del database come parametro giusto ?
L'errore fa riferimento ad una chiamata a DBRecordSet() che xò non scorgo nella porzione di codice che hai postato...
Si trova attorno alla riga 305 del tuo codice...
Dovresti postare la parte di codice in cui usi DBRecordSet()
6 messaggi dal 17 marzo 2004
La funzione nella quale viene segnalato l'errore è questa:
Function VerifySecuredPassword()
Dim oCn, oRs, rSQL, sTemp

sTemp = ""

rSQL = "SELECT uPassword FROM users WHERE uRole=" & ROLE_ADMIN
Set oCn = DBConnexion(DB_MAIN)
Set oRs = DBRecordSet(oCn, rSQL)
If Not oRs.EOF Then
sTemp = oRs(0)
End If
If sTemp = "xxxxxxxx" Then
VerifySecuredPassword = true
else
VerifySecuredPassword = false
End If
oRs.Close
Set oRs = Nothing
oCn.Close
Set oCn = Nothing
End Function

L'errore è all'istruzione "Set oRs = DBRecordSet(oCn, rSQL)"
che manda alla funzione seguente
' Gives a recordset from oCn, query rSQL
' IN : oCn (Object) : database's connection
' : rSQL (string) : query
' OUT : (Object) : recordset
Function DBRecordSet(oCn, rSQL)
On Error Resume Next
if TypeName(oCn) = "ConnectionPool" then
Set DBRecordSet = oPoolConnection.Item(oCn.ConnectionName).Execute(rSQL)
else
Set DBRecordSet = oCn.Execute(rSQL)
end if
If Err.number <> 0 Then
Response.Write "<br>" & GetTranslation("LANG_SQL_ERROR")
If IsAuthorizedBin(ROLE_ADMINISTRATOR) Then
Response.Write " " & Err.number & ": " & Err.Description & "<br>"
Response.Write "SQL : " & rSQL & "<br>"
End If
Err.Clear
End If
On Error Goto 0
End Function

Non l'ho inviata in precedenza perché ho l'impressione che il problema è nel collegamento generico ai database. In nun altro caso in cui tento di aprire direttamente un database (
Set cnn1 = Server.CreateObject("ADODB.Connection")
openStr = "driver={Microsoft Access Driver (*.mdb)};" & "dbq=" & Server.MapPath ("database\contatore.mdb"
cnn1.Open openStr,"",""
)
mi dà come 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 0xde4 Thread 0xf28 DBC 0x1010064 Jet' del Registro di sistema.

Grazie per la pazienza perché probabilmente si tratta di una sciocchezza legata alla mia inesperienza su IIS
Umberto
2.907 messaggi dal 15 maggio 2001
Contributi
Svelato l'arcano

Se mi dici che prima evitavi di usare quella funzione i conti sul primo tipo di errore sono fatti !
Ovviamente non potendo istanziare un nuovo oggetto di tipo DBRecordset diceva "Necessario oggetto: 'DBRecordSet(...)'"

Il secondo errore invece è legato ai permessi della directory in cui si trova il tuo database ! Dagli i permessi di lettura e scrittura e dovresti aver risolto !
6 messaggi dal 17 marzo 2004
Non ho capito quale sia il primo tipo di errore; nel database ci sono anche i dati dell'admin compresa la pw, quindi non capisco mperché non debba leggere il db né tantomeno perché non trovi i dati che comunque ci sono.
Ho settato i permessi, mi sembra che ci siano ma l'errore del secondo caso rimane lì.
So che deve funzionare (ho già provato alcuni mesi fa e tutto funzionò, ora invece sembra tutto bloccato.
Grazie
Umberto

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.