Ir al contenido


Foto

[RESUELTO] Integrar una función en un SELECT


  • Por favor identifícate para responder
7 respuestas en este tema

#1 cannabis

cannabis

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 257 mensajes
  • LocationMéxico

Escrito 13 noviembre 2010 - 05:19

Estoy utilizando la función creado por el buen amigo enecumene: aquí

La tabla tiene dos campos NombreUsuario y Contraseña (ésta última está codificada)

El problema es que presento la información en un dbgrid y el campo Contraseña aparece codificado (~€¬Ƨ@#@#)


delphi
  1. SELECT * FROM Usuarios


y lo que deseo es que la información se presente decodificada.

¿Alguna idea? grax.


Salud.



  • 0

#2 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 13 noviembre 2010 - 07:09

Se me ocurre crear un campo calculado  de tipo String en el dataset (por ejemplo de nombre ContraDescifrada) y entonces en el manejaor del evento OnCalcFields del dataset colocas:



delphi
  1. TuDataset.FieldByName('ContraDecifrada').Value :=  EnDecriptar(TuDataset.FieldByName('Contraseña').Value



Puedes cambiar la propiedad DisplayLabel del campo calculado para que quede "Contraseña" para mostrarlo en el DBGrid y ocultar el campo cifrado.

Saludos
  • 0

#3 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 13 noviembre 2010 - 07:11

Hola. Si trabajas con Firebird y puedes hacer una udf seria lo mejor. Si no tocara hacer campos persistentes y programar el evento ongettext y onsettext
  • 0

#4 cannabis

cannabis

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 257 mensajes
  • LocationMéxico

Escrito 13 noviembre 2010 - 07:15

Hola Wilson. Gracias por responder.

Olvidé especificar que el query lo creo en tiempo de ejecución y no tengo idea si es posible agregar al query un campo calculado.


Salud.

  • 0

#5 cannabis

cannabis

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 257 mensajes
  • LocationMéxico

Escrito 13 noviembre 2010 - 07:19

Gracias eduarcol.

Investigaré sobre las UDF y les platico el chisme mañana o el lunes, porque voy a ir a una borrachera fiesta y la sra. Esposa ya está con el látigo en la mano arreando al ganado.


Salud.

  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.459 mensajes
  • LocationMéxico

Escrito 13 noviembre 2010 - 07:29

Hola Wilson. Gracias por responder.

Olvidé especificar que el query lo creo en tiempo de ejecución y no tengo idea si es posible agregar al query un campo calculado.


Salud.


Todo se puede amigo cannabis ;)

Creas el campo en tiempo de ejecución y le asignas el tipo de calculado:



delphi
  1. FieldKind := fkCalculated



Salud OS

  • 0

#7 cannabis

cannabis

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 257 mensajes
  • LocationMéxico

Escrito 14 noviembre 2010 - 10:29

Pirateando y modifcando este hilo, logré hacerlo.

En el evento OnDrawColumnCell del DBGrid


delphi
  1. if AnsiUpperCase(Column.FieldName) = 'CONTRASENA' then
  2. begin
  3.   if not Column.Field.IsNull then
  4.     dbg_Usuarios.Canvas.TextOut(Rect.Left+2, Rect.Top+2,Codificar(qry_Usuarios.FieldByName('Contrasena').AsString));
  5. end;



Gracias por su ayuda.


Salud.




  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.459 mensajes
  • LocationMéxico

Escrito 14 noviembre 2010 - 10:56

A que bien, me alegra que hayas resuelto tu problema. (y)

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.