Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Errore database

  1. #1

    Errore database

    codice:
    <%
    'controllo i campi
    If Request.Form("NomeCognome")="" OR Request.Form("Email")="" OR Request.Form("Descrizione")="" OR Request.Form("Provincia")="" OR Request.Form("Citta")="" Then
    'se ce ne sno di vuoti do l'errore
    Response.Redirect("errore.asp")
    
    Else
    
    'altimenti, se tutto è ok, inizio col mandare una email (che arriva a me)
    Dim MyMail
    Set MyMail=CreateObject("CDONTS.NewMail")
    Descrizione=Request.Form("Descrizione")
    MyMail.From=Request.Form("Email")
    MyMail.To="info@sito.it"
    MyMail.Subject="Richiesta di preventivo"
    MyMail.Body="Da: " & Request.Form("NomeCognome") & "
    Città: " & Request.Form("Citta") & "
    Provincia: " & Request.Form("Provincia") & "
    Telefono: " & Request.Form("Telefono") & "
    
    " & Descrizione
    MyMail.BodyFormat=0 
    MyMail.MailFormat=0
    MyMail.Importance=1 
    MyMail.Send
    
    'qui mi estraggo una cifra casuale da 1000 a 9999
    Dim intUp, intLow, intRandom, intRange 
    Randomize()
    intUP = 1000
    intLow = 9999
    intRange = intUp - intLow + 1 
    intRandom = CInt ( ( intRange * Rnd() ) + intLow) 
    cifra=intRandom
    
    'apro il database
    Dim cn
    Set cn=Server.CreateObject("ADODB.Connection")
    cn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database.mdb")
    Dim rs, strConn, strSql
    set rs = Server.CreateObject("ADODB.recordset")
    sql="SELECT * FROM codici WHERE Email"
    rs.Open "SELECT * FROM codici WHERE Email like '"&Request.Form("Email")&"'", cn,3,3
    
    'con la query precedento vedo se l'email c'è già
    If rs.EOF Then
    
    'non c'è e proseguo con la registrazione de dati
    rs.Fields("CodiceRichiesta")=cifra
    rs.Fields("Email")=Request.Form("Email")
    rs.Close
    cn.Close
    
    'mando una seconda email (che arriva all'utente)
    Set MyMail=CreateObject("CDONTS.NewMail")
    MyMail.From="info@sito.it"
    MyMail.To=Request.Form("Email")
    MyMail.Subject="Richiesta di preventivo"
    MyMail.Body="Ciao "&Request.Form("NomeCognome")&",
    la tua richiesta di preventivo &egrave; stata inviata, al più presto riceverai una risposta.
    
    Il tuo codice per partecipare al concorso &egrave; "&cifra&""
    MyMail.BodyFormat=0 
    MyMail.MailFormat=0
    MyMail.Importance=1 
    MyMail.Send
    
    Else
    
    'se l'email già c'è mando un altro tipo di email (senza codice)
    Set MyMail=CreateObject("CDONTS.NewMail")
    MyMail.From="info@sito.it"
    MyMail.To=Request.Form("Email")
    MyMail.Subject="Richiesta di preventivo"
    MyMail.Body="Ciao "&Request.Form("NomeCognome")&",
    la tua richiesta di preventivo &egrave; stata inviata, al più presto riceverai una risposta."
    MyMail.BodyFormat=0 
    MyMail.MailFormat=0
    MyMail.Importance=1 
    MyMail.Send
    
    Response.Redirect("conferma.asp")
    Set MyMail=Nothing
    
    'chiudo i 2 if aperti
    End If
    
    End If
    %>
    Questo codice mi dà:

    ADODB.Recordset error '800a0bcd'

    Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

    pagina.asp, line 34


    La linea imputata è rs.Fields("CodiceRichiesta")=cifra

    Perché?

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    sql="SELECT * FROM codici WHERE Email = '"& email &"'"
    Roby

  3. #3
    Non va, sempre lo stesso

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    sql="SELECT * FROM codici WHERE Email = '"& request.form("email") &"'"
    Roby

  5. #5

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ho riletto meglio.
    Questa parte

    codice:
    sql="SELECT * FROM codici WHERE Email"
    rs.Open "SELECT * FROM codici WHERE Email like '"&Request.Form("Email")&"'", cn,3,3
    
    'con la query precedento vedo se l'email c'è già
    If rs.EOF Then
    
    'non c'è e proseguo con la registrazione de dati
    rs.Fields("CodiceRichiesta")=cifra
    rs.Fields("Email")=Request.Form("Email")
    rs.Close
    cn.Close
    è errata.
    Fai prima una query parziale (quella che ti ho corretto, sql...) che poi non usi...
    Poi cerchi l'email in una seconda query e poi NON fai un update. Dovresti fare una cosa di questo tipo.

    codice:
    If rs.EOF Then
    'non c'è e proseguo con la registrazione de dati
    rs.Addnew
    rs.Fields("CodiceRichiesta")=cifra
    rs.Fields("Email")=Request.Form("Email")
    rs.Update
    rs.Close
    set rs=nothing
    non ricordo neanche più la sintassi degli inserimenti tramite ADO... spero sia questa. Non la uso da tre anni.

    Roby

  7. #7

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    <%
    'controllo i campi
    If Request.Form("NomeCognome")="" OR Request.Form("Email")="" OR Request.Form("Descrizione")="" OR Request.Form("Provincia")="" OR Request.Form("Citta")="" Then
    'se ce ne sno di vuoti do l'errore
    Response.Redirect("errore.asp")
    
    Else
    
    'altimenti, se tutto è ok, inizio col mandare una email (che arriva a me)
    Dim MyMail
    Set MyMail=CreateObject("CDONTS.NewMail")
    Descrizione=Request.Form("Descrizione")
    MyMail.From=Request.Form("Email")
    MyMail.To="info@sito.it"
    MyMail.Subject="Richiesta di preventivo"
    MyMail.Body="Da: " & Request.Form("NomeCognome") & "
    Città: " & Request.Form("Citta") & "
    Provincia: " & Request.Form("Provincia") & "
    Telefono: " & Request.Form("Telefono") & "
    
    " & Descrizione
    MyMail.BodyFormat=0 
    MyMail.MailFormat=0
    MyMail.Importance=1 
    MyMail.Send
    
    'qui mi estraggo una cifra casuale da 1000 a 9999
    Dim intUp, intLow, intRandom, intRange 
    Randomize()
    intUP = 1000
    intLow = 9999
    intRange = intUp - intLow + 1 
    intRandom = CInt ( ( intRange * Rnd() ) + intLow) 
    cifra=intRandom
    
    'apro il database
    Dim cn
    Set cn=Server.CreateObject("ADODB.Connection")
    cn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database.mdb")
    Dim rs, strConn, strSql
    set rs = Server.CreateObject("ADODB.recordset")
    rs.Open "SELECT * FROM codici WHERE Email = '"&Request.Form("Email")&"'", cn
    'con la query precedento vedo se l'email c'è già
    If rs.EOF Then
    strSQL="INSERT INTO codici (CodiceRichiesta, Email) VALUES ("& cifra &", '"& Request.Form("Email") &"')"
    cn.Execute(strSQL)
    
    'mando una seconda email (che arriva all'utente)
    Set MyMail=CreateObject("CDONTS.NewMail")
    MyMail.From="info@sito.it"
    MyMail.To=Request.Form("Email")
    MyMail.Subject="Richiesta di preventivo"
    MyMail.Body="Ciao "&Request.Form("NomeCognome")&",
    la tua richiesta di preventivo è stata inviata, al più presto riceverai una risposta.
    
    Il tuo codice per partecipare al concorso è "&cifra&""
    MyMail.BodyFormat=0 
    MyMail.MailFormat=0
    MyMail.Importance=1 
    MyMail.Send
    
    Else
    
    'se l'email già c'è mando un altro tipo di email (senza codice)
    Set MyMail=CreateObject("CDONTS.NewMail")
    MyMail.From="info@sito.it"
    MyMail.To=Request.Form("Email")
    MyMail.Subject="Richiesta di preventivo"
    MyMail.Body="Ciao "&Request.Form("NomeCognome")&",
    la tua richiesta di preventivo è stata inviata, al più presto riceverai una risposta."
    MyMail.BodyFormat=0 
    MyMail.MailFormat=0
    MyMail.Importance=1 
    MyMail.Send
    
    Response.Redirect("conferma.asp")
    Set MyMail=Nothing
    
    'chiudo i 2 if aperti
    End If
    
    End If
    rs.Close
    set rs=nothing
    cn.Close
    set cn=nothing
    %>
    Ci sono degli errori nelle chiusure delle connessioni ma almeno ora dovrebbe andare.

    Roby

  9. #9
    Non va, controlla se ho fatto come dicevi.

    codice:
    <%
    If Request.Form("NomeCognome")="" OR Request.Form("Email")="" OR Request.Form("Descrizione")="" OR Request.Form("Provincia")="" OR Request.Form("Citta")="" Then
    Response.Redirect("errore.asp")
    
    Else
    
    Dim MyMail
    Set MyMail=CreateObject("CDONTS.NewMail")
    Descrizione=Request.Form("Descrizione")
    MyMail.From=Request.Form("Email")
    MyMail.To="info@sito.it"
    MyMail.Subject="Richiesta di preventivo"
    MyMail.Body="Da: " & Request.Form("NomeCognome") & "
    Città: " & Request.Form("Citta") & "
    Provincia: " & Request.Form("Provincia") & "
    Telefono: " & Request.Form("Telefono") & "
    
    " & Descrizione
    MyMail.BodyFormat=0 
    MyMail.MailFormat=0
    MyMail.Importance=1 
    MyMail.Send
    
    Dim intUp, intLow, intRandom, intRange 
    Randomize()
    intUP = 1000
    intLow = 9999
    intRange = intUp - intLow + 1 
    intRandom = CInt ( ( intRange * Rnd() ) + intLow) 
    cifra=intRandom
    
    Dim cn
    Set cn=Server.CreateObject("ADODB.Connection")
    cn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database.mdb")
    Dim rs, strConn, strSql
    set rs = Server.CreateObject("ADODB.recordset")
    rs.Open "SELECT * FROM codici WHERE Email Like '" & Request.Form("Email") & "'", cn,3,3
    
    If rs.EOF Then
    strSQL="INSERT INTO codici (CodiceRichiesta, Email) VALUES ("& cifra &", '"& Request.Form("Email") &"')"
    cn.Execute(strSQL)
    
    rs.Fields("CodiceRichiesta")=cifra
    rs.Fields("Email")=Request.Form("Email")
    rs.Close
    cn.Close
    
    Set MyMail=CreateObject("CDONTS.NewMail")
    MyMail.From="info@sito.it"
    MyMail.To=Request.Form("Email")
    MyMail.Subject="Richiesta di preventivo"
    MyMail.Body="Ciao "&Request.Form("NomeCognome")&",
    la tua richiesta di preventivo &egrave; stata inviata, al più presto riceverai una risposta.
    
    Il tuo codice per partecipare al concorso &egrave; "&cifra&"."
    MyMail.BodyFormat=0 
    MyMail.MailFormat=0
    MyMail.Importance=1 
    MyMail.Send
    
    Else
    
    Set MyMail=CreateObject("CDONTS.NewMail")
    MyMail.From="info@sito.it"
    MyMail.To=Request.Form("Email")
    MyMail.Subject="Richiesta di preventivo"
    MyMail.Body="Ciao "&Request.Form("NomeCognome")&",
    la tua richiesta di preventivo &egrave; stata inviata, al più presto riceverai una risposta."
    MyMail.BodyFormat=0 
    MyMail.MailFormat=0
    MyMail.Importance=1 
    MyMail.Send
    Set MyMail=Nothing
    
    Response.Redirect("conferma.asp")
    
    
    End If
    
    End If
    rs.Close
    set rs=nothing
    cn.Close
    set cn=nothing
    %>

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Devi copiare e incollare... non l'hai fatto!

    Robyu

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.