Ver Mensaje Individual
  #3  
Antiguo 01-06-2006
Alexis De la Cr Alexis De la Cr is offline
Miembro
 
Registrado: may 2006
Ubicación: Puebla
Posts: 124
Reputación: 18
Alexis De la Cr Va por buen camino
Estimado Roman:
Te agradezco el interes mostrado al contestar mi pregunta. Te explico, tengo una tabla en mysql, la cual contiene como 15 campos. Para facilitarme la navegacion, no trabajo directamente sobre el dbgrid, y los valores de cada campo, los coloco en un edit box respectivamente,( de esta forma puedo ver los 15 campos al mismo tiempo, cosa que trabajando directamente sobre el dbgrid, debo presionar las flechitas hasta que aparezca el campo deseado. en pocas palabras, se pierde tiempo.)

Código Delphi [-]
labelededit1.Text:=myquery1.FieldValues['clave'];
labelededit2.Text:=myquery1.FieldValues['clalt'];
labelededit3.Text:=myquery1.FieldValues['producto'];
labelededit4.Text:=myquery1.FieldValues['mexico'];
labelededit5.Text:=myquery1.FieldValues['puebla'];
labelededit6.Text:=myquery1.FieldValues['dolar'];
labelededit7.Text:=myquery1.FieldValues['ppesos'];
labelededit8.Text:=myquery1.FieldValues['garantia'];
labelededit9.Text:=myquery1.FieldValues['garantiaps'];
labelededit10.Text:=myquery1.FieldValues['ua'];
labelededit13.Text:=myquery1.fieldvalues['porc'];
label9.Caption:=myquery1.FieldValues['mpcr'];

Cuando modifico el valor de un campo hago lo siguiente

Código Delphi [-]
myquery1.Edit;
myquery1.FieldValues['dolar']:=labelededit6.Text;
myquery1.FieldValues['ultmodif']:=DateToStr(Now);
myquery1.Post;

de tal forma que esta accion se refleja en el dbgrid haciendo que el fondo del registro activo se coloree de amarillo, mediante el siguiente codigo en el evento ondrawcolumncell del dbgrid

Código Delphi [-]
if MyQuery1.UpdateResult in [uaFail,uaSkip] then
    TCRDBGrid(Sender).Canvas.Brush.Color:= clRed
  else
    if MyQuery1.UpdateStatus <> usUnmodified then
      begin
      TCRDBGrid(Sender).Canvas.Brush.Color:= clYellow;
      button3.Enabled:=True;
      end;
  TCRDBGrid(Sender).DefaultDrawColumnCell(Rect, Datacol, Column, State);

en este punto yo tengo la opcion (como la tabla esta en modo cachedupdates) de cancelar o de aplicar los cambios, mediante un boton. En Ambos casos, debo hacer un myquery.refreshrecord (antes hacia myquery.refresh y funcionaba perfecto, pero como actualize la version de los componentes mydac, aahora esto me causa un error de access violation), para actualizar los datos. el problema es que el fondo registro en el dbgrid, queda amarillo,y lo que quiero es que si se cancela la actualizacion, el fondo vuelva a su color blanco, y si se procede con applyupdates, dejar otro color distinto para saber que ese registro se actualizo.

Espero no me haya excedido explicando, soy novaton en esto

Gracias de antemano
Responder Con Cita