PDA

View Full Version : ASP e database, un aiuto per favore


mag1
25-02-2003, 08:32
Sto provando ad inserire delle pagine in ASP per gestire l’aggiornamento indirizzi email degli iscritti ad una newsletter list.

Le pagine scritte in ASP vengono visualizzate correttamente, ho un problema quando il codice tenta di accedere al file del database per scrivere o per leggere i dati; mi ritorna il seguente messaggio:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Can't open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt.
/prova newsletter/newsletter/iscrivi.asp, line 10

per pubblicare le pagine sul server uso Front Page 2002.
il server ha le estensione di front page e il supporto per ASP

Qualcuno sa darmi un’idea su come riuscire a far scrivere e leggere il database?

ciao

tas
25-02-2003, 09:24
Probabilmente il tuo database è stato creato con Access 2000 o XP mentre il server tenta di accedere al database con un driver ODBC per Access 97.

Prova a cambiare la stringa di connessione in questo modo:
set cn = Server.CreateObject("ADODB.Connection")
cn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/mdb-database/archivio.mdb")

Ovviamente, al posto di "mdb-database/archivio.mdb" metti il nome della cartella e dell'archivio giusti.

cionci
25-02-2003, 09:46
Meglio passare da OLEDB invece che da ODBC ;)

set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/mdb-database/archivio.mdb")


Per aprire un DB Access 97 basta scrivere OLEDB.3.51 al posto di OLEDB.4.0 :)

mag1
25-02-2003, 10:33
grazie appena ho 2 minuti provo poi vi faccio sapere

ciao

mag1
25-02-2003, 12:27
dunque il mio codice era esattamente identico a quello proposto da tas.

ho provato il codice come suggerito da cionci sia con 4.0 che con 3.51 ed ottengo il seguente messaggio di errore:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
/prova newsletter/newsletter/iscrivi.asp, line 11

altri suggerimenti?

grazie e ciao

P.S. il file ASP e' nel seguente direttorio
/prova newsletter/newsletter/iscrivi.asp
il file database invece e' nel seguente direttorio
/prova newsletter/mdb-database/newsletter.mdb

tas
25-02-2003, 12:30
Ma con che versione di Access è stato creato il tuo archivio? Il tuo provider supporta tale formato? In FrontPage, menu Strumenti/Impostazioni Web, scheda Database, hai effettuato e testato la connessione al database?

cionci
25-02-2003, 12:33
Ho sbagliato :p

set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/mdb-database/archivio.mdb") & ";"

mag1
25-02-2003, 12:36
ok provo il nuovo codice poi vi aggiorno

grazie

mag1
25-02-2003, 12:57
con il codice aggiornato da cionci ottengo il seguente messaggio di errore:

ADODB.Connection error '800a0e7a'
ADO could not find the specified provider.
/prova newsletter/newsletter/iscrivi.asp, line 11

il database l'ho creato con access XP 2002

posso sostituirlo con access 97

mag1
25-02-2003, 13:31
ho sostituito il database con uno crato con acces 97 ed ora funziona con il codice uguale a quello suggerito da tas

grazie per l'aiuto.

ho riscontrato un altro problema, ora non ho tampo, eventualmente ci risentiamo piu' avanti

ciao

mag1
25-02-2003, 14:24
rieccomi con il mio secondo problema.

dopo l’inserimento dell’indirizzo email nel database, il codice dovrebbe mandare una mail di conferma allutente che ha inserito il suo indirizzo.
Ho inserito il seguente codice per creare la mail:
Dim confermaMail
Set confermaMail = CreateObject("CDONTS.NewMail")
….

Dopo l’inserimento dell’indirizzo e la registrazione nel database (che ora avviene), il programma si blocca sulla linea di codice di creazione della mail di conferma con il seguente messaggio di errore:

Microsoft VBScript runtime error '800a01ad'
ActiveX component can't create object: 'CreateObject'
/prova newsletter/newsletter/iscrivi.asp, line 34

cosa ho sbagliato questa volta?

Sopportatemi per favore, sono le mie prime esperienze con ASP

grazie

P.S. per fare riconoscere il database creato con access XP cosa dovrei fare?

tas
25-02-2003, 14:30
Ma chi è il tuo provider? E' evidente che se sul server non sono stati installati quei componenti da te utilizzati (il driver per Access XP oppure il CDONTS) non sarà possibile eseguire correttamente la tua pagina ASP.

mag1
25-02-2003, 15:32
E' un provider qui vicino a me, mi trovo bene perche' basta chiedere e lui si da da fare per venirti incontro.

magari mi devo dare da fare unpo anch'io ma poi si riescono a risolvere i problemi paralndo sempre con la stessa persona.

quindi per far funzionare bene le ASP cosa gli devo chiedere di installare?

grazie

tas
25-02-2003, 16:59
Digli che hai bisogno di far funzionare una pagina ASP su un database di Access XP, così installerà i driver giusti. Digli anche che hai bisogno di usare CDONTS, chi amministra il server saprà senz'altro cosa installare!

cionci
25-02-2003, 18:13
Meglio ASPEmail che CDONTS...sicuramente è più sicuro...

Comunque per risolvere tutti i problemi di driver basta installare i driver MDAC che si trovano sul sito Mcirosoft...

mag1
25-02-2003, 18:20
O.K. ho parlato con il provider mi dice che ha gia' installato le versioni che dovrebbero supportare anche acces XP solo che sul suo server (con NT) qualcosa va in conflitto e anche se dovrebbe non riconsoce i database XP ma solo 97

per quanto riguarda CDONTS mi dice che preferisce non installarle avendo avuto problemi di abusi di utilizzo nel passato.

come devo variare il codice per usare ASPEmail al posto di CDONTS?
in pratica io ho bisogogno di far spedire una mail di conferma a che si iscrive alla newsletter

Dim confermaMail
Set confermaMail = CreateObject("CDONTS.NewMail")

confermaMail.From = "indirizzo_email"
confermaMail.To = indirizzo
confermaMail.Subject = "Conferma registrazione alla newsletter"
confermaMail.BodyFormat = 1
confermaMail.MailFormat = 0
confermaMail.Body = confermaCorpo
confermaMail.Send
set confermaMail = Nothing

cionci
25-02-2003, 18:32
Set Mail = Server.CreateObject("Persits.MailSender")
' enter valid SMTP host
Mail.Host = "mail.pippo.com"

Mail.From = Request("From") ' From address
Mail.FromName = Request("FromName") ' optional
Mail.AddAddress Request("To")

' message subject
Mail.Subject = Request("Subject")
' message body
Mail.Body = Request("Body")

strErr = ""
bSuccess = False
On Error Resume Next ' catch errors
Mail.Send ' send message
If Err <> 0 Then ' error occurred
strErr = Err.Description
else
bSuccess = True
End If

mag1
26-02-2003, 06:38
affinche' il codice funzioni il provider deve installare sul server il modulo ASPEmail, giusto?

in caso contrario ottieni errore, giusto?

cionci
26-02-2003, 08:22
Giusto...