Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #24  
Antiguo 06-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Limitar cantidad de registros por pagina elarys Impresión 1 29-10-2010 07:38:03
Como limitar la cantidad de registros impresos por hoja mbguantay Impresión 3 25-08-2010 15:22:24
Eliminar registros de mi base de datos Elite237 OOP 9 29-07-2007 22:07:11
¿Cómo limitar la cantidad de carateres a escribir en un RichEdit? Alcolea Varios 5 05-12-2006 03:17:55
Limitar la carpeta donde crear la base de datos fcios Firebird e Interbase 0 01-11-2005 06:03:22


La franja horaria es GMT +2. Ahora son las 07:10:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi