Newsgroup: it.comp.appl.access
Titolo: formato numerico

Salve a tutti.
Ho creato una form di ricerca del cliente che dopo aver selezionato dalla casella di riepilogo mi riporta il numero nel campo della form chiamante. 
Il problema è che il campo della form chiamante riceve il numero composto da 4 caratteri composto da spazi se il numero è di 1, 2 o 3 cifre. 
Se invece scrivo direttamente nello stesso campo un numero ciò non accade.
Ovviamente nel primo caso la query non mi restituisce alcun risultato.
Dipende dal campo (non associato) della form chiamante o dal numero che la maschera di ricerca invia alla form chiamante?
Ho provato a mettere standard nel formato del campo IdCliente ma non cambia nulla.
Qual'è la soluzione?
Grazie.
Giuseppe.


Ciao Giuseppe,
nell'origine record della maschera puoi crearti una query con un campo
che sfrutti la funzione Replace:
EliminaSpazi: Replace([IdCliente];" ";"")
Ciao Vladimiro.


Naturalmente ho presupposto che il campo, avendo spazi tra i numeri,
non potesse che essere di tipo testo! :-)
Vladimiro


Ciao Vladimiro, grazie per il tuo intervento.
La form ha come origine una query. Nella query il campo ha come criterio il valore del campo non associato della form.
Quindi non ho capito dove e come inserire la funzione Replace.
Potresti aiutarmi, grazie.
Giuseppe.


Ciao Giuseppe,
se ho interpretato bene, la query ha come parametro il valore della
casella di testo non associata della form che riceve i dati dalla
selezione di una casella di riepilogo. Dunque, potresti fare così:
nell'origine controllo della casella di testo non associata inserisci
=Replace([CasellaDiTesto];" ";"") inserendo naturalmente al posto di
CasellaDiTesto il vero nome della casella di testo della form.
Ciao Vladimiro.


Ciao Vladimiro.
Subito dopo aver inserito l'origine controllo =Replace([CasellaDiTesto];" ";"") è apparso il triangolino verde che non trova l'origine dati.
Ho proseguito comunque e quando la form con la casella di riepilogo restituisce il valore appare il seguente messaggio:
Errore di run-time '-
2147352567
 (80020009)':
impossibile assegnare un valore all'oggetto.
Al posto di =Replace([CasellaDiTesto];" ";"") ho messo
=Replace([idazienda];" ";"") dove idazienda è il nome del campo in cui deve essere inserito il numero che ritorna dalla casella di riepilogo.
Giuseppe.


Ciao Giuseppe,
purtroppo non conosco la struttura del db! :-)
Pensandoci, potresti lasciare tutto come sta, creandoti una nuova
casella di testo, magari rendendola invisibile, facendo riferimento
con la funzione Replace alla casella di testo non associata che hai;
poi, riguardo al parametro della query, come riferimento metti questa
nuova casella di testo non associata al posto dell'altra.
Di nuovo Vladimiro.


Allora Vladimiro, pensavo fosse una cavolata.
Nella form continua ho messo un campo non associato (IdAzienda) e una casella combinata non associata (IdAzienda3) con due colonne: IdAzienda e nomeAzienda con larghezza colonnne 0 e 10.
Quando la form di ricerca con la casella di riepilogo restituisce il numero corrispondente all'azienda scelta invia il valore sia alla casella di testo che alla casella combinata della form chiamante.
Nella form chiamante nella casella di testo ci sono gli spazi prima del numero, mentre nella casella combinata esce il nome giusto dell'azienda selezionata.
Ho provato a mettere su attivato del campo data della form continua la funzione replace così: me.idazienda = Replace([idazienda]," ","") ma mi dà errore di runtime '2465' - impossibile trovare il campo "l" a cui si fa riferimento nell'espressione.
Non capisco perchè la casella combinata prende il valore correttamente mentre la casella di testo aggiunge gli spazi prima.
Non so se questa precisazione ti può essere d'aiuto a capire dov'è l'errore.
Grazie.
Giuseppe


Continuando il mio ultimo intervento, ho trovato questa soluzione.
Su evento attivato del campo data ho messo idazienda = me.idazienda2.column(0) e funziona.
Penso che in ogni caso qualche errore nell'assegnazione del numero alla casella di testo, direttamente dalla form di selezione, resta e mi sarebbe piaciuto scoprirlo.
Giuseppe.


Ciao Giuseppe,
secondo me il tuo modo di procedere a tentativi senza capire fino in
fondo quello che si sta tentando di realizzare non va bene. Basta
andare sull'help (punto interrogativo in alto a destra) e studiarsi
per benino quello che il motore di ricerca ti fa vedere rispetto a
quello che chiedi. :-)
 
Dunque, una casella di testo non associata, non fa riferimento a
nessun campo di tabella o query per cui è semplicemente un contenitore
momentaneo di dati fintantoché resta aperta la maschera in cui si
trova. Infatti se la suddetta casella di testo la inserisci nel corpo
della maschera, a differenza delle caselle di testo con una origine
controllo, se provi a metterci dentro dei dati, gli stessi si
riflettono su tutti i record della maschera continua. Il suo nome si
trova scritto su Altro/Nome elemento. Poniamo che in questa casella di
testo vuoi far vedere dei dati che si trovano in un campo di origine
record della maschera (ad esempio IdAzienza), scriverai nell'origine
controllo:
=[IdAzienza]
mentre, se nel campo IdAzienza ci sono degli spazi (o in un'altra
casella di testo della maschera), volendoli eliminare farai uso della
funzione Replace:
=Replace([IdAzienza];" ";"")
 
Per quanto riguarda l'origine riga della casella combinata, i campi
della query vengono così classificati:
(dal tuo esempio):
me.idazienda2.column(0) significa riferimento al primo campo della
query
me.idazienda2.column(1) significa riferimento al secondo campo della
query
me.idazienda2.column(2) significa riferimento al terzo campo della
query, ecc...
 
Per concludere, il fatto che nella combo non trovi spazi, mentre nella
casella di testo non associata si, è per il semplice fatto che nella
combo ritrovi i dati della tabella, mentre nella casella di testo
quelli che vengono fuori con l'aggiunta di codice vba. Per cui, penso
che puoi risolvere in questo modo. Se la combo si chiama ad esempio
CBO, nell'origine controllo della casella di testo puoi mettere:
=Replace([CBO];" ";"")
 
Ciao Vladimiro.
 


Grazie Vladimiro, la tua spiegazione è stata abbastanza esaustiva.
Probabilmente non ti ho descritto bene la struttura del db o delle varie form.
Mi rendo conto che aiutare senza avere il db sotto mano a volte rende tutto più problematico.
Nella form continua, nella casella di testo se ricordo bene il numero corrispondente all'azienda per cui devo fare la ricerca, inserisco il numero e subito la combo (non abilitata) riceve il valore e mostra la ragione sociale relativa.
Se invece non lo ricordo, apro la form di selezione, per poter ricercare l'azienda secondo criteri diversi. Una volta selezionata, la form si chiude e manda il numero sia alla casella di testo che alla combo della form chiamante.
E qui nasce il problema degli spazi.
Ora mettendo come origine alla casella di testo
=Replace([CBO];" ";"") 
la form di selezione non riesce più ad inviare alla casella di testo il valore corrispondente all'azienda selezionata (errore run time, impossibile assegnare un valore all'oggetto). 
Togliendo l'origine =Replace([CBO];" ";"")  alla casella di testo, invece con la soluzione che ho trovato prima, funziona.
Io continuo a provare e studiare e appena trovo la soluzione la pubblico.
Se vuoi dargli un'occhiata, posso inviarti un piccolo db.
Fammi sapere.
Giuseppe.

 Ciao Vladimiro.
 
Grazie Vladimiro, la tua spiegazione � stata abbastanza esaustiva.
Probabilmente non ti ho descritto bene la struttura del db o delle varie 
form.
Mi rendo conto che aiutare senza avere il db sotto mano a volte rende tutto 
pi� problematico.
Nella form continua, nella casella di testo se ricordo bene il numero 
corrispondente all'azienda per cui devo fare la ricerca, inserisco il numero 
e subito la combo (non abilitata) riceve il valore e mostra la ragione 
sociale relativa.
Se invece non lo ricordo, apro la form di selezione, per poter ricercare 
l'azienda secondo criteri diversi. Una volta selezionata, la form si chiude 
e manda il numero sia alla casella di testo che alla combo della form 
chiamante.
E qui nasce il problema degli spazi.
Ora mettendo come origine alla casella di testo
=Replace([CBO];" ";"")
la form di selezione non riesce pi� ad inviare alla casella di testo il 
valore corrispondente all'azienda selezionata (errore run time, impossibile 
assegnare un valore all'oggetto).
Togliendo l'origine =Replace([CBO];" ";"")  alla casella di testo, invece 
con la soluzione che ho trovato prima, funziona.
Io continuo a provare e studiare e appena trovo la soluzione la pubblico.
Se vuoi dargli un'occhiata, posso inviarti un piccolo db.
Fammi sapere.
Giuseppe.
 
ciao ragazzi
posso invitarvi a fare un poco di quoting?
:D
 
Daniele 
 
 

 Daniele
Vladimiro
ps
per quanto mi riguarda, non ho trovato nessun argomento con cui
potermi relazionare con il quoting. Ecco perché ho preferito
riassumere alla fine.