Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    431

    [SQL/access] Replace su campo di testo

    Ciao,
    devo fare una sostituzione su un campo di testo, percorso di un file immagine e sono su database access, usando questa
    codice:
    UPDATE gest_img SET gest_img.percorso = Replace([gest_img]![percorso],"10022112","10025101")
    WHERE (((gest_img.percorso) Like "*10022112*"));
    se la eseguo come query da access, funziona. Invece se devo eseguirla come query da ASP in questo modo
    codice:
    SQL = "UPDATE gest_img SET gest_img.percorso = Replace([gest_img]![percorso],'10022112','10025101') "& _
    " WHERE (((gest_img.percorso) Like '%10022112%'));"
    mi da errore :

    Funzione 'Replace' non definita nell'espressione.

    C'e' un modo per fare il replace?
    Da un grande potere derivano grandi responsabilità

  2. #2
    UPDATE gest_img SET percorso = REPLACE(percorso,'10022112','10025101') WHERE percorso LIKE '%10022112%'

  3. #3
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    431
    ciao optime,
    grazie della risposta ma non funziona, ritorna l'errore di prima e purtroppo ho capito il perché.
    Se si esegue da access la funzione replace esiste perché è un estensione del linguaggio SQL che è stata introdotta da Microsoft, invece su ASP non facendo parte dell'SQL standard non funziona e quindi da errore giustamente. Cercando quell'errore ho trovato alcune discussioni e non ho trovato soluzione. Mi toccherà ciclare tutti i record.
    Da un grande potere derivano grandi responsabilità

  4. #4
    mi pare strano -- quale driver usi per accedere ad access?

  5. #5
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    431
    Questo e' il mio script
    codice:
    <%
    path = server.mappath("./db/006/far006.mdb")
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & path)
    'SQL = "UPDATE gest_img SET percorso = Replace(percorso,'10022112','10025101') "& _
    '" WHERE (((percorso) Like '%10022112%'));"
    SQL = "UPDATE gest_img SET percorso = REPLACE(percorso,'10022112','10025101') WHERE percorso LIKE '%10022112%'"
    'SQL = "EXECUTE my_query"
    conn.execute SQL
    conn.close
    set conn=nothing
    response.write "fine replace"
    %>
    Da un grande potere derivano grandi responsabilità

  6. #6

  7. #7
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    431
    Ecco il nuovo script
    codice:
    <%
    path = server.mappath("./db/006/far006.mdb")
    Set Conn = Server.CreateObject("ADODB.Connection")
    
    conn.open("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="& path)
    SQL = "UPDATE gest_img SET percorso = REPLACE(percorso,'10022112','10025101') WHERE percorso LIKE '%10022112%'"
    conn.execute SQL
    conn.close
    set conn=nothing
    response.write "fine replace"
    %>
    purtroppo stesso errore




    Microsoft JET Database Engine
    error
    '80040e14'


    Funzione 'REPLACE' non definita
    nell'espressione.

    /farm.asp, riga
    11
    Da un grande potere derivano grandi responsabilità

  8. #8

  9. #9
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    431
    Ciao optime,
    grazie della dritta ma usando il provider

    conn.open("PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source="& path)

    dava lo stesso errore, allora ho provato a ricercare il titolo della discussione che mi hai postato tu e sono arrivato a questo link http://stackoverflow.com/questions/4...inst-ms-access ed ho usato il codice seguente
    codice:
    <%
    path = server.mappath("./db/006/far006.mdb")
    Set Conn = Server.CreateObject("ADODB.Connection")
    'Conn.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & path)
    conn.open("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="& path)
    strOld = "10022113"
    strNew = "10025102"
    SQL = "UPDATE gest_img "& _
       " SET percorso = MID( "& _
    "                      percorso, "& _
    "                      1, "& _
    "                      INSTR(percorso, '"& strOld &"') "& _
    "                         - 1 "& _
    "                     ) "& _
    "                   + '"& strNew &"' "& _
    "                    + MID( "& _
    "                         percorso, "& _
    "                           INSTR(percorso, '"& strOld &"') "& _
    "                              + LEN('"& strOld &"'), "& _
    "                           LEN(percorso) "& _
    "                              - INSTR(percorso, '"& strOld &"') "& _
    "                              - LEN('"& strOld &"') "& _
    "                              + 1 "& _
    "                          )"& _
    " WHERE percorso LIKE '%"& strOld &"%'; "
    conn.execute SQL
    conn.close
    set conn=nothing
    response.write "<br>fine replace"& strOld
    %>
    e.....FUNZIONA!!!!!!! Lo posto qui cosi puo' essere utile a chi ha il mio stesso problema
    Ultima modifica di abellos; 16-07-2015 a 15:10
    Da un grande potere derivano grandi responsabilità

  10. #10

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.