Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Edicion de un DBGRID (https://www.clubdelphi.com/foros/showthread.php?t=70145)

Wbarrantes 06-10-2010 17:11:23

solucion
 
bueno encontre una solucion, tal ves no sea la mas adecuada, pero bueno...

como se desmadraba cuando el dataset encontraba un espacio en blanco o sin un valor asignado... entonces tuve que recurrir a la implementacion del siguiente metodo... lo pongo para retroalimentar la pagina con una solucion final....


Código Delphi [-]
 
procedure TForm1.Refill(Data : TDataSet);
var
 i : integer;
  archivo : TStringList;
  s:String;
begin
    //  showmessage('esto no sirve');
  //Data.First;
    while not(Data.eof) do
     begin
        s:='';
       for i := 0 to dbgrid1.Columns.Count-1 do
        begin
           s:= Data.FieldByName(DBGrid1.Columns[i].FieldName).asString  ;
           if (s='')or (s=' ') then
           begin
             s:='$$';
           end;
          Data.Edit;
          Data.FieldByName(DBGrid1.Columns[i].FieldName).asString := s;
        end;
        data.Next;
      end;
           showmessage('esta porqueria no sirve, debe tener un valor asignado si viene en blanco se desmadra');
end;


Esto para la primera solucion que empezamos a construir, gracias a los comentarios de uds, aqui en el foro... pero que habia desechado por el problema del field required... cuando habia un espacio vacio en la tabla de la base de datos o consulta sql...
(por cierto si alguien averigua por que de ese error, les agradesco, al menos para proyectos a futuro)


en cuanto al evento ongettext()... es una idea bastante convincente... pero cada vez que se mueve la ventana, se da clic en el DBgrid, o cualquier cosita minima... el evento se dispara, por lo que al menos para este caso no es muy recomendable, ademas del problema que me tope, de que el evento modifica todas las columnas a las que se lo asignaba, de manera integral, pues las variables que se leenvian de parametros ya estan definidas... y si se maneja con gobales, se hace un arroz con leche para poder manejar con diferentes eventos cada columna, sobre todo cuando siempre son N columnas...

muchas gracias a todos, por sus aportes,
___________________________________________________________
hoy aprendi algo, que ayer no sabia...

Wbarrantes 06-10-2010 17:13:54

gracias
 
Cita:

Empezado por JoseAntonio (Mensaje 378546)
dependiendo de los componentes que estas usando para datos, deberias usar algo asi como un tquery

y generar tu update a mano ejemplo

SQLStr := 'UPDATE MITABLA SET CAMPOAACTUALIZAR = ' + MiMetodoEncriptador(parametro) + ' where clave = ' + .... etc
EjecutarSQL(SQLStr); // debes implementar esa funcion en tu aplicacion;

modificas los datos y luego refrescas tus componentes de datos para que se refresquen tus cambios, asi te evitas tantas complicaciones con datasources datasets eventos y otras yerbas, suerte :-)


JoseAntonio: muchas gracias, pero el detalle esta en que no es una tabla fija, sobre la que se hace la consulta, y que la encryptacion de la informacion se hace solo para presentarla al cliente... No a nivel de la base de datos...

Gracias


La franja horaria es GMT +2. Ahora son las 20:13:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi