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

Preguntas similare

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


Respuesta Responder a este mensaje
#2 Emilio
14/09/2004 - 19:31 | Informe spam
Gracias Fernando
mañana lo pruebo y te cuento, en esencia NZ es una simplificación de ese if,
pero no se por que extraña razón me convierte a texto, ni porque no se me
ocurrio probar con el IIF
Gracias de nuevo

Saludos a desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/defaul...newsreglas

"Fernando Arroyo" escribió en el mensaje
news:
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


Respuesta Responder a este mensaje
#3 Emilio
15/09/2004 - 18:35 | Informe spam
Hola de nuevo Fernando
no se por que pero no he visto este hilo desde la máquina del trabajo, ya lo
he probado y como era de esperar funciona.
Muchas gracias.

Saludos a desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/defaul...newsreglas

"Emilio" <miliuco56 ARROBA Hotmail.com> escribió en el mensaje
news:
Gracias Fernando
mañana lo pruebo y te cuento, en esencia NZ es una simplificación de ese


if,
pero no se por que extraña razón me convierte a texto, ni porque no se me
ocurrio probar con el IIF
Gracias de nuevo

Saludos a desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/defaul...newsreglas

"Fernando Arroyo" escribió en el mensaje
news:
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
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida