Foros del Web » Programación para mayores de 30 ;) » .NET »

Error al convertir el tipo de datos varchar a numeric

Estas en el tema de Error al convertir el tipo de datos varchar a numeric en el foro de .NET en Foros del Web. Hola a todos, haber si me puedo explicar: Tengo una caja de texto en el que introduzco Euros. Al dar al return en esa misma ...
  #1 (permalink)  
Antiguo 05/03/2007, 12:12
Avatar de Morito  
Fecha de Ingreso: mayo-2006
Mensajes: 49
Antigüedad: 17 años, 11 meses
Puntos: 0
Error al convertir el tipo de datos varchar a numeric

Hola a todos, haber si me puedo explicar:

Tengo una caja de texto en el que introduzco Euros. Al dar al return en esa misma caja, se genera una consulta con el parametro introducido para extraer datos de una base de datos sql server 2005 y visualizarlos en un datagridview:

Esta es la Select que se genera utilizando el parametro introducido como filtro(la caja donde se introduce la cantidad se llama IMPORTE.TEXT)

"Select Codigo,Establecimientos.Nombre,Fecha,Persona,Conce pto,Importe,Comentario from Prestamos,Establecimientos where Codigo_Estable=Establecimiento and Importe='" & Convert.ToDecimal(Importe.Text) & "' order by Establecimientos.Nombre"

El error que me da el programa al ejecutar esta select es el que podeis ver en el titulo. Los campos que se comparan en el where son del mismo tipo de dato.

Como puedo solucionar esto???una de las causas puede ser que se haga un lio con la , al meter una cantidad con centimos??
  #2 (permalink)  
Antiguo 06/03/2007, 14:41
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Re: Error al convertir el tipo de datos varchar a numeric

intenta así
iif(importe.text.lengh >0 then,Cdec(Importe.text),0)

nos vemos..

el Iif es para verificar que no este vacío

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 07/03/2007, 08:23
Avatar de Morito  
Fecha de Ingreso: mayo-2006
Mensajes: 49
Antigüedad: 17 años, 11 meses
Puntos: 0
Re: Error al convertir el tipo de datos varchar a numeric

Gracias por responder GeoAvila, pero me sigue dando el mismo error.....en fin, nose.............la conversion con decimales no me la hace bien.........con numeros enteros no hay problema........yo creo que el problema es la coma decimal.
  #4 (permalink)  
Antiguo 07/03/2007, 12:39
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Re: Error al convertir el tipo de datos varchar a numeric

Haber si estas soluciones pueden ser:

1: en tu select, si es decimal, tienes que quitarle las apostrofes que tu le colocas:

Código:
"Select Codigo, Establecimientos.Nombre, Fecha, Persona, Concepto, 
Importe, Comentario from Prestamos,Establecimientos where 
Codigo_Estable=Establecimiento and Importe='" & Convert.ToDecimal(Importe.Text) & "' order by Establecimientos.Nombre"
lo que esta en rojo no va.

2: Si estas enviando, por ejemplo texto.txt = "1,23" la coma te va a mandar un error cuando conviertas de string a decimal, realiza esto

Código:
Convert.ToDecimal(Importe.Text.Replace(',','.'))
3: El lugar de pasar tu texto directamente a la consulta, envialo como un parametro, si tu campo es decimal entonces tendrias que hacer algo asi:

Código:
Dim TUconsulta as string = "Select Codigo, Establecimientos.Nombre, Fecha, Persona, Concepto, 
Importe, Comentario from Prestamos,Establecimientos where 
Codigo_Estable=Establecimiento and Importe=@parametro order by Establecimientos.Nombre"

comando.Parameters.Add("@parametro", SqlDbType.Decimal).Value = Convert.ToDecimal(TextBox1.Text.Replace(',', '.'))
 'comando es un SQLCOMMAND
espero que sea alguna de estas soluciones, sino, pues echale ganas
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #5 (permalink)  
Antiguo 09/03/2007, 03:53
Avatar de Morito  
Fecha de Ingreso: mayo-2006
Mensajes: 49
Antigüedad: 17 años, 11 meses
Puntos: 0
Re: Error al convertir el tipo de datos varchar a numeric

gracias por responder erick_arcini, no he podido solucionar nada por ahora

Pero bueno sigo intentandolo...jejeje........

Pregunta: supongo que a la hora de comparar valores con decimales, pillara coma o punto segun la configuración regional que tengas no?

Última edición por Morito; 09/03/2007 a las 04:04
  #6 (permalink)  
Antiguo 17/09/2009, 13:22
 
Fecha de Ingreso: septiembre-2009
Mensajes: 1
Antigüedad: 14 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Re: Error al convertir el tipo de datos varchar a numeric

Cita:
Iniciado por erick_arcini Ver Mensaje
Haber si estas soluciones pueden ser:

1: en tu select, si es decimal, tienes que quitarle las apostrofes que tu le colocas:

Código:
"Select Codigo, Establecimientos.Nombre, Fecha, Persona, Concepto, 
Importe, Comentario from Prestamos,Establecimientos where 
Codigo_Estable=Establecimiento and Importe='" & Convert.ToDecimal(Importe.Text) & "' order by Establecimientos.Nombre"
lo que esta en rojo no va.

2: Si estas enviando, por ejemplo texto.txt = "1,23" la coma te va a mandar un error cuando conviertas de string a decimal, realiza esto

Código:
Convert.ToDecimal(Importe.Text.Replace(',','.'))
3: El lugar de pasar tu texto directamente a la consulta, envialo como un parametro, si tu campo es decimal entonces tendrias que hacer algo asi:

Código:
Dim TUconsulta as string = "Select Codigo, Establecimientos.Nombre, Fecha, Persona, Concepto, 
Importe, Comentario from Prestamos,Establecimientos where 
Codigo_Estable=Establecimiento and Importe=@parametro order by Establecimientos.Nombre"

comando.Parameters.Add("@parametro", SqlDbType.Decimal).Value = Convert.ToDecimal(TextBox1.Text.Replace(',', '.'))
 'comando es un SQLCOMMAND
espero que sea alguna de estas soluciones, sino, pues echale ganas
Muchas gracias, jojo. Al menos a mí sí me sirvió, aunque si llamo a la función Convert.toDecimal me devuelve el número con coma y no punto decimal, la solucion es dejarlo como string Variablenumerica.toString.Replace(",",".")

Como dice otro amigo por aquí, el problema es el formato regional.
Habría que tener presente este dato para poder implementar Servicios más homogéneos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:08.