Error "record locked by another user"

Espero puedas ayudarme tengo este error y no logro quitarlo ya probé de todo bueno casi de todo y no se que pasa no seas mala onda me podrías explicar gracias bye

1 respuesta

Respuesta
1
Pues en teoría no debería haber problema de que uses una tabla que esta siendo empleada por un dbGrid. De hecho no es necesario "liberar' la tabla que es usad por el dbGrid. Si el registro te aparece bloqueado por otro usuario es porque posiblemente estés tratando de realizar alguna operación en la base de datos mientras esta todavía en modo de edición o de inserción, sin embargo el dbgrid no realiza en ningún momento el bloqueo de un registro.
Hola de nuevo, ya encontré el error, este es más bien lógico, estoy utilizando un dbgrid, para modificar mis datos y después ejecuto el procedimiento, lo que pasa es que quiero accesar a la tabla cuando el dbgrid aun lo esta usando, ahora mi pregunta es como libero, la tabla usada por el dbgrid, espero puedas ayudarme, gracias
Pues tu pregunta no da mucha información. ¿Qué tipo de base de datos usas?
¿Cuándo te aparece este error?
¿Cuántas aplicaciones usan la misma tabla?
¿Es una aplicación usada en red?
¿Ya reseteaste la maquina?
Hola de nuevo
Mira estoy utilizando una base de datos normal, todo sencillo esta tabla no la uso en otra aplicación, bueno si pero solo para lecturas, la aplicación no esta en red y ya le di reset a la pc incluso hasta desinstale delphi y lo volví a instalar no se que hacer me encuentro un tanto desesperada por que ya pregunte investigue en internet pero nada me funciona no se que pasa, te envío mi código para ver si me puedes ayudar, muchas gracias.
procedure Tcapturac.FormClose(Sender: TObject; var Action: TCloseAction);
begin
table1.Open;
table1.First;
table1.DisableControls;
while (not table1.Eof) do
begin
if table1.FieldByName('DH').AsString='A' then
begin
mate1:= Table1.FieldByName('M1').AsFloat;
mate2:= Table1.FieldByName('M2').AsFloat;
mate3:= Table1.FieldByName('M3').AsFloat;
cont1:= Table1.FieldByName('C1').AsFloat;
cont2:= Table1.FieldByName('C2').AsFloat;
cont3:= Table1.FieldByName('C3').AsFloat;
est1:= Table1.FieldByName('E1').AsFloat;
est2:= Table1.FieldByName('E2').AsFloat;
promm:=(mate1+mate2+mate3)/3;
promc:=(cont1+cont2+cont3)/3;
prome:=(est1+est2)/2;
Table1.Edit;
Table1.FieldByName('promedio').Asfloat:=(promm+promc+prome)/3;
table1.Post;
end
else
begin
Table1.Edit;
Table1.FieldByName('promedio').Asfloat:=0.0;
table1.Post;
end;
table1.Next;
end;
table1.Close;
//table2.First;
table1.EnableControls;
opcioncalificaciones.Close;
table2.Open;
table2.First;
table2.DisableControls;
while (not table2.Eof) do
begin
if table2.FieldByName('DH').AsString='A' then
begin
mate1:= Table2.FieldByName('M1').AsFloat;
mate2:= Table2.FieldByName('M2').AsFloat;
mate3:= Table2.FieldByName('M3').AsFloat;
fis1:= Table2.FieldByName('F1').AsFloat;
fis2:= Table2.FieldByName('F2').AsFloat;
fis3:= Table2.FieldByName('F3').AsFloat;
quim1:= Table2.FieldByName('Q1').AsFloat;
quim2:= Table2.FieldByName('Q2').AsFloat;
quim3:= Table2.FieldByName('Q3').AsFloat;
promm:=(mate1+mate2+mate3)/3;
promf:=(fis1+fis2+fis3)/3;
promq:=(quim1+quim2+quim3)/3;
Table2.Edit;
Table2.FieldByName('promedio').Asfloat:=(promm+promf+promq)/3;
table2.Post;
end
else
begin
Table2.Edit;
Table2.FieldByName('promedio').Asfloat:=0.0;
table2.Post;
end;
table2.Next;
end;
table2.Close;
table2.EnableControls;
opcioncalificaciones.Close;
end;
Incluso deje de utilizar las tablas directamente y use el dataset del datasource ligado a la tabla y nada, espero me puedas ayudar gracias.
¿Una tabla "normal" es paradox o dbase?
El código parece que no es la causa de tu problema.
Te recomendaría intentar accesar las tablas desde el SQL Explorer que viene con Delphi. Checa si te manda el mismo error. Si es así es porque la base de datos se quedo bloqueada.
Te recomiendo busques en el directorio donde esta tu base de datos algún archivo *. Lck que haya dejado bloqueado algún registro. Si lo encuentras bórralo e intenta de nuevo accesar la tabla.
Si es de otro tipo la base de datos (por ejemplo access) usa alguna herramienta para reparar errores.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas