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 17-07-2008
sancarlos sancarlos is offline
Miembro
 
Registrado: sep 2007
Ubicación: Cartago , Tres Rios , Costa Rica
Posts: 48
Poder: 0
sancarlos Va por buen camino
Mascara de un dato en un Dbgrid

Tengo un Dbgrid con datos de una tabla , tengo un campo que necesito mascarear, el campo de numero de tarjeta de credito , el campo es de tipo char(18), y necesito que por ejemplo sea asi de 123456789012345678 a 123456########5678 , ahora el problema es que tengo que cargarlo asi en tiempo de ejecucion , ya que no puedo tener cargado el adoquery con los campos en tiempo de dise;o , es con Delphi 2006 y adoquery.

El dbgrid se cargar dinamicamente segun los campos que existan en otra tabla , que contiene los nombre de los campos , de manera que :
Código Delphi [-]
 
adocolumnsin.Close;
adocolumnsin.SQL.Clear;
adocolumnsin.SQL.Add('select * from ts.columnsin where status=1') ;
adocolumnsin.Prepared;
adocolumnsin.Open;
 
 
//fin consulta
params:=''; //Variable global , donde se guardan los nombre de los campos a consultar
cont:=adocolumnsin.RecordCount; ///numero de registros que devuelve la tabla
i:=0;
 ///Ciclo que nos permite pasar los nombre a la variable Global.
  adocolumnsin.First;
  while not (adocolumnsin.Eof)and (i <> cont) do begin
        i:=i+1 ;
        if i=cont  then begin
        params:=params+adocolumnsincolumnname.AsString;
        end else begin
        params:=params+adocolumnsincolumnname.AsString+',';
       end;
       adocolumnsin.Next;
   end;
 
 
aqui el select
 
 
adohistory.Close;
adohistory.SQL.Clear;
adohistory.Sql.Add('select '+params+' from ts.history where convert(varchar(10),datestamp,110) ='+chr(39)+ formatdatemenu +chr(39)+'');
adohistory.Sql.Add('order by datestamp desc') ;
adohistory.Prepared;
adohistory.Open;
Los ves en la Variable params viene los campos a cargar en db grid , si en el caso de que venga el campo numerodetarjeta este debe de venir mascareado como antes mencione.


Muchas Gracias


Todo lo anterior funciona bien,.

Última edición por marcoszorrilla fecha: 17-07-2008 a las 17:16:12.
Responder Con Cita
  #2  
Antiguo 17-07-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Wink

Hola sancarlos

mira, lo que yo reaizaría es trabajar sobre la columna del DBGrid, y realizar una cambio de formato de la sgte forma

usas el evento OnDrawColumnCell

y pones un codigo como este...(suponiendo que el dato esta en la columna 3


Código Delphi [-]
if (Column.Index = 3) then begin
      Str := Column.Field.AsString; // pasas el contenido de la columna a la variable
      Str := Concat(Copy(Column.Field.AsString,1,6)+'########'+Copy(Column.Field.AsString,15,4))
      DbGrid2.Canvas.FillRect(Rect);
      DbGrid2.Canvas.TextOut(Rect.Left, Rect.Top, Str);
    end;

No lo he probado, es lo que se me ocurre hacer, intentalo y si tiene algun error, muestralo

Salu2
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 21-07-2008
Avatar de Cannabis
Cannabis Cannabis is offline
Miembro
 
Registrado: jun 2007
Posts: 170
Poder: 17
Cannabis Va por buen camino
Código Delphi [-]
adohistory.Close;
adohistory.SQL.Clear;
adohistory.Sql.Add('select '+params+' from ts.history where convert(varchar(10),datestamp,110) ='+chr(39)+ formatdatemenu +chr(39)+'');
adohistory.Sql.Add('order by datestamp desc') ;
adohistory.Prepared;
adohistory.Open;
(adohistory.FieldByName('NombreDelCampo') AS TStringField).DisplayFormat:= '123456########5678';

Tal vez eso te ayude.

En Firebird debe realizarse cada vez que se abre el query, no sé cómo sea en ADO.


Salud.
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
Capturar un dato de un dbgrid SaLvaGe Conexión con bases de datos 5 15-09-2005 19:26:17
Mascara en DBGRID jorge_mosquera OOP 3 27-04-2005 21:44:31
extraer un dato de un dbgrid detybel Conexión con bases de datos 4 26-03-2005 06:01:45
COlocar una Mascara en una columna de un dbgrid lionsoft Impresión 1 30-11-2004 14:57:30
COlocar una Mascara en una columna de un dbgrid RONPABLO Varios 2 27-11-2004 01:32:59


La franja horaria es GMT +2. Ahora son las 17:31:35.


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