![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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:
![]() |
#3
|
||||
|
||||
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;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. ![]() |
#4
|
|||
|
|||
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.
|
#5
|
|||
|
|||
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; Espero te sirva |
![]() |
|
|
![]() |
|