Post by Vladimiro LeonePost by Francesco SalvagniniPost by Vladimiro LeonePost by Francesco SalvagniniPost by Vladimiro LeonePost by Francesco SalvagniniCiao 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.