Hola:
Definitivamente tienes que detallar mas tur preguntas. Si, por ejemplo, utilizas PARADOX, componentes Ttable, el código de búsqueda podría ser (entre muchas opciones), el siguiente:
procedure encontrar;
var encontrado : boolean:
begin
encontrado := false;
table.first;
while not(table1.eof)do
begin
if(table1.fieldbyname('nombre del campo') = 'dato buscado')then
begin
encontrado := true;
break;
end
else
table.next;
end;
end;
Para imprimir una factura, necestaria saber mucho mas acerca de como quieres hacerlo. Yo en lo personal uso componentes de base de datos y QuickReport para poder imprimirlas. Con los componentes de la Base de Datos (las tablas), voy almacenando mis facturas como una relación maestro-detalle. Los datos de la factura van en la tabla maestra, y los datos de las partidas que lleva la factura van en la tabla detalle. A cada registro en la tabla maestra le corresponderán uno o mas registros en la tabla de detalle. Una vez que se tengan las relaciones completas se construye un Reporte que involucre dichas tablas, para que puedas imprimir cada dato en la posición que deseés.
Ojalá te ayude esto ....