Como solemos decir por aqui: "a lo hecho, pecho", si has tomado la decisión de poner los controles en el form no voy a darte otra alternativa (y menos aún cuando yo hago lo mismo que tú
).
Si yo hago un Frame es para usarlo en Forms distintos, mostrando datos de diferentes Datasets en cada instancia del frame.
Si el frame necesita el dataset de otra ventana, hago esto:
Código Delphi
[-]
Frame1 = class(Tframe)
...
private
FDataset:TIBDataset;
public
property Dataset: TIBDataset read FDataset write SetDataset;
end;
implementation
procedure TFrame1.SetDataset(Value:TIBDataset);
begin
if Value <> FDataset then
begin
FDataset:= Value;
Reabrir las consultas locales del frame
end;
Ahora en dentro del form, para asignarle un Dataset de ese frame:
Código Delphi
[-]
procedure TFrmReservas.Button1Click(....);
begin
Frame1.Dataset := IBDataset1;
end;
Con esto se puede modificar fácilmente el dataset de cada Frame en tiempo de ejecución. (aunque no sé si lo necesitarás, me parece que no)
Realmente la propiedad "Dataset" es un puntero al IBDataset1 de la ventana de Reservas, pero está declarado dentro del frame, no tengo que hacer un "uses UnitReservas" dentro del Frame.
El error que comentas no lo visto en mi vida. Según Google tiene que ver con ADO, (puesto que no lo he usado nunca), y dices que usas IB... me deja más perplejo.
Saludos