Newsgroup: it.comp.appl.access
Titolo: operazioni sulle stringhe

Salve
Ho una tabella costruita importando dati da un folglio di excel. Purtroppo i
dati contenuti in esso hanno aggregato in un unica colonna il valore
cognome-nome. Quindi importando i dati in access mi ritrovo in un unico
campo il dato cognome e nome separati da uno spazio. Esiste una qualche
funzione di testo che mi consenta di separare quello che trovo prima dello
spazio da quello che trovo dopo e viceversa, per poter costruire una query
per ottenere due campi, cognome e nome?
Grazie

 ha scritto nel messaggio
news:imZx7.9096$1H1.9...@news.infostrada.it...

Io ti posso dire il codice, ma non sono molto pratico di query e di access,
cioè ho difficoltà a manipolare i dati delle tabelle. Comunque
DIM strCognome AS STRING
DIM strNome AS STRING
DIM X AS INTEGER
X = Instr(TuaTabella.Cognome, " ")
IF X then
    strCognome=Left(TuaTabella.Cognome, X-1)
    strNome=Right(TuaTabella.Cognome, Len(TuaTabella.Cognome)-X)
END IF
Così hai separato il Nome dal Cognome, però non so bene come si fa ad
assegnarli ai campi della tabella dal codice. Anzi se quanlcuno me lo fa
vedere...
Questa routine ha il difetto di considerare il primo spazio che incontra,
quindi se ce ne è più di uno potrebbe non funzionare: ad es. se il cognome
viene prima del nome ed è del tipo DEL VESCOVO o LO CASCIO o magari
BARBERINI COLONNA la separazione è sbagliata così pure se il nome viene
prima e magari è MARIA GRAZIA. La soluzione potrebbe essere sostituire a
mano lo spazio significativo con un carattere particolare, che so "%", però
a questo punto tanto vale separare a mano il Cognome dal Nome.
Ciao
Filippo

 ha scritto nel messaggio
news:9qa7hj$8q0$1...@news.panservice.it...

Grazie dell'aiuto mi è servito molto e ho risolto il problema!!!
Ho utilizzato la logica delle espressioni che mi hai indicato per costruire
delle query con il generatore senza scrivere del codice; data la tabella
anno2000 contenente il campo iscritto ove avevo il cognome e nome separati
da uno spazio ho scritto due query, una per ottenere il campo congnome:
Cognome: Left([anno2000]![iscritto];(InStr([anno2000]![iscritto];" ")-1))
e l'altra per il nome:
Nome:
Right([anno2000]![iscritto];Len([anno2000]![iscritto])-InStr([anno2000]![isc
ritto];" "))
come vedi seguono la logica che mi indicavi e il tutto funziona
perfettamente.
Per il problema dei cognomi doppi la soluzione che ho impiegato è quella di
sostituire lo spazio con "_" (DEL_VESCOVO).
Grazie di nuovo, e solo un'ultima cosa:
dove posso trovare un manuale che mi spieghi il significato e l'uso delle
funzioni predefiniti presenti in Access?
By

 funzioni predefiniti presenti in Access?
Inizialmente cerca nell'help di Access, scoprirai che è una fonte
straordinaria, anche con esempi ben commentati.
Poi, se vuoi approfondire, vai a dare un'occhiata alla sezione Libri del
Sito Comune.
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com

By
manuali non ne conosco, però siccome queste funzioni esistono dal
tempo del GWBasic più o meno, ti consiglio di guardare il manuale on
line alle voci VBA e Visual Basic
Ciao
Filippo
IppoSoft


Non ho usato nessuna procedura particolare. Semplicemente creo una nuova
query in visualizzazione struttura, scelgo la tabella sulla quale fare la
query (anno2000, che contiene il campo iscritto con i dati nel formato
"cognome nome", uso il generatore di espressioni, scrivendo le due
espressioni sopra riportate, lancio l'esecuzione della query e ottengo la
tabella contenente il campo cognome e il campo nome con i dati separati dal
campo iscritto della tabella anno2000. Ovviamento ho impostato la query come
query di creazione di nuova tabella, perchč mi interessa ottenere una
tabella con un archivio dati "pulito".
By
Grazie per la risposta sulle funzioni sul testo.
Stefano Bruscoli