Club Delphi  
    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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Unhappy Limitar cantidad e registros a crear en una base de datos

Antes que nada disculpen si no va aqui la pregunta pero no supe donde de ponerla, bueno ahi va la cuestion tengo un LookUpComboBox y bueno dependiendo la opcion que escojan de el es la catidad de registros que quiero dejar que el usuario pueda registrar en la base de datos, por ejemplo:
Si escojen Ciclismo que solo puedan meter 3 participantes de ciclismo en la base de datos y no se si puede hacer con un DBGrid o con un contador o algo parecido por favor me urge espero su ayuda.
Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Por si no me explique aqui les va un mejor ejemplo:

Tengo una tabla Asocicacion, una Tabla Participantes, una Tabla Deporte y una Tabla Inscripcion entonces por ejemplo una asociacion en el deporte futbol solo puede tener inscritos a 11 participantes y en el deporte ciclismo uno entonces mi tabla inscripcion guardo el ID del participante y el ID del deporte y el id de la asociacion pero en esa tabla yo quiero que de alguna forma solo pueda admitir 11 registros si es de futbol o 1 si es de ciclismo alguien me puede dar alguna idea.
Gracias
Responder Con Cita
  #3  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Yo solo me voy dando ideas pero estas nuevas ideas me crean nuevas interrogantes, bueno ahi les va mi idea crear un campo en el que guarde el ID de la asociacion y el ID del Deporte creando un registro de este tipo "01-03" y luego recorrer la tabla y por cada registro que encuentre que lo sume en uno y lo guarde en una variable y despues con un if preguntar por ejemplo en el caso del futbol si la variable es menor que once dejar guardar un nuevo registro y si no mandar un mensaje que ya no se pueden guardar mas registros para ese deporte, ahora la duda es como puedo hacer ese barrido o recorrido por la tabla y como hago el incremento en uno dentro de la variable cada vez que encuentre un registro igual al dato que le estoy pasando.

De nuevo espero su gran ayuda es de vida o muerte casi, solo tengo hasta mañana al medio dia para terminar esta aplicacion.
Responder Con Cita
  #4  
Antiguo 05-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 RedVenom.

En principio creo que el lugar adecuado para evaluar es el evento BeforeInsert del DataSet.

Por ejemplo:
Código Delphi [-]
...
(* True si se alcanzo la cantidad máxima permitida *)
function TForm1.CiclistasFull(ADataSet: TDataSet; Tope: Integer): Boolean;
begin
  Result:= ADataSet.RecordCount >= Tope;
end;

procedure TForm1.DataSet1BeforeInsert(DataSet: TDataSet);
begin
  if CiclistasFull(DataSet, 3) then  // donde 3 es la cantidad máxima de ciclistas (Tope)
  begin
    ShowMessage('Error: Pista demasiado angosta para tanta bicicleta...');
    Abort;
  end;
end;
...


Un saludo.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 05-04-2011 a las 07:52:30.
Responder Con Cita
  #5  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Question

Disculpa tanta ignorancia pero no soy muy asiduo a programar pero en la funcion en que parte le paso el campo o el dato que quiero que cuente.
Gracias por tu ayuda
Responder Con Cita
  #6  
Antiguo 05-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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.

No vi tu segundo post hasta despues de guardar el anterior. Había interpretado por el primero que eran varias tablas.

Pero viendo tu segundo mensaje me parece que en una misma tabla tenes todos los deportes. ¿ Es así ?

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
asi es en una misma tabla tengo todos los deportes pero futbol solo se pueden inscribir hasta once y en ciclismo solo uno y asi sucesivamente dependiendo del deporte.
Responder Con Cita
  #8  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
es decir en una misma tabla voy a meter todos los que se inscribieron a futbol, a ciclismo, a natacion pero quiero limitar la cantidad de inscritos segun el deporte al que se inscribieron.
Responder Con Cita
  #9  
Antiguo 05-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
¿ Con que base de datos estas trabajando ?
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Question

Con SQL server 2008
Responder Con Cita
  #11  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Question

Alguna idea??
Responder Con Cita
  #12  
Antiguo 05-04-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Amigo, para empezar, deberías leer nuestra guía de estilo, gracias por tu colaboración.

Y para continuar, tienes muchas opciones, por ejemplo un simple campo que indique qué tipo de deporte es.
Responder Con Cita
  #13  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Thumbs down

Casimiro Notevi
gracias por lo de la guia de estilo y pues tu sugerencia de resolucion a mi problema creo que no dice nada porque ya se que le tengo que poner un campo que me diga que deporte es, eso es mas que obvio pero dime como limito que no creen mas registros de los que permite el deporte te repito si el deporte solo se pueden inscribir hasta once que no me creen 12 registros o mas que pertenesca al deporte futbol.
De todos modos se agradece tu "aportacion" a mi problema.
Responder Con Cita
  #14  
Antiguo 05-04-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por RedVenom Ver Mensaje
[..] De todos modos se agradece tu "aportacion" a mi problema.
De nada, hombre

¿Acaso no te gusta el código de ecfisa?, por eso te he indicado yo lo del tipo de deporte, porque si es tan obvio como dices entonces no sé cómo no lo has entendido

Sólo has de añadir el filtro por ese campo de "TipoDeporte", hay muchas formas, como te indiqué antes, pero aprovechando el código de ecfisa, puede ser algo así:
Código Delphi [-]
(* True si se alcanzo la cantidad máxima permitida *)
function TForm1.CiclistasFull(ADataSet: TDataSet; Tope, TipoDeporte: Integer): Boolean;
begin
  case TipoDeporte of
    1: // futbol
    2: // ciclismo
       begin
         // aquí debes contar los registros que cumplan con TipoDeporte=2
         // No sé si el dataset que usas es una tabla, un query, etc. pero se trata de contar los registros
         Result := select coun(*) from ADataSet where CampoTipoDeporte=TipoDeporte;
       end;
    3: // canicas
    4: // estampitas de jugadores de futbol
  end;
end;

procedure TForm1.DataSet1BeforeInsert(DataSet: TDataSet);
begin
  if CiclistasFull(DataSet, 3, 2) then  // donde 3 es la cantidad máxima de ciclistas (Tope), y 2 es el TipoDeporte
  begin
    ShowMessage('Error: Pista demasiado angosta para tanta bicicleta...');
    Abort;
  end;
end;
...
Responder Con Cita
  #15  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Gracias me parece una respuesta mas adecuada lo probare porque la forma de tu primer respuesta no me dice nada porque como mencione no soy un programador asiduo, pero ya respondiendo de esta forma me da una mejor idea de lo que voy a hacer.
Gracias y si queda el codigo yo te aviso gracias porque lo tratare de adaptar porque en la tabla deportes es donde tengo guardaco cuantos pueden ser inscritos a cada deporte.
Gracias
Responder Con Cita
  #16  
Antiguo 05-04-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
De nada, para eso estamos aquí, para ayudarnos los unos a los otros.
Responder Con Cita
  #17  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
ya lo estuve tratando de implementar en mi cabeza pero fijate que bueno con el codigo que me das limito la cantidad de registros que se pueden crear para X deportes pero hay una variable mas que es la de la tabla asociacion lo que quiero decir con esto es que una asociacion puede tener n catidad de escritos en x deporte y asi otras, asociaciones no se si me explique??
Responder Con Cita
  #18  
Antiguo 05-04-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, pon aquí el código que estás usando, la estructura de las tablas, etc. para que podamos ir sobre seguro.
Responder Con Cita
  #19  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino

Aqui esta la estructura de las tablas de la base de datos

Código:
ASOCIACIONES         
--------------         
ID                          
NOMBRE                  
                      

PARTICIPANTES            
---------------           
ID
NOMBRE
FECHA DE NAC


DEPORTES
-----------
ID
DEPORTE
CANTIDAD DE PARTICIPANTES
LUGAR


INSCRIPCIONES
---------------
ID_PARTICIPANTES
ID_ASOCIACIONES
ID_DEPORTE
IDINSCRIPCION
FECHA
Esta es la estructura de las tablas de la base de datos y pues mi idea es agregar un campo mas a la tabla inscripciones en el que una el ID de asociaciones y el ID del deporte y luego contar cuantas veces se repite en los registros de la base de datos guardarlo en una variable y despues compararlo con el campo cantidad de participantes de la tabla deportes si es menor o igual y dependiendo del resultado guardar el nuevo registro o mandar el mensaje.

Espero haber sido mas explicito la verdad ya estot bloqueado, de nuevo agradezco su ayuda.

Última edición por Casimiro Notevi fecha: 06-04-2011 a las 00:02:32.
Responder Con Cita
  #20  
Antiguo 05-04-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
aqui esta el link con la imagen de como estan las tabalas de la base de datos porque el mensaje anterior no se aprecia http://cid-1291e717d22eba1d.office.l...%20DE%20BD.png


Última edición por Casimiro Notevi fecha: 06-04-2011 a las 00:10:50. Razón: Añadido un enlace a la imagen
Responder Con Cita
Respuesta



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 11:21:39.


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