PDA

View Full Version : GROSSO problema con DATBASE acces per asp


studiorisi
30-09-2005, 08:42
:help: salve st๒ cercando di spostare il mio sito da un provaider ad Aruba. Il problema ่ che non riesco a collegare il database che ho posto su aruba con il file di richiesta info. Praticamente se una persona mi compila il questionario la pagina si collega al vecchio sito www.studiorisi.it.

Ora su aruba ho visto che bisogna cambiare qualche scritta nello scipt, ma non riesco a capire dove. di seguito il mio script a seguire le indicazioni di aruba, qualcuno potrebbe aiutarmi. GRAZIE mille

Nome file: ManageEMail.asp

<%
Option Explicit
Response.AddHeader "pragma","no-cache"
Response.CacheControl = "no-cache"
Response.Expires = -1500
Response.Buffer = True
Const IN_DEBUG = False
%>
<!--#INCLUDE VIRTUAL="/include/Constants.inc"-->
<!--#INCLUDE VIRTUAL="/include/Formats.inc"-->
<%
Dim sPagError
Dim sPagGrazie
Dim sPagIncompleto
sPagError = Request.Form("PAGINA_ERRORE")
sPagGrazie = Request.Form("PAGINA_GRAZIE")
sPagIncompleto = Request.Form("PAGINA_INCOMPLETO")


Dim sCodice
If Not IsEmpty(Request.Form("CODICE")) Then
sCodice = UCase(CStr(Request.Form("CODICE")))
Else
Response.Redirect sPagError
End If

Dim cnn
Dim rds
Dim sSQL
Dim Rec
Dim iNum
Dim sEMailAg, sEMailAgPr

Const I_FLD_IDUTENTE = 0
Const I_FLD_UTNOME = 1
Const I_FLD_UTCOGNOME = 2
Const I_FLD_UTMAILREF = 3
Const I_FLD_UTMAILAVV = 4
Const I_FLD_UTCODICE = 5
Const I_FLD_UTINVPACK = 6
Const I_FLD_UTCODROT = 7

Rec = Null
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.ConnectionString = Application("StrConn")
cnn.CursorLocation = adUseClient
cnn.Open
Set rds = Server.CreateObject("ADODB.Recordset")
Set rds.ActiveConnection = cnn
rds.CursorType = adOpenForwardOnly
rds.LockType = adLockReadOnly
If sCodice = "AA0000" Then
sSQL = "SELECT * FROM UTENTI WHERE CodRuotante = true"
Else
sSQL = "SELECT * FROM UTENTI WHERE UtCodiceAccesso = """ & sCodice & """"
End If
rds.open sSQL
If NOT rds.EOF Then
Rec = rds.GetRows ()
End If
rds.close

If Not IsNull(Rec) Then
iNum = 0
If UBound(Rec,2) => 1 Then
If sCodice = "AA0000" Then
sSQL = "SELECT NumeroRotazione FROM ROTAZIONE"
rds.CursorType = adOpenKeyset
rds.LockType = adLockOptimistic
rds.open sSQL
If Not rds.EOF Then
iNum = rds(0)
If iNum => UBound(Rec,2) Then
iNum = 0
rds(0) = iNum
rds.update
Else
iNum = iNum + 1
rds(0) = iNum
rds.update
End If
End If
End If
rds.close
Else
' Response.Redirect sPagError
End If
Set rds = Nothing
cnn.Close
Set cnn = Nothing
sEMailAg = Rec(I_FLD_UTMAILREF, iNum)
sEMailAgPr = Rec(I_FLD_UTMAILAVV, iNum)

If SendEMail(sEMailAg, sEMailAgPr) then
Response.Redirect sPagGrazie
Else
Response.Redirect sPagError
End if
Else
Response.Redirect sPagError
End if
%>


<script runat=server language=vbscript>
'***********************************************
Function SendEMail(sEMailAg, sEMailAgPr)
Dim sBody
Dim sFileName
Dim sEMail
Dim obj, objMail, objFile
Dim sError
Dim x, iTipo
Dim sSubject
Dim sDato
'On Error Resume Next
SendEMail = False
sEMail = Request.Form("EMAIL")
sFileName = "/cgi-bin/" & Request.Form("SESSO") & Request.Form("NOME_PACCHETTO")
If Rec(I_FLD_UTINVPACK,iNum) Then
Set obj = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = obj.OpenTextFile(Server.MapPath(sFileName), ForReading)
sBody = objFile.ReadAll
objFile.Close
Set objFile = Nothing
Set obj = Nothing

sDato = sEMailAg
sBody = Replace(sBody, "{EMAILAGENTE}", sDato)

sDato = UCase(Request.Form("CODICE"))
sBody = Replace(sBody, "{CODICE}", sDato)

sDato = Request.Form("COME")
sBody = Replace(sBody, "{COME}", sDato)

sDato = Request.Form("NOME")
sBody = Replace(sBody, "{NOME}", sDato)

sDato = Request.Form("COGNOME")
sBody = Replace(sBody, "{COGNOME}", sDato)

sDato = Request.Form("SESSO")
sBody = Replace(sBody, "{SESSO}", sDato)

sDato = Request.Form("INDIRIZZO")
sBody = Replace(sBody, "{INDIRIZZO}", sDato)

sDato = Request.Form("CITTA")
sBody = Replace(sBody, "{CITTA}", sDato)

sDato = Request.Form("PROVINCIA")
sBody = Replace(sBody, "{PROVINCIA}", sDato)

sDato = Request.Form("CAP")
sBody = Replace(sBody, "{CAP}", sDato)

sDato = Request.Form("STATO")
sBody = Replace(sBody, "{STATO}", sDato)

sDato = Request.Form("TELEFONO")
sBody = Replace(sBody, "{TELEFONO}", sDato)

sDato = Request.Form("FAX")
sBody = Replace(sBody, "{FAX}", sDato)

sDato = Request.Form("EMAIL")
sBody = Replace(sBody, "{EMAIL}", sDato)

sDato = Request.Form("PERCHE")
sBody = Replace(sBody, "{PERCHE}", sDato)

sDato = Request.Form("IN_PROPRIO")
sBody = Replace(sBody, "{IN_PROPRIO}", sDato)

sDato = Request.Form("GUADAGNO")
sBody = Replace(sBody, "{GUADAGNO}", sDato)

sDato = Request.Form("PAESI")
sBody = Replace(sBody, "{PAESI}", sDato)

sDato = Request.Form("LAVORO_ATTUALE")
sBody = Replace(sBody, "{LAVORO_ATTUALE}", sDato)

sDato = Request.Form("ISTRUZIONE")
sBody = Replace(sBody, "{ISTRUZIONE}", sDato)

sDato = Request.Form("RAGIONI")
sBody = Replace(sBody, "{RAGIONI}", sDato)

sDato = Request.Form("ATTRAZIONI")
sBody = Replace(sBody, "{ATTRAZIONI}", sDato)

sDato = Request.Form("VANTAGGI")
sBody = Replace(sBody, "{VANTAGGI}", sDato)

sDato = Request.Form("TEMPO")
sBody = Replace(sBody, "{TEMPO}", sDato)

sDato = Request.Form("COMMENTI")
sBody = Replace(sBody, "{COMMENTI}", sDato)

If Not IN_DEBUG Then
Set objMail = Server.CreateObject("CDO.Message")
SendEMail = (Err.number = 0)
If Not ObjMail Is Nothing Then
With ObjMail
.Subject = "Informazioni"
.HTMLBody = sBody
.From = sEMailAg
.To = sEMail
'.BodyFormat = 0
'.MailFormat = 0
'.Importance = 1 ' 0 Low 1 Normal 2 High
.Send
SendEMail = (Err.number = 0)
End with
Set objMail = nothing
Else
SendEMail = False
End If
End If
End If

sBody = "NOME_PACCHETTO: " & Request.Form("NOME_PACCHETTO") & Chr(10)

sDato = UCase(Request.Form("CODICE"))
sBody = sBody &"CODICE: " & sDato & Chr(10)

sDato = Request.Form("COME")
sBody = sBody &"COME: " & sDato & Chr(13)

sDato = Request.Form("NOME")
sBody = sBody &"NOME: " & sDato & Chr(13)

sDato = Request.Form("COGNOME")
sBody = sBody &"COGNOME: " & sDato & Chr(13)

sDato = Request.Form("SESSO")
sBody = sBody &"SESSO: " & sDato & Chr(13)

sDato = Request.Form("INDIRIZZO")
sBody = sBody &"INDIRIZZO: " & sDato & Chr(13)

sDato = Request.Form("CITTA")
sBody = sBody &"CITTA: " & sDato & Chr(13)

sDato = Request.Form("PROVINCIA")
sBody = sBody &"PROVINCIA: " & sDato & Chr(13)

sDato = Request.Form("CAP")
sBody = sBody &"CAP: " & sDato & Chr(13)

sDato = Request.Form("STATO")
sBody = sBody &"STATO: " & sDato & Chr(13)

sDato = Request.Form("TELEFONO")
sBody = sBody &"TELEFONO: " & sDato & Chr(13)

sDato = Request.Form("FAX")
sBody = sBody &"FAX: " & sDato & Chr(13)

sDato = Request.Form("EMAIL")
sBody = sBody &"EMAIL: " & sDato & Chr(13)

sDato = Request.Form("CONFERMA_EMAIL")
sBody = sBody &"CONFERMA_EMAIL: " & sDato & Chr(13)

sDato = Request.Form("PERCHE")
sBody = sBody &"PERCHE: " & sDato & Chr(13)

sDato = Request.Form("IN_PROPRIO")
sBody = sBody &"IN_PROPRIO: " & sDato & Chr(13)

sDato = Request.Form("GUADAGNO")
sBody = sBody &"GUADAGNO: " & sDato & Chr(13)

sDato = Request.Form("PAESI")
sBody = sBody &"PAESI: " & sDato & Chr(13)

sDato = Request.Form("LAVORO_ATTUALE")
sBody = sBody &"LAVORO_ATTUALE: " & sDato & Chr(13)

sDato = Request.Form("ISTRUZIONE")
sBody = sBody &"ISTRUZIONE: " & sDato & Chr(13)

sDato = Request.Form("RAGIONI")
sBody = sBody &"RAGIONI: " & sDato & Chr(13)

sDato = Request.Form("ATTRAZIONI")
sBody = sBody &"ATTRAZIONI: " & sDato & Chr(13)

sDato = Request.Form("VANTAGGI")
sBody = sBody &"VANTAGGI: " & sDato & Chr(13)

sDato = Request.Form("TEMPO")
sBody = sBody &"TEMPO: " & sDato & Chr(13)

sDato = Request.Form("COMMENTI")
sBody = sBody &"COMMENTI: " & sDato & Chr(13)

sDato = Date()
sBody = sBody &"DATA_PRIMO_PACCHETTO: " & sDato

If Not IN_DEBUG Then
Set objMail = Server.CreateObject("CDO.Message")
SendEMail = (Err.number = 0)
If Not ObjMail Is Nothing Then
With ObjMail
.Subject = "RICHIESTA INFORMAZIONI"
.TextBody = sBody
.From = "infolavoro@lavoro-casa.com"
.To = sEMailAgPr
.Send
SendEMail = (Err.number = 0)
End With
Set objMail = nothing
End If
End If
If IN_DEBUG Then
SendEMail = True
response.write sEMailAg & "<br>" & sEMailAgPr & "<br>"
response.write sBody
End If
End Function
</script>


ALTRO FILE: Global.asa
<script runat=server language=vbscript>
Const NOME_DATABASE = "\mdb-database\lavoro.mdb"

Sub Application_OnStart
Dim StrConn

On Error resume Next
' *******
StrConn = "Provider=Microsoft.Jet.Oledb.4.0;data source=" & Server.MapPath(NOME_DATABASE)
Application("StrConn") = StrConn
End Sub
</script>

Indicazioni di Aruba:

Questo tipo di connessione a partire dal nome indica che per collegarsi al database non usa file DSN di sistema, ma una connessione diretta al database sul server, indicandone il percorso: nello specifico usando l'oggetto Server e il suo metodo CreateObject generiamo innanzitutto l'oggetto di ADO ADODB.Connection

Dim conn
Set conn = Server.CreateObject("ADODB.Connection")

quindi ora e' possibile tramite l'oggetto creato connettersi fisicamente al nostro database che risiedera' nella cartella speciale apposita mdb-database e quindi aprirlo: la stringa di connessione contera' tutti i parametri per raggiungere il database

conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/database.mdb")


Tramite SQL possiamo interrogare ed interagire con il database usando apposite query : al termine delle interrogazioni vanno chiusi immediatamente (non al termine della pagina) gli eventuali oggetti recordset utilizzati e soprattutto va chiusa la connessione al database

Conn.Close
Set Conn=Nothing

Quanto piu' celermente si chiudono oggetti e connessione, prima tornano disponibili sul server gli oggetti e le risorse necessarie all'ottimale gestione dei database da parte di tutti gli utenti: per il medesimo motivo si indica di non richiamare gli oggetti Connection e Recordset all'interno degli oggetti Session o Application istanziabili nel file global.asa