Newsgroup: it.comp.appl.access
Titolo: Separare un indirizzo dal suo numero civico

Ho una tabella con un campo indirizzo,
dove ho un indirizzo più un numero civico.
Come si potrebbe fare per dividere l'indirizzo
dal suo numero civico per ottenere due campi,
[indirizzo] e [numero civico]?
Un saluto a tutti
Davide

davide ha scritto:

Immagino che il numero civico sia sempre alla fine e sia sempre di cinque
cifre: se è così, è molto semplice:
Me![numero civico]= right$(Me![indirizzo],5)
Se il numero civico non è sempre alla fine, esiste comunque il modo di
manipolare le stringhe per estrapolarlo. Devi usare l'istruzione mid$, e
scorrere i caratteri della stringa finchè non trovi una sequenza di cinque
cifre.
Se hai difficoltà nell'implementare tutto ciò, scrivi pure.
In bocca al lupo,
            GS
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Ciao Giulio.
Questa tua affermazione deriva da qualche nota ufficiale...?
Ti chiedo questo perchè la cosa mi ha colpito non tanto per il
fatto che il Civico sia al termine della Stringa, quanto le 5 Cifre...!
Io solitamente leggo il carattere VIRGOLA e prendo quanto segue,
ma la tua affermazione mi ha fatto riflettere su un eventuale STANDARD
che ho sottovalutato...!
@Alex.

 @Alex.
Accidenti, la programmazione mi sta dando alla testa, mi sta facendo
perdere il contatto con la realtà concreta!! Non so perchè, quando ho
letto "numero civico" ho associato automaticamente questa parola al Codice
di Avviamento Postale!! Tra l'altro il CAP di solito viene seguito dal
nome della città e quindi non è alla fine della stringa ...
Grazie per avermi fatto notare che sto perdendo il contatto con la realtà,
alla fine finirò per scrivere 3000 righe di codice al giorno e per non
ricordarmi neanche come mi chiamo!!
Scherzo, ma non troppo.
Ciao, alla prossima!


Davide

 >Davide
NumeroCivico=Trim(Mid$(Stringa,instr(stringa,",")+1,Len(stringa))
Ciao.
@Alex.

 >Davide
Ti rispondo, così almeno rimedio parzialmente alla figuraccia che ho fatto
..
Dunque, mi sembra di poter dire che quasi sempre il numero civico coincide
con le prime cifre dell'indirizzo ... questa volta è meglio che ci penso
bene prima di dire cazzate ... no, in effetti ci può essere un indirizzo
del tipo "Via 25 Aprile 21".
Però questi indirizzi sono in numero abbastanza limitato e li puoi gestire
a parte, per esempio creando un campo che è uguale direttamente al numero
civico se l'indirizzo è del tipo suddetto, e a 0 altrimenti. Oppure
scrivendo una procedura che ti dice se subito dopo "Via", o "Viale", ecc.
c'è un numero.
Ma partiamo dalle cose più semplici e consideriamo il caso in cui il
numero civico coincide con le prime cifre dell'indirizzo. Allora, la
procedura è:
x=0
Do
x=x+1
loop until val(mid$(Me![indirizzo],x,1))>0
' (scorro i caratteri dell'indirizzo finchè non trovo una cifra nella
posizione x)
Do
Me![civico]=Me![civico] & mid$(Me![indirizzo],x,1)
x=x+1
loop until isnumeric(mid$(Me![indirizzo],x,1))=true
' (continuo a scorrere i caratteri e li aggiungo al numero civico finchè
il numero non finisce)
Spero di non aver commesso errori!


 il numero non finisce)
Ho provato il codice, è quasi corretto ... avevo commesso un unico errore,
chiaramente nell'ultima riga al posto di true va scritto false.
Ciao!


 @Alex.
Però attenzione che non in tutti gli archivi i numeri civici sono
preceduti dalla virgola. In quelli della mia azienda alcuni sono preceduti
dalla virgola, alcuni no.
La sintassi corretta dell'istruzione comunque mi sembra
NumeroCivico=Trim(Mid$(Stringa,instr(stringa,",")+1,Len(stringa)-instr(stringa,",")-1))
perchè il terzo parametro è uguale alla lunghezza della porzione di
stringa dopo la virgola.
Alla prossima!


Davide

 >Davide
Davide la differenza tra il ";" e la "," viene riconosciuta nella funzione
instr(.....) devi sostituire li l'eventuale modifica ad oc.
Per quanto riguarda le probabilità di avere un carattere piuttosto che
un'altro
io sono molto contrario a queste cose, il Numero Civico deve seguire la ","
come in tutti i Documenti Ufficiali in circolazione.
@Alex.

 @Alex.
Ciao Alessandro,
mah.. non sarei tanto sicuro. Scorrevo un mio  database di indirizzi,
oltre duemila, e mi sono reso conto che sul N° civico c'è molta fantasia.
Tantissimi sono del tipo nr/lettera o nr/nr/lettera.
Quelli, poi degli alloggi popolari spesso sono senza numero, ma del tipo:
via XXXX, Palazzina nr. ZZZ - Interno XXX, oppure Via XXX, Palazzo (nome
palazzo) 1° Piano - Interno C.
Penso proprio che sia difficile avere risultati precisi.
--
rgrds
SC


 >Davide
Ti ho detto, la mia procedura non funziona solo quando prima del n.civico
ci sono delle cifre, es. "Via 20 Settembre 143". Dato che però penso che
questi casi siano in numero limitato, puoi individuarli e gestirli: ad es.
poniamo che indirizzi di questo tipo siano in corrispondenza dei record 4,
89 e 232; allora scrivi una procedura del tipo
Select case rs("id")
case 4:
Me![civico]=22
case 89:
ecc. ecc.
case Else 
utilizzi la procedura che ti ho detto
Modi più semplici non ne vedo.
Oggi sono stato tutto il giorno prima a programmare, poi a giocare a
scacchi: sono stremato, ti saluto!!


   
      GS
Ciao! Giulio
La procedura tratta un record per volta,
oppure tutti i records che specifico con select case.
Ma come si può impostare la procedura per trattare 
i records di una tabella dal primo all'ultimo record?
Un saluto e un ringraziamento
Davide