Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    74

    VB2010: problema aggiornamento tabella con stringa contenente " ' "

    Salve a tutti.
    Dopo anni trascorsi a programmare in VBA excel, mi sto dedicando alla programmazione con VB2010.
    Ho scritto questo codice:
    codice:
    stringasql ="Insert into stat(TSTAfil,TSTAc,TSTAdes,TSTAnumanom) values('"        
    stringasql = stringasql & filiale &"'"&","        stringasql = stringasql &"'"& c &"'"&","        stringasql = stringasql &"'"& intestazione &"'"&","        
    stringasql = stringasql &"'"& comando &"'"&")"        
    objcomm =NewOleDbCommand(stringasql, objconn)
    che funziona, fino a quando il campo "intestazione" non contiene un apostrofo (per esempio PAPA'). In questo caso mi da errore.
    Come posso fare per rimediare (non sapendo a priori se la stringa che dovro' registrare contiene o meno l'apostrofo (aggiorno la tabella leggendo un file TXT).
    Non essendo ancora pratico, mi chiedevo se una gestione con i "parameters" possa essere migliore di quella usata e se si, potreste darmi qualche suggerimento ?
    Grazie
    Dopo anni di programmazione amatoriale in VBA, ho deciso di passare a VB.NET

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    Ciao,
    puoi provare facendo un replace in caso di apostrofo. Puoi provare a sostituire apostrofo con il doppio apostrofo; ossia una cosa del genere
    codice:
    intestazione .Replace("'","''")
    Oppure toglierlo proprio... vedi te

    mi chiedevo se una gestione con i "parameters" possa essere migliore di quella usata
    Io ti consiglio di utlizzarli, perchè rende la query più sicura, ma anche perchè la rende più leggibile a mio avviso.
    codice:
    stringasql ="Insert into stat(TSTAfil,TSTAc,TSTAdes,TSTAnumanom) " 
    stringasql += "values(@TSTAfil,@TSTAc,@TSTAdes,@TSTAnumanom)"
    objcomm =NewOleDbCommand(stringasql, objconn)
    objcomm.Parameters.AddWithValue("@TSTAfil", filiale )
    ect...
    Comunque sono gusti, fai come ti trovi meglio

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    74
    Ok. grazie.
    Ho deciso di utilizzare i parameters che non mi danno problemi di sintassi.

    Ti chiedo che differenza c'e' tra questa istruzione che ho trovato in un esempio (e che ho provato con successo)

    codice:
     cmd.Parameters.Add(New OleDbParameter("@TRIGint", OleDbType.WChar)).Value = intestazione
    e quella proposta da te
    codice:
    
    objcomm.Parameters.AddWithValue("@TRIGint",intestazione)
    Grazie
    Ultima modifica di karug64; 26-04-2014 a 17:33
    Dopo anni di programmazione amatoriale in VBA, ho deciso di passare a VB.NET

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    Quote Originariamente inviata da karug64 Visualizza il messaggio

    Ti chiedo che differenza c'e' tra questa istruzione che ho trovato in un esempio (e che ho provato con successo)

    codice:
     cmd.Parameters.Add(New OleDbParameter("@TRIGint", OleDbType.WChar)).Value = intestazione
    e quella proposta da te
    codice:
    
    objcomm.Parameters.AddWithValue("@TRIGint",intestazione)
    Perchè Parameters.Add è deprecato per SQLClient, ma puoi comunque utilizzarlo. Nella documentazione, nelle note, è specificato il perchè

    SqlParameterCollection.AddWithValue

    Nel tuo caso non ci sono vincoli particolari, semplicemente usando AddWithValue sarà fatto un cast implicito

    Ultima modifica di miky_2; 26-04-2014 a 18:44 Motivo: errore ortografico

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    74
    Grazie per la risposta.

    Volendo effettuare un UPDATE, modificando solo alcuni campi della tabella (per esempio ci sono 4 campi ed io vorrei variare solo il valore del secondo campo) utilizzando i parametri, potresti aiutarmi a creare la stringa ?
    Grazie
    Ultima modifica di karug64; 26-04-2014 a 21:03
    Dopo anni di programmazione amatoriale in VBA, ho deciso di passare a VB.NET

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.