Newsgroup: it.comp.appl.access
Titolo: Ricerca con vocali accentate

Salve a tutti.
Ho una maschera mediante la quale devo cercare un paziente nella tabella
anagrafica; se il paziente non c'č, ne inserisco uno nuovo.
Il nominativo/i trovato/i mi compare/compaiono in una casella di riepilogo
con una query sottostante che ha come filtro nel campo cognome "like
[RicercaCognome] & *".
Se cerco un cognome inserito con una lettera accentata (ad es "Decň") ma
scrivo "deco", la ricerca risulta nulla. Devo cercarlo come "dec" o "decň".
Il problema č che non tutti gli utenti fanno cosě, e mi ritrovo spesso
inseriti dei duplicati tipo " Deco' " (chiaramente puň avvenire anche il
contrario).
C'č un sistema per evitare che ciň avvenga?
Grazie del consiglio.

 ha scritto nel messaggio
news:batafi$s1i$1...@lacerta.tiscalinet.it...

Fai usare il codice fiscale dei pazienti, cosě risolvi i problemi degli
accenti e dei sinonimi, inoltre ci sono delle funzioni (vedi Sito Comune)
con le quali puoi controllare l'esattezza formale del codice fiscale.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


E' senz'altro un buon sistema utilizzare il codice fiscale come
identificatore univoco; tra l'altro avevo già visto una delle funzioni alle
quali ti riferisci.
Purtroppo nella nostra organizzazione quotidiana (sono anche io uno degli
utenti del DB) è poco pratico: non sempre il paziente lo ha con sé oppure
spesso andiamo a cercare dati di pazienti anche in loro assenza per
discutere i casi clinici.
Credo di dover confrontare il testo digitato nel campo [Ricerca] con una
funzione di stringa sul campo [Cognome] che mi restituisca "xxxxxa" al posto
di "xxxxxà" (ma deve essere ripetuta con tutte le possibili combinazioni di
vocali accentate). Mi sembra abbastanza macchinoso e non ho al momento
alcuna idea su come fare. Grazie per eventuali consigli.


Questa funzione potrebbe eserti utile:
Puoi usarla in una query come origine di una colonna [Cognome]:
MioCognome: TrasformaAccentati([Cognome])
Allo stesso modo la funzione può essere usata per rimuovere (sostituire) le
accentate nella costruzione di un codice fiscale.
Può essere estesa anche ad altri caratteri. Per esempio le "u" con i puntini
di "Gruber".
Public Function TrasformaAccentati(ST As String)
Dim pos As Integer
'Rimuovo gli apostrofi
pos = 1
While InStr(pos, ST, "'") <> 0
    pos = InStr(pos, ST, "'")
    If pos < Len(ST) Then
        ST = Left(ST, pos - 1) + "" + Mid(ST, pos + 1)
    Else
        ST = Left(ST, pos - 1) + ""
    End If
Wend
' RIMUOVO LA A ACCENTATA
pos = 1
While InStr(pos, ST, "à") <> 0
    pos = InStr(pos, ST, "à")
    If pos < Len(ST) Then
        ST = Left(ST, pos - 1) + "a" + Mid(ST, pos + 1)
        Else
        ST = Left(ST, pos - 1) + "a"
    End If
Wend
'Rimuovo la e accentata
pos = 1
While InStr(pos, ST, "è") <> 0
    pos = InStr(pos, ST, "è")
    If pos < Len(ST) Then
        ST = Left(ST, pos - 1) + "e" + Mid(ST, pos + 1)
        Else
        ST = Left(ST, pos - 1) + "e"
    End If
Wend
'Rimuovo la i accentata
pos = 1
While InStr(pos, ST, "ì") <> 0
    pos = InStr(pos, ST, "ì")
    If pos < Len(ST) Then
        ST = Left(ST, pos - 1) + "i" + Mid(ST, pos + 1)
        Else
        ST = Left(ST, pos - 1) + "i"
    End If
Wend
'Rimuovo la ò accentata
pos = 1
While InStr(pos, ST, "ò") <> 0
    pos = InStr(pos, ST, "ò")
    If pos < Len(ST) Then
        ST = Left(ST, pos - 1) + "o" + Mid(ST, pos + 1)
        Else
        ST = Left(ST, pos - 1) + "o"
    End If
Wend
'Rimuovo la ù accentata
pos = 1
While InStr(pos, ST, "ù") <> 0
    pos = InStr(pos, ST, "ù")
    If pos < Len(ST) Then
        ST = Left(ST, pos - 1) + "u" + Mid(ST, pos + 1)
        Else
        ST = Left(ST, pos - 1) + "u"
    End If
Wend
'Rimuovo la é accentata
pos = 1
While InStr(pos, ST, "é") <> 0
    pos = InStr(pos, ST, "é")
    If pos < Len(ST) Then
        ST = Left(ST, pos - 1) + "e" + Mid(ST, pos + 1)
        Else
        ST = Left(ST, pos - 1) + "e"
    End If
Wend
TrasformaAccentati = ST
End Function
Ciao, Carlo

 ha scritto nel messaggio
news:bau8p9$fc0$1...@lacerta.tiscalinet.it...

Se usi una versione di Access successiva ad Access 97, sull'help dai uno
sguardo alla funzione Replace.


 > Grazie del consiglio.
Da sommo ignorante che sono....
Perchč non effettui la ricerca con una combo che legge i dati da una tabella
AnagraficaPazientiInseriti ? I caratteri accentati sono quelli finali quindi
mentre digiti il cognome automaticamente ti verranno proposti i nominativi
inseriti indipendentemente dall'ultima lettera
--
skipper dixit...
www.superskipper.it