Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #14  
Antiguo 18-04-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
bueno, si el uso del nicegrid es solo para mostrar los datos temporalmente, sin utilizar nada especial de este componente. Creo que sería mejor una tabla en memoria utilizando el TjvMemorydata que viene el la pestaña JV Data Controls (o data access :P).

En esta tabla tu defines los campos que quieres, que según veo, son 4, un entero, un string y dos tipo moneda.

Esta tabla en memoria funciona exactamente igual que si tuvieras un TTable enlazado a tu base de datos, pero obviamente al ser en memoria, no afecta en nada a tu base de datos.

Lo mejor de todo, en este caso, es que no tendrías por que preocuparte ni por formatos ni por conversiones ni por regionalismos, ya que todo lo manejarías directo al tipo de datos que tu defines.

Por ejemplo, para agregar un elemento ("item" en inglés) o artículo, harías algo así:

Código Delphi [-]
with Datamodule.TablaMemoria do begin
 Append;
 FieldByName('CTD').AsInteger := CTD.AsInteger;
 FieldByname('Descripcion').AsString := edtDescripcion.Text;
 FieldByName('ValorUnit').AsCurrency := edtValorUnitario.AsCurrency; 
 FieldByName('ValorTotal').AsCurrency := edtValorTotal.AsCurrency;
 Post;
end; //with

Los datos tipo moneda, te los va amostrar con formato de moneda, tal como este configurada la región en la computadora (con "," como separador de miles o como separador de decimales, no importa, tu programa lo tomará como este configurado el sistema operativo).

Para guardarlo en tu base de datos, podrías hacer algo así;

Código Delphi [-]
with UnDataModule.UnQuery do begin
 If active then close;
 SQL.Clear;
 SQL.Add('Insert into UnaTabla(CTD, Descripcion, ValorUnit, ValorTotal)');
 SQL.Add('Values(:vCTD, :vDescripcion, :vValorUnit, :vValorTotal)');
 Parameters.ParamByname('vCTD').AsInteger := UnaTablaEnMemoria.FieldByName('CTD').AsInteger;
 Parameters.ParamByname('vDescripcion').AsString := UnaTablaEnMemoria.FieldByName('Descripcion').AsString;
 Parameters.ParamByName('vValorUnit').AsCurrency := UnaTablaEnMemoria.FieldByName('ValorUnit').AsCurrency;
 Parameters.ParamByName('vValorTotal').AsCurrency := UnaTablaEnMemoria.FieldByName('ValorTotal').AsCurrency;

 ExecSQL;
end; //with

Si te fijas, en ningún momento hago conversiones de cadena a moneda, ni tampoco me preocupo por formatos ya que los toma directo del sistema operativo.
Y tienes todos los eventos necesarios para hacer cambios. AfterInsert, beforeinsert, beforedelete, afterdelete, beforepost, afterpost, etc, etc, etc, etc.


Edito: -----
Incluso, podrías dejar solo el Grid enlazado a la tabla en memoria y hacer los camios directamente sobre el mismo grid, sin necesidad de que pongas los valores en validateedits aparte y luego meterlos en el grid. Puedes hacer todas las validaciones que requieras directo en la tabla en memoria. Incluso puedes enlazar el campo del artículo, a una tabla de artículos en tu base de datos si defines el campo como ftDataset. En fin, que las posibilidades son mucho mucho mayores.



Y en caso de que se arrepientan, lo único que tendrías que hacer sería:

Código Delphi [-]
 UnaTablaEnMemoria.EmptyTable;
__________________


Última edición por ContraVeneno fecha: 18-04-2008 a las 16:15:50.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
como comparar cada linea de un componente Memo1 con un componente ListBox1 soma25 C++ Builder 1 31-10-2007 10:02:22
Componente chalys Varios 1 20-10-2005 08:11:47
Componente de red lucasarts_18 OOP 2 02-08-2005 16:02:20
Apuntar una propiedad de un componente a otra de otro componente Majo Varios 10 24-03-2004 19:46:39
componente bd 32 rrojano Conexión con bases de datos 0 20-06-2003 18:24:08


La franja horaria es GMT +2. Ahora son las 07:56:36.


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