Ver Mensaje Individual
  #1  
Antiguo 17-06-2008
Avatar de alexey1982
alexey1982 alexey1982 is offline
Miembro
 
Registrado: abr 2008
Ubicación: mezzico
Posts: 15
Reputación: 0
alexey1982 Va por buen camino
Unhappy Problema: record already locked by this session

hola, io de nuevo tengo un problema... hace poco comence a recibir un error en tiempo de ejecucion a la hora de querer hacer una busqueda incremental en una ttable.
mira uso una pagecontrol, en una pagina uso componentes standard, dbedit y un db navigator, y en la otra page, uso un DBGRID para mostrar la busqueda incremental.. el problema que me tiene loco!! (por que no modifique nada de ese codigo en especial) es QUE ME APARECE EL BENDITO MENSAJE DE " record already locked by this session " hasta ahora solo se que el error ocurre al invocar ""SETKEY"" de la tabla... pero.. no se como hacerle.. he intentado darle ttable.unlocktable(Tlreadlock,tlwritelock) y me sale con la jalada de que la tabla NO ESTA LOCKEADA... bueno si no esta lockeada entonces que eeeessssssssssssssssssssssss
una manita..... porfas!!

codigo:
Código Delphi [-]
 
procedure TClientemainf.SearchTagChange(Sender: TObject);
var txt, sfind:string;
    len:integer;
begin
 //don't do anything if user presses
 //delete or backspace
 if edFromCode = true then begin
   edFromCode := false;
   exit;
 end;
 //don't do anything if there is
 //no text in edSearch
 txt:=SEARCHTAG.Text;
 if Length(txt)=0 then exit;
 //goto nearest match
 with cliente_tb do begin
  try
  clientemainf.Cliente_tb.UnlockTable(LTrEADlOCK);
  CMD('Unlocking READ');
  clientemainf.Cliente_tb.UnlockTable(LTWriteLock);
  CMD('Unlocked Write');
  except
  on e: exception do cmd(e.Message);
  end;
   cmd('refresh');
   clientemainf.Cliente_tb.Refresh; <-- lo puse a ver si se quitaba el error pero no!!
    cmd('next setkey');
    clientemainf.Cliente_tb.SetKey;  <-----------WTF!!!
     // showmessage('setkey');
     cmd('setkey pass next fieldbyname');
   FieldByName(searchfield).AsString:=SEARCHTAG.text;
   showmessage('Set field forsearch');
   GotoNearest;
   showmessage('nearest');
 end;
 //calculate what part of text should be selected
 sfind := cliente_tb.FieldByName(searchfield).AsString;
 len := Length(sfind) - Length(txt);
 if len > 0 then begin
   edFromCode:=true;
   SEARCHTAG.Text:=sfind;
   SEARCHTAG.SelStart:=Length(txt);
   SEARCHTAG.SelLength:=len;
 end;
end;

Última edición por marcoszorrilla fecha: 17-06-2008 a las 13:47:15. Razón: Etiquetas Delphi
Responder Con Cita