Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Luis33
    Registrato dal
    May 2003
    Messaggi
    975

    The changes you requested to the table were not successful

    Ciao.

    Ho un piccolo motore di ricerca interna ad un sito, collegato ad un database access 2000.

    Ho il problema che se si cerca di registrare una pagina già presente nel dbase mi visualizza:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

    [Microsoft][ODBC Microsoft Access Driver] The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.

    /motore/add.asp, line 31
    che non è una cosa bella da vedersi... cosa mi consigliate per dare un aspetto decente all'errore segnalato?
    ... Sono graditi codes, esempi pratici, suggerimenti, consigli e critiche...
    "Ai posteri l'ardua sentenza..."
    Tante grazie
    Saluti
    Luis 33

  2. #2
    Stai eseguendo una operazione su una tabella relazionata senza rispecchiare le condizioni di relazione sull tabella corrispondente.

  3. #3
    Utente di HTML.it L'avatar di Luis33
    Registrato dal
    May 2003
    Messaggi
    975
    Originariamente inviato da weppos
    Stai eseguendo una operazione su una tabella relazionata senza rispecchiare le condizioni di relazione sull tabella corrispondente.
    Infatti così deve funzionare... vorrei sostituire il msg di errore con una frase del tipo:

    'la pagina web è già registrata nel nostro database'
    ... Sono graditi codes, esempi pratici, suggerimenti, consigli e critiche...
    "Ai posteri l'ardua sentenza..."
    Tante grazie
    Saluti
    Luis 33

  4. #4
    Ma quello è un errore di una query non corretta, non di una pagina già presente... :master:

    Dovresti intercettare l'errore con On Error Resume Next, ma èperchè arrivare a tanto?

    Se vuoi verificare la presenza di un record (una pagina) nel db è sufficiente una query corretta senza fargli restituire quell'errore.

  5. #5
    Utente di HTML.it L'avatar di Luis33
    Registrato dal
    May 2003
    Messaggi
    975
    Grazie weppos adesso ho capito...

    inserendo On Error Resume Next sembra registrare anche le pagine già presenti nel dbase, in realtà non registra niente ma non dà errore.

    Questo è il code:
    codice:
    addURL	= Request.QueryString( "AddURL" )
    	addTitle = Request.QueryString( "AddTitle" )
    	addDescription	= Request.QueryString( "AddDescription" )
    	addKeywords = Request.QueryString( "AddKeywords" )
    	
    	' Ritorno indietro se i campi sono vuoti
    	If addTitle = "" or addURL = "" or addDescription = "" Then
    		Response.Redirect( "addpage.asp" )
    	End If
    	
    	Session.timeout = 2
    	If IsObject(Session("sitesearch_conn")) Then
    	    Set conn = Session("sitesearch_conn")
    	Else
    	    Set conn = Server.CreateObject("ADODB.Connection")
    	    conn.open "sitesearch","",""
    	    Set Session("sitesearch_conn") = conn
    	End If
    
    	' SQL
        sql = "INSERT INTO [URLIndex] ( [URL], [Title], [Description], [Keywords] )"
        sql = sql + "VALUES ( '" & addURL & "', '" & addTitle & "', '" & addDescription & "', '" & addKeywords & "' )"
        
        ' Eseguo la query
        conn.Execute sql
    ... Sono graditi codes, esempi pratici, suggerimenti, consigli e critiche...
    "Ai posteri l'ardua sentenza..."
    Tante grazie
    Saluti
    Luis 33

  6. #6
    Utente di HTML.it L'avatar di Luis33
    Registrato dal
    May 2003
    Messaggi
    975
    ok, risolto così:
    codice:
    <%
    	addURL = Request.QueryString( "AddURL" )
    	addTitle = Request.QueryString( "AddTitle" )
    	addDescription = Request.QueryString( "AddDescription" )
    	addKeywords = Request.QueryString( "AddKeywords" )
    	
    	' Return if not all data entered
    	If addTitle = "" or addURL = "" or addDescription = "" Then 
    	
    		Response.Redirect( "addpage.asp" )
    		
    	End If
    	
    	Session.timeout = 2
    	
    	Set conn = Server.CreateObject("ADODB.Connection")
            openStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("/mdb-database/SiteSearch.mdb")
            conn.Open openStr
            
    ' setup strSQL
    strSQL = "SELECT * FROM URLIndex WHERE URL = '" &request("addURL")& "' " 
    Set objRs = Server.CreateObject("ADODB.Recordset") 
    objRs.Open strSQL, Conn, 3, 3 
    
    if not objRs.bof and not objRs.eof then 
    
    ' Pagina esistente 
    
    Response.write ("<div align=center>")
    Response.write ("<font size=2 color=midnightblue face=verdana>")	
    Response.write ("
    
    
    ")
    Response.write ("<img src = ""senzasperanza.gif"">
    
    
    ")	
    Response.write ("Siamo spiacenti
    
     La pagina web:
    
    <font color=red>" & objRs("URL") & "</font>
    
    risulta già registrata nel nostro database.
    ")
    Response.Write ("
    Verificare i dati inseriti.
    </a>")
    Response.write ("</font></div>
    
    
    ")
    
    else
    
    	' Setup SQL
        sql = "INSERT INTO [URLIndex] ( [URL], [Title], [Description], [Keywords] )"
        sql = sql + "VALUES ( '" & addURL & "', '" & addTitle & "', '" & addDescription & "', '" & addKeywords & "' )"
        
        ' Execute the statement
        conn.Execute sql
        
        ' Print the URL
        Response.Write "
     URL:  " & addURL
        
        ' Print the Title
        Response.Write "
     Titolo:  " & addTitle
        
        ' Print the Description
        Response.Write "
     Descrizione:  " & addDescription
    
        ' Print the Keywords
        Response.Write "
     Keywords:  " & addKeywords & "
    
    "
    
        ' Print the SQL String
        Response.Write "
     SQL String :  " & sql
        Response.write "Registrazione eseguita con successo."
        
    	end if
    %>
    ... Sono graditi codes, esempi pratici, suggerimenti, consigli e critiche...
    "Ai posteri l'ardua sentenza..."
    Tante grazie
    Saluti
    Luis 33

  7. #7
    Originariamente inviato da Luis33
    Grazie weppos adesso ho capito...

    inserendo On Error Resume Next sembra registrare anche le pagine già presenti nel dbase, in realtà non registra niente ma non dà errore.
    Infatti.
    On error resume next non serve per far miracolosamente funzionare ciò che non funziona, ma per proseguire l'elaborazione.

    Quello che ho cercato di farti capire prima è che a prescindere da cosa volevi fare la query era errata ed andava corretta.

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.