Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Problema verifica valori già esistenti in db

    Salve a tutti

    Ennesimo problema giornaliero, dunque ho un form da cui inserisco dati in un db access, dati A e B, vado qundi a controllare che i dati inseriti non corrispondano a dati gia esistenti

    codice:
    Set Conn=Server.CreateObject("ADODB.Connection")
    strConn="driver={Microsoft Access Driver (*.mdb)}; "
    strConn=strConn & " DBQ=" & Server.MapPath("sp.mdb")
    Conn.Open (strConn)
    
    strsql = "SELECT A, B FROM tabella WHERE A= " & request("A") & " B= " & request("B") & "'"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.open "tabella", conn,3,3
    
    if not Rs.bof and not Rs.eof then 
    response.write "<font face='verdana' size='2' color='#FF0000'>Il valore " & Rs("A")  & " o il Valore " & Rs("B") & " risultano già registrati </font>" 
    response.write "Se il problema persiste contatta gli Admin tramite il forum"
    rs.close
    set rs=nothing
    conn.close
    set conn=nothing
    end if
    e dopo end if passo alla memorizzazione dei dati.

    ora se non chiudo la connesione, inserisce i nuovi valori in qualsiasi caso ed inoltre ma mi stampa a video il msg di "errore" del primo record che ho nel db

    se invece chiudo il db mi da coem errore

    "necessario oggetto"


    Bho non mi sto ritrovando piu :master:
    E' il cervello che ci rende folli o deliranti, che ci ispira terrori e paure, che, ci fa compiere errori sconsiderati, ci rende ansiosi senza scopo,ci rende inconsapevoli......

  2. #2
    Il tuo codice è errato.

    codice:
    if not Rs.bof and not Rs.eof then 
    response.write "<font face='verdana' size='2' color='#FF0000'>Il valore " & Rs("A")  & " o il Valore " & Rs("B") & " risultano già registrati </font>" 
    response.write "Se il problema persiste contatta gli Admin tramite il forum"
    rs.close
    set rs=nothing
    conn.close
    set conn=nothing
    end if
    PErchè chiudi recordset e connessione nell'if.
    Se un utente non rientra nella condizione avrai una connessione ed un recordset lasciati aperti ed appesi con conseguente rallentamento del server.

    Sposta dalla chiusura alla distruzione dell'oggetto fuori dall'If.

  3. #3
    scusami non capisco

    se tiro fuori dall'if la chiusura

    ex:
    codice:
    if ....... then
    ...
    End if
    
    rs.close
    ...
    ...
    la chiusura mi dovrebbe avveniree comunque che l'if sia verificato o no

    e se la metto alla fine di tutto il codice mi inserisce i dati ugualmente
    E' il cervello che ci rende folli o deliranti, che ci ispira terrori e paure, che, ci fa compiere errori sconsiderati, ci rende ansiosi senza scopo,ci rende inconsapevoli......

  4. #4
    Originariamente inviato da BlackLabel
    scusami non capisco

    se tiro fuori dall'if la chiusura

    ex:
    codice:
    if ....... then
    ...
    End if
    
    rs.close
    ...
    ...
    la chiusura mi dovrebbe avveniree comunque che l'if sia verificato o no
    PErchè infatti così deve essere o rischi di lasciare aperto il rs.

  5. #5
    scusa non mi sono spiegato

    Allora

    - prendo i valori dal form
    -connetto al db
    - controllo ke i valori non esistano

    ora se metto qui una chiusura che esistano o no i valori mi viene chiuso il tutto e la registrazione su db non verrà fatta mentre se proseguo

    -registrazione su db
    -chiusura

    se la faccio qui anche se gia sono presenti gli inserisce e non dovrebbe essere cosi ovviamente

    spero di essermi spiegato 10x
    E' il cervello che ci rende folli o deliranti, che ci ispira terrori e paure, che, ci fa compiere errori sconsiderati, ci rende ansiosi senza scopo,ci rende inconsapevoli......

  6. #6
    Il recordset lo devi comunque chiudere o l'inserimento (la registrazione) non andrà a buon fine.

    Ciascuna esecuzione è associata ad un recordset che apri quando ti serve e chiudi quando inutile.

    Inolter sposta la chiudura della connessione al fondo della registrazione, una volta sola per tutte rimuovendola dall'if.

  7. #7
    Io faccio così nella pagina di inserimento:

    codice:
    <% 
    if(session("user")<>"Admin") then
    
    response.redirect "err.htm"
    
    end if%>
    Controllo che lo vede l'amministratore (ma è una cosa mia) non obbligatoria! 
    <%
    'apre il DB
    Dim PRONT 
    Set PRONT = Server.CreateObject("ADODB.Connection")
    PRONT.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=PERCORSO FILE MDB"
    
    flag = 0 'se è uguale ad uno non aggiorna il db
    'Inserisce nelle variabili i dati inseriti
    cognome = UCASE(request.form("COGNOME"))
    nome = UCASE(request.form("NOME"))
    nome = cognome & " " & nome
    indirizzo= UCASE(request.form("INDIR"))
    telefono= request.form("TEL")
    cell = request.form("CELL")
    Ordine = request.form("ORDINE")
    dal =request.form("DAL")
    al = request.form("AL")
    special = request.form("SPECIAL") 
    if nome <> "" then nome = LTrim(Nome) 'elimina gli spazi prima del nome
    if indirizzo <> "" then indirizzo = Ltrim(indirizzo)
    
    'PRIMO CONTROLLO esistenza del campo
    controllo()
    %>
    
    <%
    function controllo() 
    'Controlla che il record non sia già stato inserito
    
    nome = replace(nome, "'", " ")
    indirizzo = replace(indirizzo , "'", " ")
    
    
    Set RS = Server.CreateObject("ADODB.Recordset") 
    RS.open "Select * from reperibili", PRONT ,3 ,2
    RS.find "Nome = '" & nome & "'"
    
    if RS.eof then 
    	'inserisce il record nel DB
       inserimento	
       else
       'RECORD GIà PRESENTE
    	response.write "<p align=""center"">"
    	response.write "<font face = ""Tahoma"" size=""2"" font color = ""red"">"
    	response.write "[img][/img]"
    	response.write "   Attenzione record già presente...   "
       response.write "[img][/img]"
    	response.write "
    </br>"
    	response.write "</p></font>"
    end if
    RS.Close 
    Set RS = Nothing
    
    
    end function
    %>
    A me funziona benone, ho due pagine "form.asp" e "add_form.asp" (che è quella che ti ho postato), qui manca il codice di inserimento, si trova in un'altra funzione. Se vuoi te lo posto.
    PS Funziona anche se schicci F5 dopo aver inserito un nuovo nominativo!!!

  8. #8
    Scusa la domanda stupida ma questa sintassi non l'ho mai usata...

    In "DBQ=percorso...." il percorso del db è assoluto o relativo? xke ho provato in entrambi i modi ma non lo trova
    E' il cervello che ci rende folli o deliranti, che ci ispira terrori e paure, che, ci fa compiere errori sconsiderati, ci rende ansiosi senza scopo,ci rende inconsapevoli......

  9. #9
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Mettici la tua... è solo un esempio.

    Roby

  10. #10
    hihihiihhii sisi

    solo ke comunque la metto
    codice:
    ....DBQ=database.mdb
    oppure

    codice:
    ..dbq=http://sito/database.mdb
    mi da sempre

    Tipo di errore:
    Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
    [Microsoft][Driver ODBC Microsoft Access] Impossibile trovare il file "(sconosciuto)".
    E' il cervello che ci rende folli o deliranti, che ci ispira terrori e paure, che, ci fa compiere errori sconsiderati, ci rende ansiosi senza scopo,ci rende inconsapevoli......

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.