Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2003
FernanGil FernanGil is offline
Miembro
 
Registrado: sep 2003
Posts: 16
Poder: 0
FernanGil Va por buen camino
Limitar Insercion de registros version prueba

Hola amigos, que tal, tengo lo siguiente:
Estoy desarrollando una aplicacion y a la hora de entregarla me gustaria permitirle insertar hasta un numero limitado de registros, y que despues no pueda continuar insertando mas registros hasta que yo se lo permita.
Como hacerlo? He pensado en ponerle una condicion que comprueba el numero de registros insertados y un valor de un campo en Tabla, ej:

If TablaDatos.Recorcount >= 20 and TablaValor.tex = 'No' then
No permitir mas inserciones.

Y para permitir que pueda insertar mas registros tan solo tengo que cambiar el valor TablaValor de 'No' a otro valor.
Lo que pasa es que esta solucion no me gusta porque cada vez que tenga que insertar un registro va a hacer una consulta a una
Tabla para comprobar el valor de TablaValor. Espero que me den alguna idea o si consideran que esta es la solucion adecuada me lo indiquen.

Saludos y Gracias.
Responder Con Cita
  #2  
Antiguo 01-10-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Carga al abrir la aplicación el valor en una variable Global y luego ya no tienes que volver a consultar la tabla, puesto que el valor ya está en memoria.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 01-10-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Si el usuario final no tiene acceso a la estructura de la base de datos, también puedes poner un Trigger que produzca un error cuando inserte mas de un registro.
De todos modos, para estos casos, yo soy partidario de utilizar compilación condicional, así evitamos dejar código compilado en el producto final, y solo agregamos código a la DEMO.

Este es un ejemplo, no se si del todo práctico pero creo mostrar la idea:

Código:
{$IFDEF DEMO}
procedure CheckCantRegistros(ADataSet: TDataSet; AMaxRecords: Integer = 20);
begin
  if ADataSet.RecordCount >= AMaxRecords Then
    raise Exception.CreateFmt('La versión demo no permite mas de %d registros', [AMaxRecords]);
end;
{$ENDIF}
...
procedure InsertarRegistro...
begin
  {$IFDEF DEMO}
  CheckCantRegistros(Query1);
  {$ENDIF}
  Query1.Insert;
  ...
end;
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 01-10-2003
FernanGil FernanGil is offline
Miembro
 
Registrado: sep 2003
Posts: 16
Poder: 0
FernanGil Va por buen camino
Muchas gracias por las dos respuestas, seguramente haré la de colocar una variable global y cargarla al cargar la aplicacion, no es que la otra opcion no me guste, me gusta y me parece mucho mas elegante lo de la compilacion condicional pero desconozco como hacerlo, muchas gracias otra vez.
Responder Con Cita
  #5  
Antiguo 01-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
si vas a Project-Options y la pestaña Directories/Conditionals, verás que hay una entrada de texto que pone Conditionals defines. Es aquí donde deberías de poner lo que te propone delphi.com.ar, es decir, la palabra DEMO y, luego, desde código, controlar como comenta delphi.com.ar el define

Si creo un proyecto nuevo y, en el OnShow del formulario pongo esto

Código:
procedure TForm1.FormShow(Sender: TObject);
begin
  {$IFDEF DEMO}
  showmessage('demo');
  {$ENDIF}
  showmessage('hola');
end;
Si esta puesta la palabra DEMO en Conditionals defines, saltarán los dos mensajes, en cambio, si no está puesta, sólo saltará el segundo mensaje

Espero te sirva
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


La franja horaria es GMT +2. Ahora son las 23:39:16.


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