Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    138

    vb6 problema modifica stringa sql

    salve a tutti! ho un problema riguardante la modifica di una stringa tramite linguaggio sql.

    la sintassi che ulitizzo è decisamente corretta ma se effettuo l'update e nella stringa che vado a modificare è presente un un apostrofo, salta tutto e mi errore.

    questa è la query

    rs.open " update misurazioni set tariffa='" & Text9.text & "',designazione='" & Text10.text & "', unitamisura='" & Text11.text & "', prezzoun='" & Text12.text & "' where tariffa = '" & Textp3.Text & "'", db, adOpenStatic

    faccio un esempio veloce

    se text10 prende come valore ----> " ciao " tutto è perfetto e modifica la stringa
    se text10 prende invece il valore -----> " ciao' " non modifica


    grazie!!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758

    Re: vb6 problema modifica stringa sql

    Originariamente inviato da antonyh.c
    la sintassi che ulitizzo è decisamente corretta ma .... salta tutto e mi errore.
    Questo è un ossimoro.

    L'apostrofo (o apice) è usato come carattere di delimitazione delle stringhe. Se anziché scrivere per esteso la query nella open tu la memorizzassi prima in una variabile stringa e poi tu ne esaminassi il contenuto, ti accorgeresti dell'incongruenza provocata dalla presenza di uno o più apici.

    Una soluzione consiste nel duplicare gli apici eventualmente presenti usando la funzione Replace. Per esempio: Replace(Text1.Text, " ' " , " '' " )
    (Attenzione: quelli in rosso sono apici doppi, quelli in verde sono singoli.

    L'altra soluzione (migliore) consiste nell'uso dei paramentri. Su questa tecnica puoi trovare un chiaro articolo di gibra nel suo sito.

    Inoltre, è meglio se la proprietà Text delle TextBox viene espressa esplicitamente anziché sottintesa; cioè Text1.Text è meglio di Text1.

  3. #3
    l'apice è carattere speciale per sql server quindi quando intendi usare un apostrofo, per far capire a sql che è proprio un apostrofo lo devi raddoppiare.

    ci sono 2 soluzioni, quella breve e quella lunga

    Quella breve: Crei una funzione che fa la replace dei tuoi campi, cercando l'apostrofo e rimpiazzandolo con 2 apostrofi.

    in vb6 non ricordo assolutamente come si fa.

    rs.open " update misurazioni set tariffa='" & RaddoppiaApici(Text9.text) & "',designazione='" & RaddoppiaApici(Text10.text) & "', unitamisura='" & RaddoppiaApici(Text11.text) & "', prezzoun='" & RaddoppiaApici(Text12.text) & "' where tariffa = '" & RaddoppiaApici(Textp3.text) & "'", db, adOpenStatic

    (ovviamente chiami la funzione solo per i campi stringa)

    la funzione, in vb6 dovrebbe essere fatta circa così

    function RaddoppiaApici (byval s as string) as string
    RaddoppiaApici = Replace(s, "'", "''")
    end function

    o una cosa del genere



    La soluzione Meno breve è che modifichi la query parametrizzandola, ma anche in questo caso, in vb6 , non ricordo il costrutto.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    138
    grazie a tutti !! ho risolto il problema!! grazie ancora!!

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Sono i soliti problemi di formattazione dei valori di tipo String e Date/Time che possono essere facilmente evitati usando i Command e relativi Parametri
    La comodità di ciò è che non sarà più necessario usare stringhe SQL astruse e complicate sia da scrivere che da leggere, perchè pensa ADO a formattarle in base al tipo di database sottostante.
    Basta semplicemente passare il valore al parametro, per cui fine degli apici, doppi apici, cancelletti, formato di data, ecc...

    Qui trovi un articolo e relativo progetto di esempio:

    ADO, Parametri ed affini
    http://nuke.vbcorner.net/Articoli/VB...5/Default.aspx


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 © 2024 vBulletin Solutions, Inc. All rights reserved.