Newsgroup: it.comp.lang.visual-basic
Titolo: Istruzione CLng

Ciao.
In VB esiste una funzione chiamata CLng che converte in Variant un tipo
Long.
In presenza di parte frazionaria l'istruzione arrotonda per eccesso o per
difetto a seconda se > o < di 0.5
Se la parte frazionaria č uguale a 0.5 allora ritorna il piů vicino numero
pari.
Qualcuno sa se esiste un'istruzione uguale per SQL? Oppure una serie di
istruzioni che facciano lo stesso?
Grazie in anticipo
Matteo

istruzioni che facciano lo stesso?
Devi fare un cast, che sintatticamente varia a seconda del database usato.
Di quale db stai parlando ?
-- 
ciao, hal

 ha scritto nel messaggio news:OFxD7.17039$74.4...@news2.tin.it...


 istruzioni che facciano lo stesso?
Non ho capito cosa vuoi, cmq in SQL puoi usare la funzione int(), oppure
cast (o convert), per convertire un tipo di dati in un altro.
Per sapere i aprametri, vai sul Book on line di SQL.

Mi correggo. In SQL non c'è la funzione int(), ma c'è la round().
ROUND(numeric_expression, length[, function])
Che è anche meglio, secondo me.

Accidenti! Mi è scappato un click di troppo! :-)
Ecco l'help sulla funzione round.
ROUND (T-SQL)
Returns a numeric expression, rounded to the specified length or precision.
Syntax
ROUND(numeric_expression, length[, function])
Arguments
numeric_expression
Is an expression of the exact numeric or approximate numeric data type
category, except for the bit data type.
length
Is the precision to which numeric_expression is to be rounded. length must
be tinyint, smallint, or int. When length is a positive number,
numeric_expression is rounded to the number of decimal places specified by
length. When length is a negative number, numeric_expression is rounded on
the left side of the decimal point, as specified by length.
function
Is the type of operation to perform. function must be tinyint, smallint, or
int. When function is omitted or has a value of 0 (default),
numeric_expression is rounded. When a value other than 0 is specified,
numeric_expression is truncated.
Return Types
Returns the same type as numeric_expression.
Remarks
ROUND always returns a value. If length is negative and larger than the
number of digits before the decimal point, ROUND returns 0.
Example Result
ROUND(748.58, -4) 0
In Microsoft® SQL ServerT version 7.0, ROUND returns a rounded
numeric_expression, regardless of data type, when length is a negative
number.
Examples Result
ROUND(748.58, -1) 750.00
ROUND(748.58, -2) 700.00
ROUND(748.58, -3) 1000.00
Examples
A. Use ROUND and estimates
This example shows two expressions illustrating that with the ROUND function
the last digit is always an estimate.
SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)
GO
Here is the result set:
----------- -----------
123.9990    124.0000
B. Use ROUND and rounding approximations
This example shows rounding and approximations.
Statement Result
SELECT ROUND(123.4545, 2) 123.4500
SELECT ROUND(123.45, -2) 100.00
C. Use ROUND to truncate
This example uses two SELECT statements to demonstrate the difference
between rounding and truncation. The first statement rounds the result. The
second statement truncates the result.
Statement Result
SELECT ROUND(150.75, 0) 151.00
SELECT ROUND(150.75, 0, 1) 150.00

 Returns a numeric expression, rounded to the specified length or
precision.
Non vorrei sbagliarmi, ma credo che nel JetSQL la funzione Round non esista.
Esiste invece Int, che però tronca invece di arrotondare, cioè funziona
correttamente solo per numeri aventi parte decimale inferiore a 0.5.
Se quindi sei al lavoro su un .mdb credo che un comando specifico non
esista.
Da qualche parte però ho letto che il JetSQL eredità tutte le funzioni
matematiche presenti nelle librerie VBA in uso nel sistema.
Personalmente ho provato la Round, che in VBA è presente, ma il Jet non l'ha
riconosciuta.
Una soluzione brutale sarebbe un campo calcolato:
IIf ([campo] - int([campo]) < 0.5; int([campo]) ; int([campo] + 1))
Ammetto che la soluzione è tutto fuorché elegante, però...
Ciao,
Carlo.