Newsgroup: it.comp.lang.visual-basic
Titolo: SQL E VISUAL BASIC

Ciao a tutti, ho da proporvi un piccolo problemino venuto fuori quando in un
prog. VisualBasic ho aggiunto un query parametrizzata, Vengo al dunque !
La seguente query, non fa altro calcolare il totale dei record trovati
eseguendo la clausola where dove, i parametri sono delle stringhe che io
passo da codice, e al termine restituirmi il risultato in una variabile che
io ho chiamato UGUALE.
Il fatto strano è che la query funziona solo se le stringhe da controllare
NON HANNO APICI ' che la query vade come sintassi della struttura.
Set rst = dbs.OpenRecordset("SELECT count(" & campo1& ")" _
        & " AS [UGUALE] FROM tabella" _
        & " WHERE " & campo1& " = '" & stringa1& "'" _
        & "and " & campo2& " = '" & stringa2& "';")
esempio funzionante
campo1 ="nome"
campo2="cognome"
stringa1="paolo"
stringa2="rossi"
'se il nome paolo rossi esiste nella mia tabella avro:
variabile_integer=rst!uguale   'la variabile conterra 1 o piu'
Esempio non funzionante
campo1 ="nome"
campo2="cognome"
stringa1="'paolo"        'notate l' apice prima del nome
stringa2="rossi"
'la query non viene eseguita !!!! e mi segnala un errore di sintassi !!!
Io penso che il problema sta nella sintassi con cui  passo il parametro all
codice SQL, ma le ho provate tutte !
Premetto che forse, ho adottato una soluzione "poco pulita" ma non ho molta
esperienza inquanto lavoro (purtroppo) come sitemista, e non programmatore.
In pratica questo codice è inserito in una classe che mi serve per gestire
le interrogazioni e gli inserimenti in un database, in particolare con
questo frammento di codice, controllo (prima di iniziare la transazione) se
nella tabella esistono gia' i due  valori che si sta' inserendo inquanto
devono essere unici (In pratica non possono esserci due "PAOLO" "ROSSI" e
quindi ne devo intercettare l'eventuale immissione per dare istruzioni
all'utente)
Ho provato anche con l' impostazione della tabella come "indicizzato senza
duplicati", sperando che VisualBasic mi desse un errore intercettabile ma
non fa altro che evitare di inserire il valore nel campo (Quindi senza
segnalazione per il mio caso fondamentale)
Se qualcuno ha da propormi una suluzione alternativa, vi prego di
comunicarmela !
Grazie mille a tutti quelli che mi risponderanno :-)
Ciao
Nicola

 ha scritto nel messaggio
news:8pvi7u$c6v$1...@nslave2.tin.it...

Il problema è che fai passare una stringa contenente un apice che in Sql è
utilizzato appunto per racchiudere una stringa. Per ovviare a ciò devi fare
in modo che alla stringa che contiene l'apice per esempio "D'Amico" venga
raddoppiato l'apice "D''Amico".
Scusa per l'italiano contorto ma oggi sono fuso spero comunque di esserti
stato d'aiuto!!!
mauro.b...@tiscalinet.it

L'apice è analogo al doppio apice nelle stringhe SQL (racchiude le
stringhe).
Se un parametro passato alla query contiene apice o doppio apice, la query
non funziona.
Crea e utilizza una funzione che raddoppi l'apice o il doppio apice
eventualmente
presente in un stringa utilizzata come parametro della query.
Es.:
stringa1="'paolo"
stringa1= VerificaApici(stringa1)
stringa1 restituita deve valere ''paolo  (2 apici singoli) questo valore lo
passi alla tua query.
filtra il parametro stringa,


 In pratica questo codice č inserito in una classe che mi serve per gestire
