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;
params:=''; cont:=adocolumnsin.RecordCount; i:=0;
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,.