Newsgroup: it.comp.lang.visual-basic
Titolo: Disperazione Località

Siete la mia ultima speranza e la mia unica salvezza!!!
sto combattendo da una settimana con un programmino
che dovrebbe filtrare le località (i comuni).
mi spiego meglio
ricevo da varie ditte elenchi di negozi, con la relativa località e
nel mio database SQL ho messo una tabella NEGOZI e una tabella LOCALITA
in modo che non ripeto n volte il nome della località nella tabella
negozi, tanto le località sono definite e raramente cambiano.
Nella tabella NEGOZI c'è dunque un campo IDLOCALITA che punta alla
tabella LOCALITA che è composta da id,località,cap,prov,ecc....
Spero di essere stato chiaro fin qui.
Quando però mi arrivano file con dentro nuovi negozi, che dovrebbero
avere come località "MILANO" ma in realtà, per errori vari, mi arriva :
"MILANO - MI","MIKANO"," MILANO","MILAN","ILANO",ecc.. e pergiunta alle
volte c'è oltre alla località errata anche la Provincia sbagliata o il
cap sbagliato o assente.
Insomma qual'è il mio problema ????
Non vorrei aggiungere questi errori alla tabella LOCALITA, come se
fossero dei nuovi comuni, xchè in realtà non lo sono !!!
Altrimenti mi ritroverei in pochi anni con 1milione di località
italiane.
Ma allora come faccio a capire a cosa assomigliano ???
Ho provato con l'incrocio tra cap e prov, ma niente
Ho provato con i like, con i left, con i right, ecc....
ma niente ce ne sono sempre alcuni che non vengono riconosciuti
Ho pensato di crearmi un elenco a parte di località simili
ma mi sembra una cosa assurda e difficile poi da gestire 
(il negozio a quale tabella dovrebbe puntare Località1 o Località2 ??)
Ho provato a chiedere a chi mi manda gli elenchi di stare più attento
ma la risposta è picche, in quanto gli inserimenti, vengono fatti
da varie persone, in varie parti d'italia ed è impossibile sollecitare
tutta questa gente, oltre che c'è sempre l'errore di digitazione dietro
l'angolo.
Sono sull'orlo di una crisi di programmazione :((
CHE DEVO FARE ??????
Qualcuno ha già sofferto cosi tanto per motivi simili ?????
Alex disperato!!!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Qualcuno ha già sofferto cosi tanto per motivi simili ?????
Da queste parti si è parlato di un algoritmo, chiamato soundex, che
permetterebbe di capire quanto due stringhe si assomigliano, non so se è
applicabile al tuo caso.
In alternativa, ma probabilmente ci hai già pensato, puoi generare un elenco
degli scarti, da processare a manina... ma se sono tanti è una mazzata. Oppure
ancora puoi proporre di sviluppare anche il software con cui sono inseriti i
record, facendo in modo che le località siano solo quelle prelevate da un
determinato elenco :-)
--
Salutoni
Sergio

 ha scritto nel messaggio
news:b6u7d2$90394$1...@ID-173193.news.dfncis.de...


 credo.
Ed č quello che dovrebbe fare il famoso algoritmo soundex. Se nč parlato
parecchie volte sul ng
http://groups.google.it/groups?as_q=soundex&ie=ISO-8859-1&as_ugroup=it.comp.lang
.visual-basic&lr=&hl=it
(se il link č su piů righe lo devi "ricostruire")
--
Salutoni
Sergio

 credo.
In modo automatico è un casino.
Io farei così:
Prendo la 'nuova' località
Verifico se coincide al 100% con una esistente:
    -Se sì, siamo a posto
    - Se no, presguo
Tolgo tutti gli spazi, i puntini, i trattini, ecc...
Converto tutto in minuscolo
Faccio una query con Soundex sul database.
Se mi ritorna qualcosa, presento all'utente l'avviso che la località tale è
somigliante alle località tale1, tale2, tale3, ecc..., e chiedo di
selezionare o di indicare se voglio aggiungere alla tabella una nuova
località.
Ciao
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mie canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti...

 ha scritto nel messaggio
news:%Ixka.18236$iy5.5...@twister2.libero.it...


Io mi sono risolto il problema con una textbox e un recordset disconnesso.
Ad ogni pressione di tasto cerco la città più vicina per i caratteri
inseriti,
quando la corrispondenza è errata, texbox dipinta di rosso e nessun
carattere
premibile eccetto il del, con comunque visualizzata l'ultima città valida
prima
di commettere errori.
--
Saluti
Andrea Moro

ho scaricato la routine SOUNDEX da web
ho messo una colonna SOUNDEX sulla tabella LOCALITA
ora sto verificando le località dei NEGOZI
le sto tramutando in SOUNDEX
trovo n località con il Soundex uguale
ma (per sicurezza) ad un controllo incrociato
di CAP e Provincia non ne esce nemmeno uno fuori.
E' un metodo simpatico ma non risolutivo....
per me....
Grazie
Alex (sempre più disperato)


 per me....
Beh, non abbiamo molto chiaro cosa tu voglia.
Hai detto che ricevi l'elenco da altri, quindi il controllo durante la
digitazione è ovviamente impossibile.
Quindi non resta altro che basarsi sul Cap e sul Soundex.
E' evidente che in 'full-automatic' non può essere fatto.
Chi ti dice che 'Misano' è effettivamente Misano e non un errore di
digitazione di 'Milano'?


 digitazione di 'Milano'?
appunto. routine del genere non possono assolutamente essere automatizzate,
pena l'invalidazione del db.
potrebbero servire eventualmente a semplificare il controllo, proponendo
p.e. in un combo le voci piu' probabili per una data voce: in questo modo
invece di un textbox da riscrivere completamente a mano, potresti avere un
combo con 3-5 proposte, e spesso basterebbero.
ma va ricontrollata anche se c'e' scritto 'misano' o 'milano', appunto:
anche senza considerare le scritture plurime (castel bolognese /
castelbolognese), prova a guardare un elenco dei comuni a partire da
"castel-" ...
ciao, a.

scusa la mia ignoranza
ma come si usa il Soundex su SQL ????
Alex


 ma come si usa il Soundex su SQL ????
Innanzitutto è preoccupante che da ieri a oggi tu non abbia guardato su BOL
per vedere cos'è Soundex.
Comunque. Soundex è una funzione di T-Sql.
Soundex('pippo birillo') ti restituisce una stringa di 4 caratteri che
rappresenta in una sorta di stenografia la stringa sottoposta.
Per valutare la differenza stenografica fra due stringhe, puoi usare una
funzione derivata da Soundex, che si chiama Difference, e che ti restituisce
un valore numerico che denota la differenza.
Diciamo quindi che, se tu fai una select from tabella where
difference(Campo_Comune, 'nuovo comune')<x, ottieni tutti i record con
similitudine almeno x al nuovo elemento.
E così via.
