Newsgroup: it.comp.appl.access
Titolo: Ricerca con insrt tra due numeri

Dovrei dividere in due parti delle stringhe contenute nel campo di una
tabella,
tra il numero civico e il cap per ottenere due campi diversi, faccio
un esempio con qualcuna di queste stringhe:
VIA EINAUDI, 33 00013 MENTANA   RM
L.GO BUONARROTI  84   00052 CERVETERI   RM
VIA AQUILA, 27   95037 SAN GIOVANNI LAPUNTA   CT
quindi dovrei ottenere:
campo1                                     campo2
VIA EINAUDI, 33                        00013 MENTANA   RM
L.GO BUONARROTI  84                    00052 CERVETERI   RM
VIA AQUILA, 27                         95037 SAN GIOVANNI LAPUNTA   CT
il problema è che usando la funzione instr non posso dare come
indicazione
lo spazio in quanto lo ritrovo in altre parti della stringa.
Come si potrebbero dividere le stringhe fra il numero civico e il cap?
Un Saluto a tutti
Davide

 ha scritto nel messaggio
news:e2ac43b1.04091...@posting.google.com...

Se è vero che il CAP è l'unica sottostringa lunga 5 contenente solo numeri.
Se i dati da suddividere sono contenuti in un campodi tipo testo chiamato
TuttoInsieme in una tabella chiamata Tabella1.
In un modulo del tuo database memorizza il seguente codice VBA:
Public Function DividiIndirizzo(IndirizzoUnico _
As String, PrimaDopo As Integer) As String
Dim Conta As Integer
Dim Conta2 As Integer
Dim Pippo As String
DividiIndirizzo = ""
For Conta = 1 To Len(IndirizzoUnico) - 5
    Pippo = ""
    For Conta2 = 0 To 4
        If IsNumeric(Mid(IndirizzoUnico, _
        Conta + Conta2, 1)) Then
            Pippo = Pippo & Mid(IndirizzoUnico, _
            Conta + Conta2, 1)
        End If
    Next Conta2
    If Len(Pippo) = 5 Then
        If PrimaDopo = 1 Then
            DividiIndirizzo = Left(IndirizzoUnico, _
            Conta - 1)
            Exit Function
        Else
            DividiIndirizzo = Mid(IndirizzoUnico, Conta)
            Exit Function
        End If
    End If
Next Conta
End Function
Quindi per ottenere la divisione dell'indirizzo in due campi creati una
query che abbia il seguente codice SQL:
SELECT Tabella1.TuttoInsieme, DividiIndirizzo([TuttoInsieme],1) AS Campo1,
DividiIndirizzo([TuttoInsieme],2) AS Campo2
FROM Tabella1;
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:e2ac43b1.04091...@posting.google.com...

Ciao Davide,
se ci fosse sempre la virgola tra il nome della via e il numero potresti
cercare la virgola, e poi cercare lo spazio successivo alla posizione della
virgola +2(per saltare il primo spazio succ. alla virgola)
Nel tuo caso però la virgola non c'è sempre e quindi la vedo piuttosto
complicata. Se non fossero tanti quelli senza virgola potresti cercarli
aggiungergli  a mano la virgola e poi apllicare il metodo proposto.
Mi è venuto in mente un'altra possibilità un po' complicata:
Con la funzione Split (vedi help) usando come separatore lo spazio ti
ritroverai in un array tutte le singole parole, con un ciclo verifichi
qual'è la prima  parola che corrisponde  a un numero e ipotizziamo che
quello sia il numero civico, individuato il n. civico con una instr del
numero trovato dovresti riuscire a dividere in due la stringa (bisogna
vedere cosa succede se un numero civico è 22/a ...)
Spero che qualcuno di questi suggerimenti possano esserti utili
Ciao
Cinzia

...

Ciao Roberto
Ti ringranzio della soluzione che mi hai dato,
tramite la tua routine sono riuscito a separare
le stringhe come volevo io.
Un Saluto  Davide

...

Ciao Cinzia
Con la soluzione proposta da Roberto
sono riuscito a dividere le stringhe come volevo io.
Ho provato come hai detto tu di fare leva sulla virgola 
prima del numero civico,solo che le stringhe senza quella 
virgola erano troppe.
La funzione Split non la conosco,dovrei provarla.
Comunque ti Ringranzio della risposta.
Un Saluto  Davide