la verdad no entiendo muy bien lo que quieres lograr pero lo que si veo es que no validas la respuesta del locate y una vez que sales de el modificas los valores de la tabla te aconsejaria probar una cosa como
Código:
procedure TForm14.DBEdit2KeyPress(Sender: TObject; var Key: Char);
Var
n,m,o,p:Variant;
begin
If Key=#13 Then
begin
ModuloDatos.TblPagos.Active:=True;
ModuloDatos.TblFacturas.Active:=True; //esto te colocara en la primera pos
//aqui validas si realmente ha sido encontrado
if ModuloDatos.TblFacturas.Locate('NFactura',DBEDit2.Text,[]) then
begin
n:=ModuloDatos.TblFacturas.FieldValues['NFactura'];
m:=ModuloDatos.TblFacturas.FieldValues['Usuario'];
o:=ModuloDatos.TblFacturas.FieldValues['Periodo'];
p:=ModuloDatos.TblFacturas.FieldValues['Precio'];
ModuloDatos.TblPagos.FieldValues['NFact']:=n;
ModuloDatos.TblPagos.FieldValues['Usuario']:=m;
ModuloDatos.TblPagos.FieldValues['Periodo']:=o;
ModuloDatos.TblPagos.FieldValues['Importe']:=p;
Confirmar.SetFocus;
end else begin
ShowMessage('Factura no encontrada');
(Sender as TDBEdit).SelectAll;
end;
end;
Otra cosa es has verificado que no tengas caracteres raros o que necesites una busqueda no sensitiva a las mays es decir un locaseinsensitive?
esto lo digo por que en un post anterior me he dado cuenta de que introduces dentro de la factura un "-"
solo me queda que si esto no te ayuda pasame el codigo al correo para que lo pueda ver en su globalidad ¿vale?