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

Punto Y Coma

Estas en el tema de Punto Y Coma en el foro de Visual Basic clásico en Foros del Web. Hola amigos Verán. Este es un problema que parece simple, pero que ya me tiene de los nervios. Tengo un textbox donde voy a introducir ...
  #1 (permalink)  
Antiguo 27/06/2005, 08:15
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Punto Y Coma

Hola amigos

Verán. Este es un problema que parece simple, pero que ya me tiene de los nervios.

Tengo un textbox donde voy a introducir un importe. En la propiedad DataFormat del textbox intento definirlo a currency, pero SIN el símbolo del euro. Al quitarle el símbolo del euro y aplicar, en las propiedades del textbox no me sale el DataFormat como currency, sino como número.

Vale.

El problema es que me interesa que si el usuario escribe un punto "." se interprete como coma "," y he escrito en el código lo siguiente, que es ampliamente conocido y está en las FAQs

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
End Sub

El asunto es que si pongo, por ejemplo, 25.84, no me lo convierte a 25,84 sino a 2.584,00 y, si pongo, 25,84, lo deja así.

Alguna idea... porfa?

Gracias
  #2 (permalink)  
Antiguo 27/06/2005, 08:18
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación

Cita:
Iniciado por jorevale
Hola amigos

Verán. Este es un problema que parece simple, pero que ya me tiene de los nervios.

Tengo un textbox donde voy a introducir un importe. En la propiedad DataFormat del textbox intento definirlo a currency, pero SIN el símbolo del euro. Al quitarle el símbolo del euro y aplicar, en las propiedades del textbox no me sale el DataFormat como currency, sino como número.

Vale.

El problema es que me interesa que si el usuario escribe un punto "." se interprete como coma "," y he escrito en el código lo siguiente, que es ampliamente conocido y está en las FAQs

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
End Sub

El asunto es que si pongo, por ejemplo, 25.84, no me lo convierte a 25,84 sino a 2.584,00 y, si pongo, 25,84, lo deja así.

Alguna idea... porfa?

Gracias
Mejor usa el modo texto y después cuando quieres usarlo lo conviertes a Currency
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 27/06/2005, 09:45
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Si, eso estoy haciendo

Tengo un procedimiento que es el que reemplaza en la base de datos a partir de los textbox, donde:

datprimaryRS.recordset!Campo1 = ccur(textbox.text)

y lo que sucede es lo siguiente:

- Si justo antes del reemplazo textbox.text="10,40" me reemplaza el campo en la base por el valor 10,40 y lo muestra en pantalla igual, es decir, bien.

- Si justo antes del reemplazo textbox.text="10.40" me reemplaza el campo en la base por el valor 1040,00 y lo muestra en pantalla igual, es decir, mal.

Grrr
  #4 (permalink)  
Antiguo 27/06/2005, 10:13
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Cita:
Iniciado por jorevale
Si, eso estoy haciendo

Tengo un procedimiento que es el que reemplaza en la base de datos a partir de los textbox, donde:

datprimaryRS.recordset!Campo1 = ccur(textbox.text)

y lo que sucede es lo siguiente:

- Si justo antes del reemplazo textbox.text="10,40" me reemplaza el campo en la base por el valor 10,40 y lo muestra en pantalla igual, es decir, bien.

- Si justo antes del reemplazo textbox.text="10.40" me reemplaza el campo en la base por el valor 1040,00 y lo muestra en pantalla igual, es decir, mal.

Grrr
Bueno, pues si cuando se escriba "." lo cambias a "," ¿Qué problema habrá?
Además, el procedimiento que mencionaste está mal , el de reemplzar Asc(".") con Asc(",")
Te cuento por qué, ¿qué pasará si el usuario ingresa al menú contextual del TextBox y hace click en pegar si en el portapapeles está "10.40"?, el evento KeyPress no se producirá y cuando lo envies a la BD se enviará erróneamente los datos.
Lo que te sugiero es que al pasar los datos a la BD busques todos los "." y los reemplaces con "," como en este procedimiento:
Código:
Function Reemplazar(ByVal Texto As String, ByVal Caracter1 As String, ByVal Caracter2 As String) As String
Dim UlParada As Long
Dim Buscar As Long
UlParada = 1
Do
    Buscar = InStr(UlParada, Texto, Caracter1)
    If Buscar < 1 Then Exit Do
    Mid(Texto, Buscar, 1) = Caracter2
    UlParada = Buscar + 1
Loop
Reemplazar = Texto
End Function
Y cuando envíes los datos a la BD lo conviertes así:
Código:
Text1.Text = Reemplazar(Text1, ".", ",")
Y te reemplazará todos los caracteres
ok.....
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 27/06/2005, 10:36
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta

¿Te funcionó?
Porque me dijiste que quieres que tu programa considere el "." como ","
Entonces no hay forma de introducir en el TextBox el valor "10.40" pues se convertirá en "10,40" al pasar por la función que te di.... entonces dime si te funcionó, y si no es el caso qué es lo que no funciona
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 27/06/2005, 10:58
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Si, perdona, es que estaba en otro lado

He probado el código que me diste y... bueno, empiezo por el principio

Yo tenía un par de errores en access que debía haber revisado antes de haber posteado aqui, pero ya sabes... las prisas.

Solucioné eso y seguí los siguientes pasos
1)captura del texto
2)llevar a variable
3)reemplazar "." por ","... instr
4)reemplazar campo y texto con variable

Y funciona... (perdona, no debí haber molestado) Gracias de todos modos!!!

Es que esta aplicación está creciendo demasiado ya para mi. Y me pierdo con frecuencia en el código.

A propósito, aprovecho para hacer otra pregunta. Yo soy novato en esto, David, ¿no hay forma de que los procedimientos en VB6 me aparezcan ordenados digamos... alfabéticamente? Es que en la medida que voy escribiendo nuevos procedimientos se colocan al final, y ahí se quedan. Luego para encontrar algo en un texto de más de veinte páginas ya te imaginas...

No sé si VB6 tendrá por algún lado la configuración de que el editor muestre los procedimientos ordenados...

Gracias

Hay alguna forma de ordenar
  #7 (permalink)  
Antiguo 27/06/2005, 15:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo

Cita:
Iniciado por jorevale
Si, perdona, es que estaba en otro lado

He probado el código que me diste y... bueno, empiezo por el principio

Yo tenía un par de errores en access que debía haber revisado antes de haber posteado aqui, pero ya sabes... las prisas.

Solucioné eso y seguí los siguientes pasos
1)captura del texto
2)llevar a variable
3)reemplazar "." por ","... instr
4)reemplazar campo y texto con variable

Y funciona... (perdona, no debí haber molestado) Gracias de todos modos!!!

Es que esta aplicación está creciendo demasiado ya para mi. Y me pierdo con frecuencia en el código.

A propósito, aprovecho para hacer otra pregunta. Yo soy novato en esto, David, ¿no hay forma de que los procedimientos en VB6 me aparezcan ordenados digamos... alfabéticamente? Es que en la medida que voy escribiendo nuevos procedimientos se colocan al final, y ahí se quedan. Luego para encontrar algo en un texto de más de veinte páginas ya te imaginas...

No sé si VB6 tendrá por algún lado la configuración de que el editor muestre los procedimientos ordenados...

Gracias

Hay alguna forma de ordenar
No es necesario que te aparezcan ordenados... arriba, en el editor de texto, hay dos listas desplegables, en la primera selecciona "(General)" y luego en la segunda te aparecerán los procedimientos ordenados alfabéticamente, haz click en una y te irá en el punto de declaración de esa función...

ok.....
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 28/06/2005, 01:27
jorevale
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Vale

Ok, no me había percatado de eso y te lo agradezco, sin embargo, los procedimientos que responden a eventos de los controles, en el código están por el orden en que fueron creados.

Supongamos que tenemos un comando cAcept y otro cCancel. Si creamos antes cCancel_Click() que cAcept_Click(), aparecerá así en el editor de código de VB6.

Aunque es posible llegar directamente a cAcept_Click() si seleccionamos cAcept en el menú de la izquierda; pero es que cuando estamos revisando el código de arriba a abajo... resulta algo incómodo... creo.

Bye
  #9 (permalink)  
Antiguo 28/06/2005, 13:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación

Cita:
Iniciado por jorevale
Ok, no me había percatado de eso y te lo agradezco, sin embargo, los procedimientos que responden a eventos de los controles, en el código están por el orden en que fueron creados.

Supongamos que tenemos un comando cAcept y otro cCancel. Si creamos antes cCancel_Click() que cAcept_Click(), aparecerá así en el editor de código de VB6.

Aunque es posible llegar directamente a cAcept_Click() si seleccionamos cAcept en el menú de la izquierda; pero es que cuando estamos revisando el código de arriba a abajo... resulta algo incómodo... creo.

Bye
Bueno, eso ya es algo personal.... pero la forma más fácil de llegar a procedimientos es mediante las listas.....
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 23:06.