Además de los comentarios y tutoriales a los que te han remitido, yo optaría (centrándome en el código que has puesto), por no mantener las dos consultas abiertas.
En general es una buena costumbre no mantener consultas abiertas más tiempo del necesario.
Por lo que veo, la primera consulta se usa para buscar un valor.
Una vez abierta, recoge ese valor en una variable y ciérrala. Pruébalo y ya dirás...
Código Delphi
[-]
_DM.consulta1.SQL.Text:= 'select * From inalmacen Where id_inal='+idprod.text;
_DM.consulta1.Open;
Value := _DM.consulta1.FieldByName('cantidad_inal').Value;
_DM.consulta1.Close;
...