Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-11-2008
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Inconsistencias al guardar datos con punto decimal

Hola, tengo un problema, mi base de datos esta en mysql, y guardo en la tabla una serie de valores provenientes de edits, 1 combobox, y 2 maskedit, 2 edits contienen valores con punto decimal crrespondientes a precio, el caso es que al hacer la consulta en un dbgrid me mostraba si era entero el puro entero sin .00, si era real me ponia .9 o .11, lo guardo como:

ADOtblProducto.FieldByName('CveProd').AsString:=EditCve.Text;

Todos los campos los tengo como .AsString, se me ocurrio poner .AsCurrency o .AsFloat en los campos q contienen los datos con punto decimal, pero no me funciono, porque los enteros si me los pone bien pero los valores decimales, en vez del valor me pone una serie de numeros que ni al caso, lo volvi a poner como .AsString pero igual, me pone su monton de numeros, pero en la tabla si me los visualiza bien, si los guarda correctamente.. No se cual sea el problema..

Este es mi código:

Código Delphi [-]
procedure TfrmProductoAdd.BitGuardarClick(Sender: TObject);
begin
   ADOtblProducto.Open;
  with ADOtblProducto do
  begin
   ADOtblProducto.Insert;
   ADOtblProducto.FieldByName('CveProd').AsString:=EditCve.Text;
   ADOtblProducto.FieldByName('Descripcion').AsString:=EditDes.Text;
   ADOtblProducto.FieldByName('Presentacion').AsString:=EditPres.Text;
   ADOtblProducto.FieldByName('Clasificacion').AsString:=ComboClas.Text;
   ADOtblProducto.FieldByName('Laboratorio').AsString:=EditLab.Text;
   ADOtblProducto.FieldByName('Existencias').AsString:=EditExis.Text;
   ADOtblProducto.FieldByName('FechaEnt').AsString:=EditFechaEnt.Text;
   ADOtblProducto.FieldByName('FechaCad').AsString:=EditFechaCad.Text;
   ADOtblProducto.FieldByName('PrecioC').AsString:=EditPrecioC.Text;
   ADOtblProducto.FieldByName('PrecioV').AsString:=EditPrecioV.Text;
   ADOtblProducto.Post;
   ADOtblProducto.Refresh;
   ADOtblProducto.Close;
  end;
end;
Responder Con Cita
  #2  
Antiguo 20-11-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
yo te recomendaría que en lugar de usar TEdit o TMaskEdit para valores monetarios, utilizaras un control hecho específicamente para tal caso.

Las Jedi (JVCL) tienen uno muy bueno, llama TjvValidateEdit al cuál solo le estableces dos propiedades y listo. Y este lo podrías utilizar así:

ADOtblProducto.FieldByName('Precio').AsCurrency:= jvValidateEdit.AsCurrency
__________________

Responder Con Cita
  #3  
Antiguo 21-11-2008
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola Lizette,

Yo utilizo SQL SERVER 2005 y defino el campo si va a contener número decimales lo defino de la siguiente manera:

Importe decimal(10,2) = 7 Enteros y 2 decimales

A la hora de grabar en la base de datos es la siguiente:

Código Delphi [-]
ADOtblProductos.FieldByName('Importe').asFloat := StrToFloat(EditCve.Text);
Espero que te sirva

Un saludo.
Responder Con Cita
  #4  
Antiguo 21-11-2008
dbautista dbautista is offline
Registrado
 
Registrado: jun 2006
Posts: 8
Poder: 0
dbautista Va por buen camino
Post Formatear decimales

Tambien puedes hacerlo de esta forma
ADOtblProductos.FieldByName('Importe').asstring :=
Formatcurr('#0.00',StrToFloat(EditCve.Text));indicando el numero de decimales que necesitas, y los componentes JVCL son buenos, lo malo es que si cambias de version de delphi te olbiga a cambiar la version de estos tambien, puedes utilizar TPBNumEdit, estos funcionan hasta el momento en delphi 2007 sin ningun problema.....

Por otro lado, es mejor que trabajes con los componentes amarrados a tu base de datos, para que automaticamente delphi tome el control de los tipos de datos de tu base, asi no tienes que estar preocupandote por esta clase de problemas.........
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
!! Coversion Binario a Decimal y de Decimal codigo ascii BuRtOn Varios 4 14-03-2008 04:13:11
Problemas con el tipo de datos Decimal de MySQL5 dionisiopz MySQL 4 05-12-2006 01:09:26
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
Punto Decimal con RxLib MarioATamborini Varios 6 20-07-2006 10:37:02
El punto decimal de Windows soul6301 Varios 1 19-12-2004 12:54:53


La franja horaria es GMT +2. Ahora son las 11:30:49.


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