Convertir a número

14/09/2004 - 15:43 por Emilio \(en el curro\) | Informe spam
Hola a tod@s

Tengo un problemilla, que no sé como resolver:
Traigo unos datos mediante un recordset y los pego en una hoja, lo malo es
que en esos datos alguna vez en vez de un cero hay un nulo y eso me
"destroza" los datos de la hoja, porque celdas relaciondas, calculo,
gráficos... se ven afectados, se me ocurrio hacer la select con un
Nz(Campo,0), en Access la función Nz devuelve, si el valor de la variable
pasada es nulo, en este caso 0 y el recordset me devuelve ceros en vez de
nulos, hasta ahí todo bien, pues no :( al pegar los datos en Excel, los pega
como texto, aparece la famosa "etiqueta inteligente" (si lo fuera tanto no
tendría que aparecer) diciendome que "el número de esta celda tiene formato
de texto o va precedido de un apostrofo", cambiarle el formato no soluciona
el problema, manualmente solo hay que seleccionar en la etiqueta
inteligente, "Convertir en número" y listo, pero necesito hacerlo por
código, y aquí ya no soy capaz de encontrar la solución, la grabadora de
macros no graba nada y aquí me tenéis a ver si alguien tiene alguna idea.

Estoy trabajando con Office XP.

Muchas gracias por adelantado

Saludos a tod@s
Emilio
 

Leer las respuestas

#1 Fernando Arroyo
14/09/2004 - 16:45 | Informe spam
Yo he utilizado alguna vez un código parecido al siguiente (usando DAO):


Private Sub prueba()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String

strSQL = "SELECT Productos.CódigoProducto, Productos.NombreProducto, IIF(Productos.PrecioCoste IS NULL,0,Productos.PrecioCoste), IIF(Productos.PrecioVenta IS NULL,0,Productos.PrecioVenta) " & _
"FROM Productos;"

Set dbs = OpenDatabase("C:uta\Productos.mdb")
Set rst = dbs.OpenRecordset(strSQL, dbOpenForwardOnly)

[Hoja1!A1].CopyFromRecordset rst

rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing
End Sub


Lo único realmente importante para lo que nos interesa está en la instrucción que construye la sentencia SQL, en la que los dos IIFs se encargan de devolver un cero si el valor del campo es nulo.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Emilio (en el curro)" <miliu56 ARROBA hotmail.com> escribió en el mensaje news:
Hola a

Tengo un problemilla, que no sé como resolver:
Traigo unos datos mediante un recordset y los pego en una hoja, lo malo es
que en esos datos alguna vez en vez de un cero hay un nulo y eso me
"destroza" los datos de la hoja, porque celdas relaciondas, calculo,
gráficos... se ven afectados, se me ocurrio hacer la select con un
Nz(Campo,0), en Access la función Nz devuelve, si el valor de la variable
pasada es nulo, en este caso 0 y el recordset me devuelve ceros en vez de
nulos, hasta ahí todo bien, pues no :( al pegar los datos en Excel, los pega
como texto, aparece la famosa "etiqueta inteligente" (si lo fuera tanto no
tendría que aparecer) diciendome que "el número de esta celda tiene formato
de texto o va precedido de un apostrofo", cambiarle el formato no soluciona
el problema, manualmente solo hay que seleccionar en la etiqueta
inteligente, "Convertir en número" y listo, pero necesito hacerlo por
código, y aquí ya no soy capaz de encontrar la solución, la grabadora de
macros no graba nada y aquí me tenéis a ver si alguien tiene alguna idea.

Estoy trabajando con Office XP.

Muchas gracias por adelantado

Saludos a
Emilio


Preguntas similares