Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    problema update campo memo con asp e access

    Buongiorno a tutti,
    ho realizzato un'area riservata da cui posso\devo inserire, modificare e cancellare record di un db access per l'aggiornamento di pagine asp di un sito.

    Ho tre campi nella tabella "news" del db:
    titolo --> testo
    art --> testo
    testo --> memo

    Premetto che nel campo "testo" vanno inseriti parecchi caratteri (più di 255).
    Per inserimento e cancellazione non riscontro alcun problema.
    Quando invece provo a modificare il record, e nello specifico il campo memo mi da il seguente errore:

    codice:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
    
    Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression ''questa è una prova ...... (testo contenuto nella textarea che provo a modificare troncato a 255 caratteri)'.
    
    /admin/m_bormio.asp, line 51
    posto parte del codice interessato evidenziando la riga incriminata:
    codice:
    .......
    Dim rs
    Set rs = Server.CreateObject("ADODB.Recordset") 
    strSQL="SELECT * FROM news WHERE id =  " & id & ";"
    rs.Open strSQL,conn 
    
    strSQL = "UPDATE news SET art = '" & art & "', titolo = '" & titolo & "', [testo] = '" & testo & "' WHERE id = " & request.querystring("id") & ";"  
    conn.Execute(strSQL) 
    .........
    Non mi fa aggiornare il campo memo perchè troppo lungo?
    Come posso ovviare a questo problema?
    Grazie a tutti.

  2. #2
    codice:
    Dim rs
    Set rs = Server.CreateObject("ADODB.Recordset") 
    strSQL="SELECT * FROM news WHERE id =  " & id & ";"
    rs.Open strSQL,conn 
    
    art = replace(art,"'","''")
    titolo = replace(titolo,"'","''")
    testo = replace(testo,"'","''")
    
    strSQL = "UPDATE news SET art = '" & art & "', titolo = '" & titolo & "', [testo] = '" & testo & "' WHERE id = " & request.querystring("id") & ";"  
    conn.Execute(strSQL)

  3. #3
    che dire......GRANDERRIMO!!!!!!

    grazie infinite!

  4. #4
    ehi mems, quando e se hai tempo, mi piacerebbe che mi spiegassi il codice che mi hai postato: giusto per non fare un copia e incolla ignorante.

    Grazie ancora!

  5. #5
    Originariamente inviato da bormiositi
    ehi mems, quando e se hai tempo, mi piacerebbe che mi spiegassi il codice che mi hai postato: giusto per non fare un copia e incolla ignorante.

    Grazie ancora!
    Le variabili che contengono i testi presi dalla form possono contenere il carattere apice singolo.
    Nelle istruzioni SQL l'apice singolo è un carattere che riveste una certa importanza, ovvero, contiene le stringhe testuali da passare all'istruzione SQL.
    Esempio:
    codice:
    sql = "SELECT nome FROM utenti WHERE cognome = 'D'Ambrogio'"
    L'apice nel cognome D'Ambrogio troncherebbe il valore da associare a cognome, con la conseguenza che tutto ciò che va dopo l'apostrofo diventerebbe istruzione SQL. Siccome la parola Ambrogio non è linguaggio SQL, il motore SQL genererà un errore di sintassi.
    Per ovviare al problema gli apici singoli vanno raddoppiati, ovvero scritti 2 volte.
    codice:
    sql = "SELECT nome FROM utenti WHERE cognome = 'D''Ambrogio'"
    In questo modo il motore SQL interpreta 2 apici singoli come 1, ovvero il primo fa da carattere di escape per il secondo.
    L'istruzione VBScript che ho aggiunto al tuo codice è quello di una funzione di replace sulle variabili, sostituendo l'apice singolo con 2 apici singoli.
    codice:
    variabile = replace(variabile,"'","''")
    Chiaro?

  6. #6
    direi di sì.

    grazie ancora per il tempo dedicatomi!

    buon lavoro.

    ciauz

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.