Autor Tema: Por que me da este maldito error ADO  (Leído 5493 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Por que me da este maldito error ADO
« en: Noviembre 23, 2012, 02:22:59 pm »
HOLA AMIGOS estoy utiliznado este codigo para escribir en la base de datos y cuando intento guardar me tira el error


Código: [Seleccionar]
    dim P01, P02

    Call ConectarADO
   
   

    P01 = "'" & txNombre.Text & "'"
    P02 =  FormatNumber ( txValor.Text ,  2)   

[color=blue][b]EDITADO LUEGO:  [/color][/b]Hasta la medula que es un error de signos pero no cual es la mejor forma de resolver por que si a 2000,09  lo transformo en 2000.09 ME LO ACEPTA Y GUARDA OK!!!

 
   'tbn probe asi P02 =  Format(txValor.Text, "###0.00") y es lo mismo
   
    ComandoSQL = "UPDATE t_Empleados SET f_nombre=" & P01 & "," & "f_monto=" & P02 & " WHERE ID= " & ID
   
    'EN ESTA LINEA SE PRODUCE EL ERROR 13 NO COINCIDEN LOS TIPOS
    ADOConexion.Execute ComandoSQL

   ACLARO QUE EN LA BASE DE DATOS EL CAMPO f_Monto es Numerico-Simple de 2 diigitos!
   y si txValor.Text= 2000,00  no me da el error y si tiene decimales  txValor.Text = 1988,84  ahi Sí!!!! me tira el error



EDIT SI txValor.Text = 1988,84 LE CAMBIO EL SIGNO txValor.Text = 1988.84 ME LO TOMA OK!!! PERO EN EL SISTEMA QUE ESTOY TRABAJANDO EL PUNTO ES SEP DE MILES NO DE DECIMALES..!
« última modificación: Noviembre 23, 2012, 02:37:58 pm por Bazooka »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Por que me da este maldito error ADO
« Respuesta #1 en: Noviembre 23, 2012, 02:43:09 pm »
Hablas de Access? Creo que si.

Algunos tips

Ten cuidado con la configuración regional. Si usas el punto como separador decimal cuando envies un numero con coma la coma no sera considerada y eso puede traer problemas en algun momento. Ahora si la configuracion regional te admite la coma como separador decimal entonces el punto te generara error. Checa eso

P01 y P02 no estan declaradas debidamente, considero que no basta con dim P01, P02. Deberías indicar el tipo de dato.

No se para que rubro estas realizando este trabajo, pero sinceramente te recomendaría que no formatees en BD, menos aun los decimales porque redondear a 2 decimales es alterar, sin embargo puede que la excepcio a esta regla es el rubro para donde desarrolles. Los formateos de N decimales deben estar en la capa de presentación y no en la BD.
 
EDITO: Jeje editaste cuando escribia, volvere a checar tu post.


« última modificación: Noviembre 23, 2012, 03:18:04 pm por YAcosta »
Me encuentras en YAcosta.com

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Por que me da este maldito error ADO
« Respuesta #2 en: Noviembre 23, 2012, 02:47:35 pm »
Hola Ivancho Si es acces!!

Y si están declaradas

Dim P01, P02   'asi  !!

Además el panel de control esta tanto en modenda como en numeros Separador de miles . (punto)  y de Decimales , (coma)

Alguna forma de cambie solo de acuerdo al panel de control ya tengo armado todo !!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Por que me da este maldito error ADO
« Respuesta #3 en: Noviembre 23, 2012, 03:05:51 pm »
Doc, cuando declaras:
Dim P01, P02
y nada mas

Es como si lo estuvieras declarando asi:
Dim P01 As Variant
Dim P02 As Variant

No son, integer, ni double, ni string.

Yo preferiria especificar el tipo de dato cuando declaro y evitarme algun imprevisto por no tener control sobre los tipos de datos declarados.

Por lo otro supongo que con Replace del caracter (. por ,) podría funcionar, ahorita mismo no tengo el ejemplo a la mano pq te escribo desde el fono, pero creo que por alli podria ir tu solucion.

Saludos
Me encuentras en YAcosta.com

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Por que me da este maldito error ADO
« Respuesta #4 en: Noviembre 23, 2012, 04:42:36 pm »
Haber si anda el amigo Enter por ahi por que este code es parte de uno que creo él.

Gracias Iban
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Por que me da este maldito error ADO
« Respuesta #5 en: Noviembre 23, 2012, 04:57:08 pm »
me dio dolor de cabeza ver algo como Dim P01, P02, siempre hay que declarar el tipo de dato, en tu caso tendrias que declarar uno como string y el otro double, hay que ver en la base de datos tambien como esta definido esos campos.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Por que me da este maldito error ADO
« Respuesta #6 en: Noviembre 23, 2012, 05:14:17 pm »
Les agradezco que lo aclaren y conozco bien los riesgos de no declarar los tipos correctos. En este caso en particular se trataba de un code de otra persona y asi estaba y asi lo deje.
De igua forma  el que esta dando el error lo cambie  a Dim P02 as Single  y todo sigue igual acabo de utilizar la siguiente linea P02 = Replace(P02, ",", ".") como me dijo el amigo Ivan y Funciono!!

Y YA ACLARE SEBA QUE EN LA BASE ESTA COMO NUMERO SIMPLE DE 2 DECIMALES EL CAMPO EN CUESTION!!! ES EL P... ADO QUE ESTA JODIENDO! QUE NO SE POR QUE CARAJO NO TOMA CORRECTAMENTE (ESAS COSITAS DE MICROSOFT)
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Por que me da este maldito error ADO
« Respuesta #7 en: Noviembre 23, 2012, 05:19:32 pm »
En esos casos yo hago lo siguiente (no es lo más ortodoxo, pero me funciona):
Código: [Seleccionar]
Public Function Formato_numeros(ByVal Valor as Currency)
dim NuevoValor as Double
NuevoValor = Replace(Valor, ",", "!")
NuevoValor = Replace(NuevoValor, ".", "")
Formato_numeros = Replace(NuevoValor, "!", ".")
Y la devolución de esa función es lo que guardo en la base de datos (en un campo DECIMAL).

EDITO: Perdón, no había visto el último comentario.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Por que me da este maldito error ADO
« Respuesta #8 en: Noviembre 23, 2012, 06:09:49 pm »
En esos casos yo hago lo siguiente (no es lo más ortodoxo, pero me funciona):
Código: [Seleccionar]
Public Function Formato_numeros(ByVal Valor as Currency)
dim NuevoValor as Double
NuevoValor = Replace(Valor, ",", "!")
NuevoValor = Replace(NuevoValor, ".", "")
Formato_numeros = Replace(NuevoValor, "!", ".")
Y la devolución de esa función es lo que guardo en la base de datos (en un campo DECIMAL).

EDITO: Perdón, no había visto el último comentario.

Gracias Geronimo!!

Para que serían los signos "!" ?
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Por que me da este maldito error ADO
« Respuesta #9 en: Noviembre 23, 2012, 09:29:54 pm »
jajaja Ahora que lo veo, es ridículo. En realidad debiera simplemente reemplazar el punto por nada y luego la coma por punto.
Código: [Seleccionar]
Public Function Formato_numeros(ByVal Valor as Currency)
dim NuevoValor as Double
NuevoValor = Replace(Valor, ".", "")
Formato_numeros = Replace(NuevoValor, ",", ".")
¡Gracias por hacerme ver este sinsentido!