Hola de nuevo.
Agregué un campo a la tabla asociaciones que almacena el número de inscriptos en ese deporte de esa entidad.
Y a fin de simplificar, sólo voy a dejar los campos significativos. Quito por ejemplo nombre del participante, etc:
Cita:
ASOCIACIONES
ID
DEPORTE
INSCRIPTOS
DEPORTES
ID
DEPORTE
MAX_JUGADORES
PARTICIPANTES
ID
DEPORTE
INSCRIPCIONES
ID
ID_PARTICIPANTE
ID_ASOCIACION
ID_DEPORTE
|
Suponiendo que ya tenés asentados los datos de: ASOCIACIONES, DEPORTES y PARTICIPANTES. Y estas cargando las inscripciones, podrías aprovechar el evento BeforePost de la tabla INSCRIPCIONES:
Código Delphi
[-]
procedure TForm1.tbInscBeforePost(DataSet: TDataSet);
var
Cupo, Anotados: Integer;
begin
with IBQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT MAX_JUGADORES FROM DEPORTES');
SQL.Add('WHERE ID ='+tbInsc.FieldByName('ID_DEPORTE').AsString);
Open;
Cupo:= FieldByName('MAX_JUGADORES').AsInteger;
Close;
SQL.Clear;
SQL.Add('SELECT INSCRIPTOS FROM ASOCIACIONES');
SQL.Add('WHERE DEPORTE = '+tbInsc.FieldByName('ID_DEPORTE').AsString);
Open;
Anotados:= FieldByName('INSCRIPTOS').AsInteger;
end;
if Anotados >= Cupo then
begin
ShowMessage('Lo sentimos mucho, no hay mas cupo')
Abort;
end
end;
Es un ejemplo muy simplificado... pero espero que te acerque alguna idea.
Un saludo.