Como no puedo editar, me respondo, para enlazar dos querys he creado un campo fklookup
Código Delphi
[-]
procedure tform1.crearenlaceenquery;
var
campo:tstringfield;
begin
Campo := TstringField.Create(fmodulo.zqcompras);
Campo.FieldName := 'nombres';
Campo.FieldKind := fklookup;
campo.KeyFields :='id_producto';
campo.LookupDataSet :=fmodulo.zqproductos;
campo.LookupKeyFields :='id_producto';
campo.LookupResultField :='nombreproducto';
Campo.DataSet := fmodulo.zqcompras;
end;
nombres es el campo de busqueda,
id_producto en el keyfields es el campo con el que se relaciona compras con productos
id_producto en el lookupkeyfields es el campo primary key donde busca en productos
nombreproducto es el resultante.
para poder ver el nombre del producto en vez del id_producto en el dbgrid, asignamos el campo nombres.
No se si a alguien le ayude esto, pero lo comparto por si sirve.
Gracias a todos por vuestra ayuda.