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
if edFromCode = true then begin
edFromCode := false;
exit;
end;
txt:=SEARCHTAG.Text;
if Length(txt)=0 then exit;
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!!!
cmd('setkey pass next fieldbyname');
FieldByName(searchfield).AsString:=SEARCHTAG.text;
showmessage('Set field forsearch');
GotoNearest;
showmessage('nearest');
end;
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;