Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-01-2012
juliannemiro juliannemiro is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 27
Poder: 0
juliannemiro Va por buen camino
DBGrid. Al actualizar los datos 'No pude encontrar la fila para su actualizacion'

Hola a todos!

Lamentablemente mi aplicación esta sufriendo el famoso error 'No puede encontrar la fila para su actualizacion: algunos valores han cambiado desde la ultima vez que se leyó'.

Estuve revisando links que dijo ecfisa pero no coinciden con mi problema ya que: no manejo triggers, me estoy conectando yo solo a la base, no manejo imagenes y por ahora tampoco valores double.


Les cuento maso menos lo que estoy haciendo:
Trabajo en un programa que consiste en tomar listas a un curso de un instituto. La forma en lo que estoy haciendolo es por medio de una dbgrid. La DBGrid tiene su ADOTABLE, ADOQUERY y DATASOURSE.

La grilla basicamente muestra alumno, id_asistencias_tipos, x_asistencia, valor de la falta, etc.
En id_asistencias_tipo el preceptor completa por ejemplo con la letra 'P'
El valor x_asistencia entonces se refresca y aparece 'Presente'.

Pero ahi surge el error. Sin seguir una coherencia salta el error con la leyenda antes detallada. Puede ser en la primera actualizacion del estado de asistencia de un alumno, como puede aparecer cuando recien cambiar el estado del 5to alumno. La leyenda salta cuando quiere.

El problema empezó a surgir luego de que agregé estas lineas con la ayuda de ecfisa


Código Delphi [-]
procedure TFormAsistencia.DBGridMateriasCursoKeyPress(Sender: TObject;
  var Key: Char);
begin

 with Sender as TDBGrid do
   if SelectedField.FieldName = 'id_asistencias_tipo' then
   begin
     DataSourceAsistenciasGrid.DataSet.Edit;
     DBGridMateriasCurso.Columns[4].ReadOnly := false;
     Key := UpCase(Key);
     if Upcase(Key) = '1' then
     DataSourceAsistenciasGrid.DataSet.FieldByName('x_asistencia').AsString:= 'Presente';
     if Upcase(Key) = '2' then
     DataSourceAsistenciasGrid.DataSet.FieldByName('x_asistencia').AsString:= 'Ausente';
     if Upcase(Key) = '3' then
     DataSourceAsistenciasGrid.DataSet.FieldByName('x_asistencia').AsString:= 'Tarde';
     if Upcase(Key) = '4' then
     DataSourceAsistenciasGrid.DataSet.FieldByName('x_asistencia').AsString:= 'Retiro Anticipado';

     DBGridMateriasCurso.Columns[4].ReadOnly := true;
   end;

end;
Primero sospeché que era porque en la grilla levanta un adoquery que trae por joins campos de otras tablas y trataba de modificarlos (algo que no deberia hacer). Por eso para probar puse en el adoquery solamente select * from asistencias... y ayer anduvo todo perfecto. Pero hoy volvió a salir con el mismo error. Asique ese no era el problema, o al menos no solo es ese.

En la aplicacion guardo directamente desde la grilla. Cuando agrega un registro inicio una transaccion, y si pone guardar hace un CommitTrans. Si pone cancelar hace un rollback.

-Trabajo con SQLServer 2000 y delphi 7

Espero se entienda maso menos como funciona esta parte del sistema. Cualquier otra cosa que quieran saber me dicen.
Responder Con Cita
  #2  
Antiguo 01-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Julián.

Añado la referencia al hilo inicial para evitar que te mencionen los mismos enlaces y además brindar más información a quién pueda ayudarte sobre el error.
También aprovecho a sugerirte otra organización para el código anterior:
Código Delphi [-]
procedure TFormAsistencia.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var
  st: string;
begin
  with Sender as TDBGrid do
  if (SelectedField.FieldName = 'id_asistencias_tipo') and (Key in ['1'..'4']) then
  begin
    DataSource.DataSet.Edit;
    case Key of
      '1': st:= 'Presente';
      '2': st:= 'Ausente';
      '3': st:= 'Tarde';
      '4': st:= 'Retiro Anticipado';
    end;
    DataSource.DataSet.FieldByName('x_asistencia').AsString:= st;
  end;
end;

Un saludo y espero que encuentres pronto la solución.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 02-02-2012
juliannemiro juliannemiro is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 27
Poder: 0
juliannemiro Va por buen camino
Gracias! no se me hubiese ocurrido.
Espero que alguien me de una mano con el otro tema!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
DBGRID ¿como seleccionar fila y obtener datos de la fila ? JXJ Varios 5 18-04-2017 03:50:14
Como actualizar un ListBox para que muestre siempre la ultima fila? JuanErasmo API de Windows 1 17-10-2007 00:16:45
Error: No se puede encontrar la fila para su actualizacion ludan508 Conexión con bases de datos 0 16-04-2007 23:12:29
capturar datos de la fila de un dbgrid Choclito Varios 1 04-05-2006 06:09:32
No se pudo encontrar la fila para su actualización Jorge Taveras MS SQL Server 6 26-06-2005 18:28:36


La franja horaria es GMT +2. Ahora son las 22:05:33.


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