Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2006
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 22
@-Soft Va por buen camino
Talking error al actualizar un registro por segunda vez

hola

estoy el el proceso de desarrollo de un software con delphi7, bde, paradox y tquery. al momento de yo insertar y modificar no tengo problemas, pero al momento de actualizar un mismo registro por segunda vez consecutivo me da el siguiente error:

Código:
Couldn't perform the edit because another user changed the record.
y esto solo pasa cuando trabajo con TQuery, si uso TTable no hay problemas pero no me actualiza sino hasta que cierro y abro el dataset. entonces que puedo hacer para que este error no me aparesca este error.

Salu2
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
Responder Con Cita
  #2  
Antiguo 04-07-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Hola

Si trabajas con TTable, debes hacer un Post después de la inserción o Modificación. En el Evento AfterPost del Ttable, coloca : NombreTabla.FlushBuffers; esto te va permitir que se actualice la tabla sin necesidad de cerrarla.
Si trabajas con TQuery y te da ese error podría ser porque no estás cerrando la consulta antes.
Debes tener la siguiente sintaxis:

Query1.Close;
Query1.SQL.Add('........');//tu sql para la modificacion
Query1.ExecSQL;
Query1.Open;
Si estas haciendo eso y persiste el error, entonces envía el código para ver donde está el detalle.
Responder Con Cita
  #3  
Antiguo 04-07-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
 Query1.Close;
 Query1.SQL.Add('........');//tu sql para la modificacion
 Query1.ExecSQL;
//o
 Query1.Open;

Nemesio supongo que quieres decir que utilice ExecSql u Open dependiendo de que la consulta se de acción o de selección.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 04-07-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Si Marcos, gracias por el detalle.
Responder Con Cita
  #5  
Antiguo 05-07-2006
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 22
@-Soft Va por buen camino
Cool

hola

pues el metodo que estoy usando es normal como si fuera un TTable, pero con TQuery

Código Delphi [-]
qObservaciones.Open;
   qObservaciones.Append;
   qObservacionesComp_id.Value         := fMenu.vCodCompany;
   qObservacionesPeri_id.Value         := fMenu.vPeriodo;
   qObservacionesEmat_matricula.Value  :=   qEstuSuspendidosemat_matricula.Value;
   qObservacionesSecc_id.Value         := qEstuSuspendidossecc_id.Value;
   qObservacionesObse_tipo_observ.Text := 'SUSPENDIDO';
   qObservacionesObse_observacion.Text := memObservacion.Lines.Text;
   qObservacionesUsua_usuario.Value    := fMenu.vUserLogin;
   qObservacionesObse_fecha_alta.Value := Date;
   qObservaciones.Post;
   qObservaciones.ApplyUpdates;
   qObservaciones.Close;
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
Responder Con Cita
  #6  
Antiguo 06-07-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Hola

De esa forma no lo vas a hacer, tienes que hacerlo por medio de una consulta de acción y pasarle los parámetros.

Código Delphi [-]
Query1.Close;
Query1.SQL.Add('........');//tu sql para la modificacion
Query1.ParamByName('Campo1').Value:=Edit1.Text;
...
..

Query1.ExecSQL;
//o
Query1.Open;
Responder Con Cita
  #7  
Antiguo 06-07-2006
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 22
@-Soft Va por buen camino
Cool

pues claro que de esta forma se puede hacer pues los TQuery Tiene casi el mismo comportamiento que un TTable con la diferencia de que los querys se usan para traer filas especificas y ejecutar sentencias sql, pero los TTables solo pueden cargar todo el contenido de una tabla en memoria y no te permite manejar valores especificos a menos que los filtre o algo asi, bueno eso es lo que tengo entendido. Ademas de que los TQuerys tienen la ventaja de que actualizan mas rapido que los TTables, activando la propiedad RequestLive y CacheUpdate. Pero aun no siguo entendiendo porque me da este error.
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
Responder Con Cita
  #8  
Antiguo 06-07-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Pues bueno, yo no he logrado hacer modificaciones de esa forma sino con consultas de acción.
Responder Con Cita
  #9  
Antiguo 17-07-2006
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 22
@-Soft Va por buen camino
Wink

hola


despues de realizar un analisis profundo para detectar en que momento se produce este error, los resultados fueron que al momento de realizar un ApplyUpdate es que se genera el error. Realice pruebas con un TTable y me da el mismo error a realizar un ApplyUpdate, si no lo aplico no se produce el error ni el TQuery ni en el TTable. Pero es vital que se Aplique un ApplyUpdate para que los cambios reflejen al Instante o de lo contrario me vere forsosamente a aplicar un metodo un poco otodoxo que es el de abrir y cerrar datasets al momento de aplicar el cambio, el cual no me gusta porque entiendo que a la larga pude producir algun problema de perdida de informacion, que se yo, etc.

Por favor que solucion podria yo tener para poder controlar este error, pues yo mi aplicacion esta elaborada en mas de un 50% y estoy aplicando este metodo.

Salu2
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
Responder Con Cita
Respuesta



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
actualizar registro de windows jmeng2 Varios 2 08-12-2004 16:44:02
Actualizar registro activo en DBLookupListBox i.larranaga Conexión con bases de datos 2 21-07-2004 08:41:21
Error al llamar por segunda vez al QReport Ana Cristina Impresión 4 09-07-2004 08:31:36
Error al cargar formulario por segunda vez sgarrido Varios 4 19-05-2004 23:06:15
Actualizar un único registro Muten Firebird e Interbase 2 16-03-2004 16:03:30


La franja horaria es GMT +2. Ahora son las 14:28:01.


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