Ver Mensaje Individual
  #24  
Antiguo 06-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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
    (* Obtener número máximo de jugadores permitidos en el deporte ingresado *)
    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;
    (* Obtener el número actual de inscriptos para ese deporte *)
    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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-04-2011 a las 06:07:12.
Responder Con Cita