4 messaggi dal 04 gennaio 2003
Salve a tutti!
Sto letteralmente sclerando non so più dove mettere le mani per raddrizzare ste due pagine...
Dunque l'errore:
Tipo di errore:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Driver ODBC Microsoft Access] Errore di valutazione del vincolo CHECK .

Lo script:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%
Dim vMissingFields
Dim vNome
Dim vCognome
Dim vIndirizzo
Dim vCitta
Dim vCap
Dim vTelefono
Dim vEmail
Dim vUserName
Dim vPassword


For Each collitem in Request.Form
If Len(request.form(collitem)) < 1 Then
vMissingFields = vMissingFields & collitem & ", "
End If
Next
If Len(vMissingFields) < 1 Then

vNome = request.form("nome")
vNome = Replace(vNome, "<", "")
vNome = Replace(vNome, ">", "")
vNome = Replace(vNome, "%", "")
vNome = Replace(vNome, "'", "''")


vCognome = request.form("cognome")
vCognome = Replace(vCognome, "<", "")
vCognome = Replace(vCognome, ">", "")
vCognome = Replace(vCognome, "%", "")
vCognome = Replace(vCognome, "'", "''")

vIndirizzo = request.form("indirizzo")
vIndirizzo = Replace(vIndirizzo, "<", "")
vIndirizzo = Replace(vIndirizzo, ">", "")
vIndirizzo = Replace(vIndirizzo, "%", "")
vIndirizzo = Replace(vIndirizzo, "'", "''")

vCitta = request.form("citta")
vCitta = Replace(vCitta, "<", "")
vCitta = Replace(vCitta, ">", "")
vCitta = Replace(vCitta, "%", "")
vCitta = Replace(vCitta, "'", "''")

vCap = request.form("cap")
vCap = Replace(vCap, "<", "")
vCap = Replace(vCap, ">", "")
vCap = Replace(vCap, "%", "")
vCap = Replace(vCap, "'", "''")

vTelefono = request.form("telefono")
vTelefono = Replace(vTelefono, "<", "")
vTelefono = Replace(vTelefono, ">", "")
vTelefono = Replace(vTelefono, "%", "")
vTelefono = Replace(vTelefono, "'", "''")

vEmail = request.form("Email")
vEmail = Replace(vEmail, "<", "")
vEmail = Replace(vEmail, ">", "")
vEmail = Replace(vEmail, "%", "")
vEmail = Replace(vEmail, "'", "''")


vUserName = request.form("User")
vUserName = Replace(vUserName, "<", "")
vUserName = Replace(vUserName, ">", "")
vUserName = Replace(vUserName, "%", "")
vUserName = Replace(vUserName, "'", "''")

vPassword = request.form("Pass")
vPassword = Replace(vPassword, "<", "")
vPassword = Replace(vPassword, ">", "")
vPassword = Replace(vPassword, "%", "")
vPassword = Replace(vPassword, "'", "''")

Set Connessione = Server.CreateObject("ADODB.Connection")
Connessione.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & server.MapPath("McPalladiodb.mdb")
sql= "SELECT username, password From utente WHERE username = '" & request.form("User") & "';"
Set rsRegistra = Connessione.Execute(sql)
If rsRegistra.EOF Then

Set Connessione = Server.CreateObject("ADODB.Connection")
Connessione.Open "inlinea"
sql= "INSERT INTO utente "
sql= sql & "(nome,"
sql= sql & " cognome,"
sql= sql & " indirizzo,"
sql= sql & " citta,"
sql= sql & " cap,"
sql= sql & " telefono,"
sql= sql & " email,"
sql= sql & " username,"
sql= sql & " password,"
sql= sql & " regdata) VALUES "
sql= sql & "('" & vNome & "', "
sql= sql & "'" & vCognome & "', "
sql= sql & "'" & vIndirizzo & "', "
sql= sql & "'" & vCitta & "', "
sql= sql & "'" & vCap & "', "
sql= sql & "'" & vTelefono & "', "
sql= sql & "'" & vEmail & "', "
sql= sql & "'" & vUserName & "', "
sql= sql & "'" & vPassword & "', "
sql= sql & "'" & Date & "')"
Connessione.Execute (sql)
Connessione.Close
%>


L'ho preso da un libro " guida ad ASP3.0"
e l'ho adattato vorrei capire dove sbaglio
Grazie
379 messaggi dal 06 settembre 2002
www.andytimes.com
Sinceramente è la prima volta che vedo un errore di questo tipo, e ti garantisco che tutt'ora, ma soprattutto in passato, nei vari esperimenti che ho fatto ne ho visti tanti... ti posso far notare alcuni piccoli errori che non so se sono all'origine del messaggio...vediamo:
Set Connessione = Server.CreateObject("ADODB.Connection")
Connessione.Open "inlinea"

prova ad omettere queste due righe, la prima è una ripetizione (l'oggetto connessione è già aperto), la seconda, boh...
sql= sql & "'" & Date & "')"

devi scrivere:
sql= sql & "'#" & Date() & #"')"
ora:
Connessione.Execute (sql)

imposta cosi:
set rsInsert=Connessione.Execute (sql)

infine metti un end if (in chiusura a "If rsRegistra.EOF Then" )
se risolvi sono contento di essere stato di aiuto, in caso contrario posta anche la linea indicata di errore (per facilità di debug), vedremo cosa fare...
ciao e buon lavoro...

..:: and this is my web ::..
4 messaggi dal 04 gennaio 2003
Ok grazie mille per l'aiuto!
..ma non è ancora finita:
dunque in effetti la seconda apertura alla connessione era superflua, l'ho eliminata ed ho aggiunto gli asterischi ma sei sicuro della posizine del secondo? L'ho volutamente omesso.
Ora mi da un errore più umano:
Microsoft JET Database Engine (0x80040E14)
Errore di sintassi nell'istruzione INSERT INTO.
/mcpvb/TMP1zww486pht.asp, line 106

ecco il codice:
Set Connessione = Server.CreateObject("ADODB.Connection")
Connessione.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & server.MapPath("McPalladiodb.mdb")
sql= "SELECT username, password From utente WHERE username = '" & request.form("User") & "';"
Set rsRegistra = Connessione.Execute(sql)
If rsRegistra.EOF Then

sql= "INSERT INTO utente "
sql= sql & "(nome,"
sql= sql & " cognome,"
sql= sql & " indirizzo,"
sql= sql & " citta,"
sql= sql & " cap,"
sql= sql & " telefono,"
sql= sql & " email,"
sql= sql & " username,"
sql= sql & " password,"
sql= sql & " regdata) VALUES "
sql= sql & "('" & vNome & "', "
sql= sql & "'" & vCognome & "', "
sql= sql & "'" & vIndirizzo & "', "
sql= sql & "'" & vCitta & "', "
sql= sql & "'" & vCap & "', "
sql= sql & "'" & vTelefono & "', "
sql= sql & "'" & vEmail & "', "
sql= sql & "'" & vUserName & "', "
sql= sql & "'" & vPassword & "', "
sql= sql & "'#" & Date & "')"
Connessione.Execute(sql)
Connessione.Close
%>

<!-- #include file="IncludeRegister1.txt" -->
<%
Else


%>
<!-- #include file="IncludeRegister2.txt" -->
<%
End If

Else

%>

<!-- #include file="IncludeRegister3.txt" -->

<%
End If
%>
Ciao e grazie ancora

379 messaggi dal 06 settembre 2002
www.andytimes.com
L'errore di INSERT può dipendere da:
sql= sql & "'#" & Date & "')"

deve essere:
sql= sql & "'#" & Date() & "#')"
passi una data (e quindi '#data#') con la funzione VBScript date() (data attuale). Per verificare la bontà della query fai così:
'Connessione.Execute(sql) non mandare in esecuzione
response.write sql 'la stampi a video
Connessione.Close
Verifica in questo modo se tutti i parametri passati sono al loro posto e la sintassi di insert è corretta...

ciao....

..:: and this is my web ::..
4 messaggi dal 04 gennaio 2003
Ok ci provo, ti faccio sapere
Grazie
4 messaggi dal 04 gennaio 2003
Fatto!
Ho ritoccato un po' di cose ma adesso lo script funziona.
Eccolo:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%
Dim vMissingFields
Dim vNome
Dim vCognome
Dim vIndirizzo
Dim vCitta
Dim vCap
Dim vTelefono
Dim vEmail
Dim vUserName
Dim vPassword


For Each collitem in Request.Form
If Len(Request.Form(collitem)) < 1 Then
vMissingFields = vMissingFields & collitem & ", "
End If
Next
If Len(vMissingFields) < 1 Then

vNome = Request.Form("nome")
vNome = Replace(vNome, "<", "")
vNome = Replace(vNome, ">", "")
vNome = Replace(vNome, "%", "")
vNome = Replace(vNome, "'", "''")


vCognome = Request.Form("cognome")
vCognome = Replace(vCognome, "<", "")
vCognome = Replace(vCognome, ">", "")
vCognome = Replace(vCognome, "%", "")
vCognome = Replace(vCognome, "'", "''")

vIndirizzo = request.form("indirizzo")
vIndirizzo = Replace(vIndirizzo, "<", "")
vIndirizzo = Replace(vIndirizzo, ">", "")
vIndirizzo = Replace(vIndirizzo, "%", "")
vIndirizzo = Replace(vIndirizzo, "'", "''")

vCitta = request.form("citta")
vCitta = Replace(vCitta, "<", "")
vCitta = Replace(vCitta, ">", "")
vCitta = Replace(vCitta, "%", "")
vCitta = Replace(vCitta, "'", "''")

vCap = request.form("cap")
vCap = Replace(vCap, "<", "")
vCap = Replace(vCap, ">", "")
vCap = Replace(vCap, "%", "")
vCap = Replace(vCap, "'", "''")

vTelefono = request.form("telefono")
vTelefono = Replace(vTelefono, "<", "")
vTelefono = Replace(vTelefono, ">", "")
vTelefono = Replace(vTelefono, "%", "")
vTelefono = Replace(vTelefono, "'", "''")

vEmail = request.form("Email")
vEmail = Replace(vEmail, "<", "")
vEmail = Replace(vEmail, ">", "")
vEmail = Replace(vEmail, "%", "")
vEmail = Replace(vEmail, "'", "''")


vUserName = request.form("User")
vUserName = Replace(vUserName, "<", "")
vUserName = Replace(vUserName, ">", "")
vUserName = Replace(vUserName, "%", "")
vUserName = Replace(vUserName, "'", "''")

vPassword = request.form("Pass")
vPassword = Replace(vPassword, "<", "")
vPassword = Replace(vPassword, ">", "")
vPassword = Replace(vPassword, "%", "")
vPassword = Replace(vPassword, "'", "''")

Set Connessione = Server.CreateObject("ADODB.Connection")
Connessione.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & server.MapPath("McPalladiodb.mdb")
sql = "SELECT * From utente WHERE username = '" & request.form("User") & "'"
Set rsRegistra = Server.CreateObject("ADODB.Recordset")
rsRegistra.Open sql, Connessione ,3,3
If rsRegistra.EOF Then
rsRegistra.AddNew
rsRegistra(1)=vNome
rsRegistra(2)=vCognome
rsRegistra(3)=vIndirizzo
'rsRegistra(4)=vCitta
rsRegistra(5)=vCap
rsRegistra(6)=vTelefono
rsRegistra(7)=vEmail
rsRegistra(8)=vUserName
rsRegistra(9)=vPassword
rsRegistra(10)=Date()
rsRegistra.Update

rsRegistra.Close
Set rsRegistra = Nothing
Connessione.Close
Set Connessione = Nothing
%>
<!-- #include file="IncludeRegister1.txt" -->
<%
Else
%>
<!-- #include file="IncludeRegister2.txt" -->
<%
End If
Else
%>
<!-- #include file="IncludeRegister3.txt" -->
<%
End If
%>

L'errore che mi dava all'inizio era legato probabilmente al form che passa i dati alla pagina in questione, non sono riuscito a fargli digerire la select ma tutto funziona con un campo text normale.
Saluti

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.