Es que son parámetros, no campos...
en lugar de:
Código Delphi
[-]
query1.FieldByName('numfac').AsFloat:=strtofloat(edit1.Text);
QUERY1.FieldByName('tipofac').AsString:=tipofactu;
Debería ser:
Código Delphi
[-]
query1.ParamByName('numfac').AsFloat:=strtofloat(edit1.Text);
QUERY1.ParamByName('tipofac').AsString:=tipofactu;