Discussione:
Digitare non più di due decimali
(troppo vecchio per rispondere)
Francesco Salvagnini
2012-02-03 20:32:58 UTC
Permalink
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
radicale 001
2012-02-04 04:54:16 UTC
Permalink
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Si tratta banalmente di definire una maschera di input per il
textbox. Solo che non ricordo la stringa, forse #,@@ ?

Oppure puoi scrivere una routine nell' evento key_down
che legge ogni tasto che batte l' utente e quando arriva
alla terza cifra decimale semplicemente blocca la
digitazione.
Francesco Salvagnini
2012-02-04 11:34:25 UTC
Permalink
Post by radicale 001
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Si tratta banalmente di definire una maschera di input per il
Oppure puoi scrivere una routine nell' evento key_down
che legge ogni tasto che batte l' utente e quando arriva
alla terza cifra decimale semplicemente blocca la
digitazione.
#,@@ non funziona: Tra l'altro Access lo legge così: #,"@@"
e poi... per l'altra soluzione... cosa gli dico ad Access? Nel senso,
non saprei come tradurre in codice
conta quanti caratteri l'utente digita dopo la virgola e bloccalo se
sono più di 2.. mi sembra un po' farragginoso.
Io tornerei sulla maschera di imput, ma sei sicuro che ci sia una
stringa? Cercherò! Intanto grazie!
radicale 001
2012-02-04 13:48:34 UTC
Permalink
Post by Francesco Salvagnini
Post by radicale 001
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Si tratta banalmente di definire una maschera di input per il
Oppure puoi scrivere una routine nell' evento key_down
che legge ogni tasto che batte l' utente e quando arriva
alla terza cifra decimale semplicemente blocca la
digitazione.
e poi... per l'altra soluzione... cosa gli dico ad Access? Nel senso,
non saprei come tradurre in codice
conta quanti caratteri l'utente digita dopo la virgola e bloccalo se
sono più di 2.. mi sembra un po' farragginoso.
Io tornerei sulla maschera di imput, ma sei sicuro che ci sia una
stringa? Cercherò! Intanto grazie!
Guarda, se per esempio vuoi numeri del tipo 34,35 devi semplicemente
scrivere la stringa cosi : 99,99

Leggi qua per i dettagli :
http://office.microsoft.com/it-it/access-help/controllare-i-formati-di-immissione-dei-dati-con-maschere-di-input-HA010096452.aspx

Con questo svolti.
Ciao.
Francesco Salvagnini
2012-02-04 16:28:19 UTC
Permalink
No, nemmeno questo, perchè nella parte intera del numero l'utente deve
poter digitare quello che vuole. La parte decimale poi deve essere
facoltativa. Nel senso che se devo pagare 500 euro non occorre che
scriva 500,00
radicale 001
2012-02-04 17:52:55 UTC
Permalink
Post by Francesco Salvagnini
No, nemmeno questo, perchè nella parte intera del numero l'utente deve
poter digitare quello che vuole. La parte decimale poi deve essere
facoltativa. Nel senso che se devo pagare 500 euro non occorre che
scriva 500,00
Ti ripeto di leggere il link che ti ho dato : la c'e' tutto quello che
si puo' fare.

Ciao.
Francesco Salvagnini
2012-02-05 09:18:58 UTC
Permalink
Post by radicale 001
Post by Francesco Salvagnini
No, nemmeno questo, perchè nella parte intera del numero l'utente deve
poter digitare quello che vuole. La parte decimale poi deve essere
facoltativa. Nel senso che se devo pagare 500 euro non occorre che
scriva 500,00
Ti ripeto di leggere il link che ti ho dato : la c'e' tutto quello che
si puo' fare.
Ciao.
Letto, letto, non si può fare ; )
radicale 001
2012-02-05 09:57:17 UTC
Permalink
Post by radicale 001
Post by Francesco Salvagnini
No, nemmeno questo, perchè nella parte intera del numero l'utente deve
poter digitare quello che vuole. La parte decimale poi deve essere
facoltativa. Nel senso che se devo pagare 500 euro non occorre che
scriva 500,00
Ti ripeto di leggere il link che ti ho dato : la c'e' tutto quello che
si puo' fare.
Ciao.
Letto, letto, non si può fare  ; )
Si puo', si puo'. Leggi meglio ;-)
Francesco Salvagnini
2012-02-05 12:49:52 UTC
Permalink
Tecnicamente potrebbe essere

999999999,99

però dal punto di vista estetico è bruttino, in quanto, quando inizi a
digitare il numero intero (esempio 1 di 100)
ti scrive 1_ _ _ _ _ _ _ _ ,
poi 10 _ _ _ _ _ _ _ ,
poi 100 _ _ _ _ _ _ ,
e l'utente rimane disorientato, con queste cifre che partono da
sinistra..
radicale 001
2012-02-05 13:11:35 UTC
Permalink
Post by Francesco Salvagnini
Tecnicamente potrebbe essere
999999999,99
Vedi che si puo' fare ? ;-)
Post by Francesco Salvagnini
però dal punto di vista estetico è bruttino, in quanto, quando inizi a
digitare il numero intero (esempio 1 di 100)
ti scrive 1_ _ _ _ _ _ _ _ ,
poi 10 _ _ _ _ _ _ _ ,
poi 100 _ _ _ _ _ _ ,
e l'utente rimane disorientato, con queste cifre che partono da
sinistra..
E allora se non ti piace devi fare con la funzione che
intercetta i tasti che citavo dianzi. Per forza.
Francesco Salvagnini
2012-02-05 19:59:59 UTC
Permalink
Post by radicale 001
E allora se non ti piace devi fare con la funzione che
intercetta i tasti che citavo dianzi. Per forza.
idee?
Francesco Salvagnini
2012-02-05 21:17:08 UTC
Permalink
Post by radicale 001
E allora se non ti piace devi fare con la funzione che
intercetta i tasti che citavo dianzi. Per forza.
Eh, e come si fa a contare il numero di digitazioni dopo la virgola?
Io non saprei proprio.. : (
radicale 001
2012-02-07 16:09:24 UTC
Permalink
Post by Francesco Salvagnini
Post by radicale 001
E allora se non ti piace devi fare con la funzione che
intercetta i tasti che citavo dianzi. Per forza.
Eh, e come si fa a contare il numero di digitazioni dopo la virgola?
Io non saprei proprio.. : (
Se ti va bene la soluzione di Vladimiro adotta quella :
e' molto piu' semplice.
Vladimiro Leone
2012-02-05 23:48:51 UTC
Permalink
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
massimo di due decimali senza arrotondamenti:

Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub

Ciao Vladimiro
Francesco Salvagnini
2012-02-06 09:48:45 UTC
Permalink
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!! ; )
Francesco Salvagnini
2012-02-06 10:36:29 UTC
Permalink
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
Senonché, questa soluzione trasforma il numero in una stringa (es:
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte
cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
Grazie! ; )
Francesco Salvagnini
2012-02-06 10:38:24 UTC
Permalink
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
Senonché, questa soluzione trasforma il numero in una stringa (es:
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte ?
Cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2) ?
Grazie! ; )
Vladimiro Leone
2012-02-06 16:48:26 UTC
Permalink
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte ?
Cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)    ?
Grazie!  ; )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
non si può fare in quanto non si può mozzare una stringa senza che
essa già esista; altra cosa, come già ti ho spiegato, è sapere a
priori la quantità di cifre presenti nel numero intero e nei decimali,
ma non è il caso tuo.
Ciao Vladimiro.
Francesco Salvagnini
2012-02-06 20:05:24 UTC
Permalink
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte ?
Cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)    ?
Grazie!  ; )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
non si può fare in quanto non si può mozzare una stringa senza che
essa già esista; altra cosa, come già ti ho spiegato, è sapere a
priori la quantità di cifre presenti nel numero intero e nei decimali,
ma non è il caso tuo.
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Sì, ho capito. Tra l'altro la stringa diventa tale solo nei campi Non
associati. Se la formula la applico su un campo numerico con origine
riga, la stringa rimane numero.
Grazie ancora! ; )
Francesco Salvagnini
2012-02-06 20:37:18 UTC
Permalink
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte ?
Cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)    ?
Grazie!  ; )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
non si può fare in quanto non si può mozzare una stringa senza che
essa già esista; altra cosa, come già ti ho spiegato, è sapere a
priori la quantità di cifre presenti nel numero intero e nei decimali,
ma non è il caso tuo.
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Sì, ho capito. Tra l'altro la stringa diventa tale solo nei campi Non
associati. Se la formula la applico su un campo numerico con origine
riga, la stringa rimane numero.
Grazie ancora!  ; )- Nascondi testo citato
- Mostra testo citato -
Altra domanda: c'è la possibilità di tagliare i decimali oltre il
secondo di una intera tabella?
Es. Il campo valore della tabella XY
ID CDMOV DATA VALORE
Magari con una query...
Vladimiro Leone
2012-02-07 21:47:51 UTC
Permalink
Post by Francesco Salvagnini
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte ?
Cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)    ?
Grazie!  ; )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
non si può fare in quanto non si può mozzare una stringa senza che
essa già esista; altra cosa, come già ti ho spiegato, è sapere a
priori la quantità di cifre presenti nel numero intero e nei decimali,
ma non è il caso tuo.
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Sì, ho capito. Tra l'altro la stringa diventa tale solo nei campi Non
associati. Se la formula la applico su un campo numerico con origine
riga, la stringa rimane numero.
Grazie ancora!  ; )- Nascondi testo citato
- Mostra testo citato -
Altra domanda: c'è la possibilità di tagliare i decimali oltre il
secondo di una intera tabella?
Es. Il campo valore della tabella XY
ID CDMOV DATA VALORE
Magari con una query...- Nascondi testo citato
- Mostra testo citato
Ciao Francesco, io ti do la soluzione, però tu ti devi impegnare di
più a capire, ok? :-)
Questo è l'SQL della query:
SELECT XY.ID, XY.CDMOV, XY.DATA, Left([Valore],InStr([Valore],",")+2)
AS NUOVO_VALORE
FROM XY;
Ciao Vladimiro.
Francesco Salvagnini
2012-02-08 07:51:02 UTC
Permalink
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte ?
Cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)    ?
Grazie!  ; )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
non si può fare in quanto non si può mozzare una stringa senza che
essa già esista; altra cosa, come già ti ho spiegato, è sapere a
priori la quantità di cifre presenti nel numero intero e nei decimali,
ma non è il caso tuo.
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Sì, ho capito. Tra l'altro la stringa diventa tale solo nei campi Non
associati. Se la formula la applico su un campo numerico con origine
riga, la stringa rimane numero.
Grazie ancora!  ; )- Nascondi testo citato
- Mostra testo citato -
Altra domanda: c'è la possibilità di tagliare i decimali oltre il
secondo di una intera tabella?
Es. Il campo valore della tabella XY
ID CDMOV DATA VALORE
Magari con una query...- Nascondi testo citato
- Mostra testo citato
Ciao Francesco, io ti do la soluzione, però tu ti devi impegnare di
più a capire, ok? :-)
SELECT XY.ID, XY.CDMOV, XY.DATA, Left([Valore],InStr([Valore],",")+2)
AS NUOVO_VALORE
FROM XY;
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Eh, io la buona volontà ce la metto, è l'intelligenza che mi manca
(oltre che un background scolastico informatico).
Cerco di riparare imparando il più possibile mentre lavoro, ed è
grazie a gente come voi se ho costruito un bellissimo pgm (4 anni di
lavoro)
E nei ringraziamenti ci siete tutti voi del gruppo di discussione.
Grazie dell'aiuto, il Signore vi benedica,

Francesco.
Francesco Salvagnini
2012-02-08 08:41:59 UTC
Permalink
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte ?
Cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)    ?
Grazie!  ; )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
non si può fare in quanto non si può mozzare una stringa senza che
essa già esista; altra cosa, come già ti ho spiegato, è sapere a
priori la quantità di cifre presenti nel numero intero e nei decimali,
ma non è il caso tuo.
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Sì, ho capito. Tra l'altro la stringa diventa tale solo nei campi Non
associati. Se la formula la applico su un campo numerico con origine
riga, la stringa rimane numero.
Grazie ancora!  ; )- Nascondi testo citato
- Mostra testo citato -
Altra domanda: c'è la possibilità di tagliare i decimali oltre il
secondo di una intera tabella?
Es. Il campo valore della tabella XY
ID CDMOV DATA VALORE
Magari con una query...- Nascondi testo citato
- Mostra testo citato
Ciao Francesco, io ti do la soluzione, però tu ti devi impegnare di
più a capire, ok? :-)
SELECT XY.ID, XY.CDMOV, XY.DATA, Left([Valore],InStr([Valore],",")+2)
AS NUOVO_VALORE
FROM XY;
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Eh, io la buona volontà ce la metto, è l'intelligenza che mi manca
(oltre che un background scolastico informatico).
Cerco di riparare imparando il più possibile mentre lavoro, ed è
grazie a gente come voi se ho costruito un bellissimo pgm (4 anni di
lavoro)
E nei ringraziamenti ci siete tutti voi del gruppo di discussione.
Grazie dell'aiuto, il Signore vi benedica,
Francesco.- Nascondi testo citato
- Mostra testo citato -
Segnalo che l'espressione sql funziona per i numeri che hanno qualche
decimale.
Se i decimali sono zero (es: 55.100,00), l'espressione restituisce 55
(giustamente)
Shalom! : )
Francesco Salvagnini
2012-02-08 09:16:57 UTC
Permalink
Correggo quanto ho scritto in un post precedente.
La formula di Vladimiro
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
va benissimo sia per campi con origine che per campi non associati:
il numero comunque diventa una stringa.
Solo che, se lo rimetto così com'è nel campo (Standard, 2 decimali)
ritorna numero,
se lo riutilizzo per operazioni varie (somme, addizioni e
quant'altro), devo prima
farlo passare in una variabile numerica (es. double)
Vladimiro Leone
2012-02-08 23:10:19 UTC
Permalink
Post by Francesco Salvagnini
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte ?
Cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)    ?
Grazie!  ; )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
non si può fare in quanto non si può mozzare una stringa senza che
essa già esista; altra cosa, come già ti ho spiegato, è sapere a
priori la quantità di cifre presenti nel numero intero e nei decimali,
ma non è il caso tuo.
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Sì, ho capito. Tra l'altro la stringa diventa tale solo nei campi Non
associati. Se la formula la applico su un campo numerico con origine
riga, la stringa rimane numero.
Grazie ancora!  ; )- Nascondi testo citato
- Mostra testo citato -
Altra domanda: c'è la possibilità di tagliare i decimali oltre il
secondo di una intera tabella?
Es. Il campo valore della tabella XY
ID CDMOV DATA VALORE
Magari con una query...- Nascondi testo citato
- Mostra testo citato
Ciao Francesco, io ti do la soluzione, però tu ti devi impegnare di
più a capire, ok? :-)
SELECT XY.ID, XY.CDMOV, XY.DATA, Left([Valore],InStr([Valore],",")+2)
AS NUOVO_VALORE
FROM XY;
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Eh, io la buona volontà ce la metto, è l'intelligenza che mi manca
(oltre che un background scolastico informatico).
Cerco di riparare imparando il più possibile mentre lavoro, ed è
grazie a gente come voi se ho costruito un bellissimo pgm (4 anni di
lavoro)
E nei ringraziamenti ci siete tutti voi del gruppo di discussione.
Grazie dell'aiuto, il Signore vi benedica,
Francesco.- Nascondi testo citato
- Mostra testo citato -
Segnalo che l'espressione sql funziona per i numeri che hanno qualche
decimale.
Se i decimali sono zero (es: 55.100,00), l'espressione restituisce 55
(giustamente)
Shalom! : )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
se hai anche numeri senza decimali, devi modificare l'espressione in
questo modo:
SELECT XY.ID, XY.CDMOV, XY.DATA,
IIf(InStr([Valore],","),Left([Valore],InStr([Valore],",")+2),[Valore])
AS NUOVO_VALORE
FROM XY;
Ciao Vladimiro
Francesco Salvagnini
2012-02-12 08:39:01 UTC
Permalink
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte ?
Cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)    ?
Grazie!  ; )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
non si può fare in quanto non si può mozzare una stringa senza che
essa già esista; altra cosa, come già ti ho spiegato, è sapere a
priori la quantità di cifre presenti nel numero intero e nei decimali,
ma non è il caso tuo.
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Sì, ho capito. Tra l'altro la stringa diventa tale solo nei campi Non
associati. Se la formula la applico su un campo numerico con origine
riga, la stringa rimane numero.
Grazie ancora!  ; )- Nascondi testo citato
- Mostra testo citato -
Altra domanda: c'è la possibilità di tagliare i decimali oltre il
secondo di una intera tabella?
Es. Il campo valore della tabella XY
ID CDMOV DATA VALORE
Magari con una query...- Nascondi testo citato
- Mostra testo citato
Ciao Francesco, io ti do la soluzione, però tu ti devi impegnare di
più a capire, ok? :-)
SELECT XY.ID, XY.CDMOV, XY.DATA, Left([Valore],InStr([Valore],",")+2)
AS NUOVO_VALORE
FROM XY;
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Eh, io la buona volontà ce la metto, è l'intelligenza che mi manca
(oltre che un background scolastico informatico).
Cerco di riparare imparando il più possibile mentre lavoro, ed è
grazie a gente come voi se ho costruito un bellissimo pgm (4 anni di
lavoro)
E nei ringraziamenti ci siete tutti voi del gruppo di discussione.
Grazie dell'aiuto, il Signore vi benedica,
Francesco.- Nascondi testo citato
- Mostra testo citato -
Segnalo che l'espressione sql funziona per i numeri che hanno qualche
decimale.
Se i decimali sono zero (es: 55.100,00), l'espressione restituisce 55
(giustamente)
Shalom! : )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
se hai anche numeri senza decimali, devi modificare l'espressione in
SELECT XY.ID, XY.CDMOV, XY.DATA,
IIf(InStr([Valore],","),Left([Valore],InStr([Valore],",")+2),[Valore])
AS NUOVO_VALORE
FROM XY;
Ciao Vladimiro- Nascondi testo citato
- Mostra testo citato -
Grazie Vlad, funziona! ; )

Vladimiro Leone
2012-02-06 20:33:04 UTC
Permalink
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte ?
Cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)    ?
Grazie!  ; )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
non si può fare in quanto non si può mozzare una stringa senza che
essa già esista; altra cosa, come già ti ho spiegato, è sapere a
priori la quantità di cifre presenti nel numero intero e nei decimali,
ma non è il caso tuo.
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Sì, ho capito. Tra l'altro la stringa diventa tale solo nei campi Non
associati. Se la formula la applico su un campo numerico con origine
riga, la stringa rimane numero.
Grazie ancora!  ; )- Nascondi testo citato
- Mostra testo citato -
No scusa non ho capito. La funzione che ti ho indicato vale sia per
caselle di testo associate che non. Poi non ho capito che intendi per
origine riga e terzo, se il problema è quello di vedere i numeri con
virgola e decimali, nel campo della tabella, nel rigo "Dimensione
campo" devi scegliere " Precisione doppia".
Ciao Vladimiro.
Francesco Salvagnini
2012-02-07 08:00:24 UTC
Permalink
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )- Nascondi testo citato
- Mostra testo citato -
"12,22")
Ora, se passo "12,22" in una variabile numerica il problema dovrebbe
essere risolto, ma c'è un sistema per risolverlo a monte ?
Cioè direttamente nell'espressione
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)    ?
Grazie!  ; )- Nascondi testo citato
- Mostra testo citato -
Ciao Francesco,
non si può fare in quanto non si può mozzare una stringa senza che
essa già esista; altra cosa, come già ti ho spiegato, è sapere a
priori la quantità di cifre presenti nel numero intero e nei decimali,
ma non è il caso tuo.
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Sì, ho capito. Tra l'altro la stringa diventa tale solo nei campi Non
associati. Se la formula la applico su un campo numerico con origine
riga, la stringa rimane numero.
Grazie ancora!  ; )- Nascondi testo citato
- Mostra testo citato -
No scusa non ho capito. La funzione che ti ho indicato vale sia per
caselle di testo associate che non. Poi non ho capito che intendi per
origine riga e terzo, se il problema è quello di vedere i numeri con
virgola e decimali, nel campo della tabella, nel rigo "Dimensione
campo" devi scegliere " Precisione doppia".
Ciao Vladimiro.- Nascondi testo citato
- Mostra testo citato -
Nel senso: la funzione che hai scritto vale mentre uno digita il
numero. E questa è una.
La seconda richiesta fatta, serve per portare a due decimali gli
eventuali numeri già scritti con più di due decimali
(es: una query che passi sul campo "Importo" della tabella "Movimenti"
e tolga di mezzo tutto ciò che va oltre il secondo decimale)

Ora, nella prima funzione riscontro che, se il campo in cui si sta
digitando è un "Non associato", Me.MioCampo diventa una stringa,
cioè il numero, pur essendo scritto in una casella di testo con
formato Standard, n° decimali = 2, viene trasformato appunto in
stringa (es: "2373,88").
Quindi se utilizzo questa stringa in qualche operazione (es:
Me.MioCampo + variabile_numerica), Access non me lo legge.
Per questo trasferisco Me.MioCampo in una variabile double. Mentre se
Me.MioCampo è un campo associato ad un'origine (numerica), quando
scrivo:
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
Me.MioCampo rimane un campo numerico.
Francesco Salvagnini
2012-02-08 09:14:32 UTC
Permalink
Mi correggo: il numero comunque diventa una stringa.
Solo che, se lo rimetto così com'è nel campo (Standard, 2 decimali)
ritorna numero,
se lo riutilizzo per operazioni varie (somme, addizioni e
quant'altro), devo prima
farlo passare in una variabile numerica (es. double)
radicale 001
2012-02-07 16:08:21 UTC
Permalink
Post by Vladimiro Leone
Post by Francesco Salvagnini
Ciao a tutti! Vorrei sapere se esiste un modo per impedire all'utente
di digitare, in un campo numerico, più di 2 decimali. Della serie: se
digito 10,994, Access mi faccia scrivere (non solo visualizzare) solo
10,99. Grazie!
Ciao Francesco,
per quel che ne so io, non esiste una funzione in Access che riesca a
bloccare sul nascere l'inserimento di più di due decimali senza
conoscere a priori la composizione e la quantità dei numeri da
inserire; quello che puoi fare invece è la SOSTITUZIONE del numero
inserito con più di due decimali, con lo stesso numero fino ad un
Private Sub MioCampo_AfterUpdate()
If InStr(Me.MioCampo, ",") Then
Me.MioCampo = Left(Me.MioCampo, InStr(Me.MioCampo, ",") + 2)
End If
End Sub
Ciao Vladimiro
Funziona! Bella idea, grazie Vladimiro!!!  ; )
E grazie ... ;-)
Io credevo che tu volessi IMPEDIRE all' utente
di scrivere i decimali. Cosi' invece PRIMA li scrivi,
POI vengono tolti. Non so se mi spiego.
Continua a leggere su narkive:
Loading...