Ver Mensaje Individual
  #21  
Antiguo 04-03-2017
koalasoft koalasoft is offline
Miembro
 
Registrado: oct 2004
Ubicación: Tenosique Tabasco
Posts: 86
Reputación: 20
koalasoft Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Ví que en otro hilo consultaste sobre la funcionalidad del método Requery, espero que esta traducción de la ayuda de Delphi conteste tu duda:


Saludos
Muchas gracias estimado ..

Mi pregunta relacionado a esto fue que he intentado que mi procedimiento para actualizar un registro lo hace bien, puesto que al intentar actualizar me sale el siguiente mensaje:

---------------------------
Debugger Exception Notification
---------------------------
Project CTRO.exe raised exception class EOleException with message 'No se puede encontrar la fila para su actualización: algunos valores han cambiado desde la última vez que se leyó'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

Te comento rapido, antes mi base de datos mysql (mariadb) estaba en un servidor Windows, por necesidades exporte la base de datos ahora a un servidor Linux, al querer usar el sistema nuevamente me aparece este mensaje al querer actualizar un registro, cosa que antes en el anterior servidor no lo hacia.

Mi codigo de actualización es el siguiente:

Código:
with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM ONTs ');
    SQL.Add('WHERE MAC_ONT LIKE ' +quotedstr('%' + Edit1.Text + '%')+' ');
    Open;
  if isEmpty Then
    begin
	AdoQuery1.Close;            // cierro la tabla.
	AdoQuery1.Open;             // abro la Tabla
	msError('No se encuentra registrado, Favor verifica los datos.','ERROR: ID MAC');
        ADOQuery1.Active := False;
	Edit1.SetFocus;
    exit;
  End
  Else   // En caso de Si haber un resultado
   Begin
    If MessageDlg('¿Está seguro que desea ACTUALIZAR el registro? ',mtConfirmation,[mbYes,mbNo],0) = mrYes then
      begin
      Alta_ONT.Cursor:= crSQLWait;
	    DMod1.ADOConnection1.BeginTrans;   // Inicio la Transacción
       try
       ADOQuery1.Edit;           // Editar la Tabla
       ADOQuery1.FieldByName('MOD_ONT').AsString := ComboBox1.Text;
       ADOQuery1.FieldByName('SERIE_ONT').AsString := Edit2.Text;
       ADOQuery1.FieldByName('PON_ONT').AsString := Edit3.Text;
       ADOQuery1.FieldByName('ONT_S').AsString := Edit4.Text;
       ADOQuery1.FieldByName('SSID_ONT').AsString := Edit5.Text;
       ADOQuery1.FieldByName('KEYWIFI_ONT').AsString := Edit6.Text;
       ADOQuery1.FieldByName('IP_ONT').AsString := Edit7.Text;
       ADOQuery1.FieldByName('ESTATUS_ONT').AsString := ComboBox2.Text;
       ADOQuery1.Post;            // Guardo Datos;

       if DMod1.ADOConnection1.InTransaction then
       Begin
        DMod1.AdoConnection1.CommitTrans; // actualizo la BD
        AdoQuery1.Close;            // cierro la tabla.
	AdoQuery1.Open;             // abro la Tabla
        Alta_ONT.Cursor:= crDefault;
	      MSG:='EL Registro ONU [MAC: '+ Edit1.Text + ' - MODELO: ' + ComboBox1.Text + ' - SERIE: '+ Edit2.Text +' - ONT/s: ' + Edit4.Text + ' ] - SE MODIFICO/ACTUALIZO Satisfactoriamente';
	      Application.MessageBox(PChar(MSG), 'Atención',MB_ICONINFORMATION );
	      LimpiarCampos([Edit1,Edit2,Edit3,Edit4,Edit5,Edit6,Edit7,ComboBox1,Combobox2]);
              DesactivarCampos([Edit1,Edit2,Edit3,Edit4,Edit5,Edit6,Edit7,ComboBox1,Combobox2]);
		    // -- Inicio Botones
	      CargarBotonesInicio;
		    // -- Fin Botones
              Alta_ONT.Cursor:= crDefault;
              ADOQuery1.Active := False;
	      bnuevo.SetFocus;
       End;
		except
			on E:Exception do      // Si hay Error de Conexión
			begin
				DMod1.AdoConnection1.RollbackTrans;
                                Alta_ONT.Cursor:= crDefault;
                                ADOQuery1.Active := False;
                                MSG:='Ocurrió un error al guardar los datos: ' + E.Message;
				Application.MessageBox(PChar(MSG),'ERROR !!!', MB_ICONSTOP );
				Abort;
				exit;
			end;  // on
       End; // try
	   End
		Else
		  Begin
			AdoQuery1.Close;            // cierro la tabla.
			AdoQuery1.Open;             // abro la Tabla
			Alta_ONT.Cursor:= crDefault;
                        ADOQuery1.Active := False;
			msInfo('¡CANCELADO POR EL USUARIO!.','Atención Proceso Cancelado..');
                        BCancelar.SetFocus;
			exit;
		  End;
   End;
Responder Con Cita