Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Rebeldia decimal en VB6

Estas en el tema de Rebeldia decimal en VB6 en el foro de Visual Basic clásico en Foros del Web. Bueno, antes que nada gracias por tomarse las molestas de leer y/o contestar a la cuestion esta que me esta volviendo loco jaja Tengo un ...
  #1 (permalink)  
Antiguo 12/12/2012, 17:38
Avatar de MWAM  
Fecha de Ingreso: diciembre-2012
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Rebeldia decimal en VB6

Bueno, antes que nada gracias por tomarse las molestas de leer y/o contestar a la cuestion esta que me esta volviendo loco jaja

Tengo un formulario donde deben ingresarse varios importes, los cuales van a parar a una tabla utilizando SQL (y SQLyog como herramienta de bases de datos)

El primer problemilla que tengo es el siguiente: cuando se ingresan valores con comas, el sql me toma dicho valor como si fueran dos campos diferentes.

Código:
sql = "{call alta_llamada(" & dtcreserva & ", " & txtimplla & ", " & txtcantmin & ", " & llamada & " ) }"
Separa dicho campo en, por ej, "1" y "25". El error es algo como "se esperaban 4 resultados, se obtuvieron 5"

Bien, ese problema lo he "parcheado" reemplazando la coma con un punto, utilizando la siguiente sentencia (todo sacado de Internet, que por suerte la mayoria de las veces lo salva a uno)

Código:
txtimplla = Replace(txtimplla, ",", ".")
Y de ahi saltan los otros dos problemas:

- Resulta que dicho importe que se ingresa debe ir a una variable que luego sera usado en otro formulario (vendria a ser el importe total de todo el proceso). Bueno, dicha variable pasa por alto el punto una vez que se certifica en el otro formulario (se convierte en un numero entero, digamos). La misma esta como variable global.
- Y la otra, tal vez no tan relacionado con este, se que los importes por lo general son redondeados una vez que son almacenados en la base. No se si la culpa sera del visual o del administrador de base de datos, ¿pero habria alguna forma de evitar esto?

Todos los importes los he estado manejando con Double. Tambien he probado con re-re afirmar que estos en el visual son de ese tipo, auqneu no se si lo correcto es hacerlo con Cdbl() (creo q no es el correcto). Y para finalizar, he cambiado en la configuracion del sistema el simbolo que separa los miles y los decimales como "salida rapida". La cuestion es que saltan errores por otros valores ya predefinidos de la manera antigua.

Espero que resulte clara la explicacion (o demasiada jaja)

Saludos y nuevamente gracias!
  #2 (permalink)  
Antiguo 13/12/2012, 19:27
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 9 meses
Puntos: 17
Respuesta: Rebeldia decimal en VB6

sql = "{call alta_llamada(" & dtcreserva & ", " & replace(txtimplla,",",".") & ", " & txtcantmin & ", " & llamada & " ) }"

asi ejecutas tu sql con punto,pero txtimplla sigue con su coma
  #3 (permalink)  
Antiguo 14/12/2012, 07:02
Avatar de MWAM  
Fecha de Ingreso: diciembre-2012
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Respuesta: Rebeldia decimal en VB6

Genial, muchas gracias, ahora ya lo toma perfectamente
Una ultima pregunta: ¿como se podria hacer para forzar a que se ingrese el valor solamente con coma? (que si se inserta en el textbox con punto lo rechaze) . ¿Puede ser revisando el numero antes del ingreso, o bien estableciendo la estructura del textbox previamente para ya quede con la coma en cada ingreso?
(es lo que se me ocurre jajaja)

Saludos!
  #4 (permalink)  
Antiguo 14/12/2012, 14:51
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 9 meses
Puntos: 17
Respuesta: Rebeldia decimal en VB6

en el lostfocus del cuadro de textto coloca el replace (tutxt,",",".") o como lo quieras

Etiquetas: decimal, double, sql, vb6
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 01:07.