Ver Mensaje Individual
  #1  
Antiguo 14-05-2012
alexnoa alexnoa is offline
Registrado
NULL
 
Registrado: may 2012
Posts: 1
Reputación: 0
alexnoa Va por buen camino
actualizar dbgrid

Hola a todos, llevo poco con Delphi, menos de 6 meses, y estoy realizando una aplicación que conecta con una base de datos mysql 5.1 con componentes mydac en delphi 7. La cuestión es la siguiente: realizo una query el componente de esta libreria en la que selecciono datos de varias tablas. Despues al selecionar en el dbgrid una fila se ejecuta un evento en el que con uno de los datos contenido en las celdas se actualiza una de las tablas consultadas. Sin embargo, al refrescar la consulta los datos no se actualizan en el dbgrid. He consultdo varios hilos de este foro pero ninguno habla explicitamente de este componente. Ya he probado cerrando y abriendo la consulta y refrescandola pero no hace nada. Sin embargo, los datos si son modificados en la tabla correctamente y la consulta si refresca bien, ya que he creado otro grid posterior que los muestre y salen actualizados. Finalmente he optado por asignar de nuevo la conexión al grid original despues de cada cambio pero me parece muy chapucero a la vez que poco funcional, la idea es que van a realizarse muchas insercciones simultáneas por varios usuarios por lo que temo que haya problemas... Conoce alguien una solución más viable.

Este es el codigo que estoy usando y no me gusta
Código Delphi [-]
var
  confirmar:Integer;
  select:string;
begin
  confirmar:=Application.MessageBox('¿Desea asignarse este contacto?','Asignar conctacto',MB_OKCANCEL);
  if confirmar=IDOK then
    begin
      select:=DBG_contactos.SelectedField.Text;
      with DM_datos.DACTBL_contactos do
      begin
        Locate('id',select,[loCaseInsensitive]);
        Edit;
        FieldValues['asesor']:=agente; //esta variable viene declarada fuera de este procedimiento
        Post;
        MessageDlg('Contacto asignado correctamente',mtInformation,[mbOK],0);
      end;
      DM_datos.DACQ_sin.Close;
      DM_datos.DACQ_sin.Open;
      //Tb he usado DM_datos.DACQ_sin.Refresh y funciona igual.
      DBG_contactos.DataSource:=DM_datos.DSDAC_sin; //esta es la parte que no quiero utilizar y solo me ha funcionado correctamente
    end;
end;

Última edición por ecfisa fecha: 14-05-2012 a las 13:19:32. Razón: Etiquetas [DELPHI] [/DELPHI]
Responder Con Cita