Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2011
noejfh noejfh is offline
Miembro
NULL
 
Registrado: ene 2011
Ubicación: Costa Rica
Posts: 11
Poder: 0
noejfh Va por buen camino
Problema con el componente TDBEdit

Saludos a los que vean este nuevo hilo y agradezco quien pueda enviarme solución al problema que poseo con el uso correcto del componente DBEdit:

Estoy realizando un pequeño formulario para calcular precios de venta a partir de un precio de compra (costo), utilizo FDB (Firebird 2.5) un componente DBExpress llamado: BaseDatos para la conexión y consulta un TDBQuery: qArticulo con su respectivo proveedor llamado dspArticulos y ClientDataSet llamado cdsArticulos:

el asunto es que el TDBEdit me envia un mensaje de error ya que el campo de unos de los dbedit esta vacio y la unica manera es ingresar un valor por defecto y no he logrado ponerlo con la propiedad DisplayFormat al cargar el formulario ya con esos campos llenos 0.00.

Alguien me puede dar una pequeña idea de lo que pudiera realizar?


Saludos

Nota: utilizo Delphi XE

Noé
Responder Con Cita
  #2  
Antiguo 22-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
y que mensaje de error te sale?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 22-07-2011
noejfh noejfh is offline
Miembro
NULL
 
Registrado: ene 2011
Ubicación: Costa Rica
Posts: 11
Poder: 0
noejfh Va por buen camino
El mensaje is not a valid Floating point Value.
Esto es seguro porque en el evento on change del DbeEdit, llamo un procedimiento declarado en Delphi.
Y en el procedimiento se utiliza el valor que tienen los Dbedits, Ya convertidos a Float.
La cuestion es que ocupo que los dbedits a la hora que se muestre el formulario, Muestren un Valor de 0. :S Nose si eso se pueda hacer...
Porque usando Edits si me funcionan los cálculos, Mostrando que el valor por default sea 0...
Muchas Gracias...
Responder Con Cita
  #4  
Antiguo 22-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por noejfh Ver Mensaje
La cuestion es que ocupo que los dbedits a la hora que se muestre el formulario, Muestren un Valor de 0. :S Nose si eso se pueda hacer...
disculpa pero esto no lo entendi
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 22-07-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por noejfh Ver Mensaje
El mensaje is not a valid Floating point Value.
Esto es seguro porque en el evento on change del DbeEdit, llamo un procedimiento declarado en Delphi.
Y en el procedimiento se utiliza el valor que tienen los Dbedits, Ya convertidos a Float.
La cuestion es que ocupo que los dbedits a la hora que se muestre el formulario, Muestren un Valor de 0. :S Nose si eso se pueda hacer...
Porque usando Edits si me funcionan los cálculos, Mostrando que el valor por default sea 0...
Muchas Gracias...
Hola.

Sería muchisimo mas sencillo poder ayudarte si agregas la parte del código que te dá problemas y el procedimiento implicado.
( Cuando pongas tu código, recordá encerrarlo entre las etiquetas [delphi] [/delphi] )

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 22-07-2011
noejfh noejfh is offline
Miembro
NULL
 
Registrado: ene 2011
Ubicación: Costa Rica
Posts: 11
Poder: 0
noejfh Va por buen camino
Formulo nuevamente la pregunta:

Viste el mensaje de error, creo que se debe a que tengo cuatro dbEdit:

dbEditCosto dbEditGasto dbEditUtilidad dbEditVarios

Sin Embargo realize un procedimiento el cual me realiza calculos de incremento
de precio a partir del dbEditCosto sin embargo en el evento OnChange de los dbEdit me manda el mensaje porque aparece un valor sin calcular.

Trato de ver la forma de poner por defecto un valor a los dbEdit pero no se si se podra para que mi procedimiento funcione correctamente utilizando el componente TDBEdit.

Gracias por tu paciencia.
Responder Con Cita
  #7  
Antiguo 22-07-2011
noejfh noejfh is offline
Miembro
NULL
 
Registrado: ene 2011
Ubicación: Costa Rica
Posts: 11
Poder: 0
noejfh Va por buen camino
Esto es mi codigo:

El procedimiento no me da problemas sin embargo si tienen alguna sugerencia les agradeceria mucho...
Código Delphi [-]
  Gasto := StrToFloat(frmArticulos.dbeGastos.Text);
  Utilidad := StrToFloat(frmArticulos.dbeUtilidad.Text);
  Varios := StrToFloat(frmArticulos.dbeVarios.Text);


Saludos

Noé

Última edición por noejfh fecha: 22-07-2011 a las 19:53:25. Razón: ETIQUETAS [DELPHI] [/DELHI]
Responder Con Cita
  #8  
Antiguo 22-07-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola noejfh.

Me inclinaría a pensar que el problema se produce por el formato. Por ejemplo si dbeGastos.Text tiene el valor '$ 1.890,38' e intentas convertirlo mediante la función StrToFloat te vá a arrojar el error que mencionas.
Ese formato es a sólo fin de ser mostrado, internamente Delphi no lo reconoce como un número decimal válido.

Una solución sería utilizar el valor del campo asociado al DBEdit:
Código Delphi [-]
  Gastos:=StrToFloat(frmArticulos.tuDataSet.FieldByName('tuCampo').AsString);
  ...

O simplemente:
Código Delphi [-]
  Gastos:= frmArticulos.tuDataSet.FieldByName('tuCampo').AsFloat; // o AsCurrency
  ...

O la misma cosa escrita de otro modo:
Código Delphi [-]
   with frmArticulos.dbeGastos.DataSource.tuDataSet do
     Gastos:= FieldByName('tuCampo').AsFloat;
  ...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 22-07-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El DBedit muestra lo que hay en una tabla.
Si se abre la tabla se muestra lo que esta en ella.
Si se hace un insert queda en blanco.
Si se quiere que tenga un valor al iniciar el insert simplemente se una la propiedad edit del dbdeit.
Si se quiere se pueden recorrer todos y dejarlos en cero.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 23-07-2011
noejfh noejfh is offline
Miembro
NULL
 
Registrado: ene 2011
Ubicación: Costa Rica
Posts: 11
Poder: 0
noejfh Va por buen camino
Muchas Gracias por la ayuda, me ha sido muy valiosa.
Pero sigo con el problema, es que otro dbEdit tiene un evento OnChange, donde se le dice que realize cierto calculos con los otros dbeedit. Con la propiedad .tex;
Segun yo para que aparesca un cero en los dbedits que toma el valor ago esto.

Código Delphi [-]
dbeGastos.Text:= '0.00';
tambien asi y nada
Código Delphi [-]
dbeGastos.EditText:= '0.00';
para que no me de el error de tipo vacio.
Porque en realidad empieza a hacer el calculo sin tener valor, he ahi el problema..
Que Cuando le ago la asignacion realiza el proceso on change que se llama en el otro dbedit :S, ya que los calculos deben de ser consecutivos y en tipo real digamos, que si cambimos un valor los otros tienen que cambiar tambien.
Muchas Gracias Por la Ayuda, Espero haberme podido explicar un poco.
Responder Con Cita
  #11  
Antiguo 23-07-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La verdad es que yo de plano eliminaría los DBEdits y usaría Edits normales.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #12  
Antiguo 28-07-2011
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 22
Paoti Va por buen camino
Hola.

Prueba a hacer esto. (Que es una forma elegante de hacerlo)

1. En el objeto TQuery. en este evento AfterInsert inicializa el valor de la sigguiente forma.

Código Delphi [-]
procedure TForm1.qry1AfterInsert(DataSet: TDataSet);
begin
    // CampoCantidad  es el nombre del campo que quiere inicializar
    qry1.FieldByName('CampoCantidad').AsCurrency := 0;
end;


ahora, lo que veo que estas haciendo es calcular información,


mirate en la ayuda del foro, referente a campos calculados,

consejo: No programes a eventos de los dbedits, trabaja mejor con los eventos del TQuery.

Consejo2. Para evitar conflictos de captura de información en cajas de texto donde quieres números, usa componentes ya especializados que te permiten introducir solo numeros. Tip revisa y documentate sobre estos componentes. http://jvcl.delphi-jedi.org/ hay muchos para evitar el trabajar en validaciones.


Saludos.
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
duda con el uso de los TDBEdit ercrizeporta Conexión con bases de datos 15 09-07-2005 17:54:30
Componente TDBEdit pablo Varios 2 21-12-2004 11:40:56
problema con tdbedit davidgaldo Conexión con bases de datos 3 14-04-2004 15:42:46
problema con tdbedit marcelofabiani OOP 2 21-05-2003 22:45:23
TDBEdit Un abrazo OOP 4 20-05-2003 15:26:10


La franja horaria es GMT +2. Ahora son las 16:14:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi