Ver Mensaje Individual
  #11  
Antiguo 04-10-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Reputación: 17
rgstuamigo Va por buen camino
Thumbs up

Bueno ,viendo el problema de Wbarrantes veo que la cosa se ha complicado demasiado de lo que parece. Si lo que se desea es encriptar el contenido de una columna en un DBGrid, pues yo veo dos alternativas:
1ra.- Hacerlo directamente en el SERVER
Tener una funcion o hacer uso de una funcion encriptadora directamente en la consulta SQL en el server es decir mi consulta SQL podría ser así:
Código SQL [-]
Select Nombre,Apellido1,Apellido2,Encryptar(CampoX) from MiTabla;
Con eso me evito la tarea de hacerlo desde Delphi.
2da.- Haciendolo desde Delphi
Desde Delphi lo que se podría hacer es utilizar el evento OnGetText que todo Campo Persistente tiene y poner un código sencillo como éste:
Código Delphi [-]
procedure TForm1.ZTable1CampoXGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  Text:=Encryptar(Text);{ Nótese como éste evento posee como parámetro 
la variable Text que nos permite cambiar el texto que aparecerá en el campo o columna  }
end;
Desde luego para hacer uso del evento OnGetText lo primero que tendriamos que hacer es agregar nuestro campo en cuestion(CampoX) como campo persistente en el Dataset(Query o Table) que trae los datos de la base de dato..
Ésta solucion evitará estar modificando los datos en la base de datos, ya que como te han mencionado anteriormente si pones al Dataset en estado de Edicion (Data.Edit; ) se corre el riesgo de modificar los datos en la base de dato, y lo que yo veo es que solo se necesita mostrar los datos encriptado , pero que en la base de datos queden intactos , es decir que no se modifiquen..
Espero que te sea de ayuda.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 04-10-2010 a las 22:07:16.
Responder Con Cita