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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-03-2008
gorsan gorsan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Alcala de Henares (Madrid)
Posts: 87
Poder: 21
gorsan Va por buen camino
Valores previos únicos en controles data-aware

Buenos días a todos.
Hoy les planteo la siguiente cuestión:
Trabajo con Delphi 7 e Interbase 6.

Dispongo sobre un formulario una serie de controles data-aware (DBEdit) linkados a los campos de un IBDataSet. En respuesta al click de un botón añado un nuevo registro en blanco:
Código Delphi [-]
procedure TWCpu.TBAddClick(Sender: TObject);
begin
   TBAdd.Enabled:=False;
   TBEditar.Enabled:=False;
   TBBorrar.Enabled:=False;
   TBGrabar.Enabled:=True;
   TBCancelar.Enabled:=True;
   EBuscar.SetFocus;
   with DMCpu.IBCpu do
    try
       DisableControls;
       Close;
       Open;
       Append;
    finally
       EnableControls;
    end;
   DBId_inv_cpu.SetFocus;
end;
Es en este momento donde quiero que salga escrito en algunos de ellos una serie de valores. Pero la cosa no es tan simple porque esos campos están definidos como not null y unique.
Lo que pido es ayuda en la construcción de un mecanismo que escriba valores unicos en esos controles, valores algo asi como NoIp01, NoDominio01, etc, y que luego, al quedar solo escritos en los DBEdit, el usuario pueda introducir sus valores y de no hacerlo, que no salte la excepcion por ser un valor repetido.
He intentado hacerlo con generadores pero estos escriben el valor en la tabla más tarde de lo que yo quiero que lo hagan. En concreto he intentado:

Código Delphi [-]
procedure TDMCpu.IBCpuNewRecord(DataSet: TDataSet);
begin
   with IBSQLValores_Iniciales do
   begin
      close;
      ExecQuery;
      FreeHandle;
   end;
end;
El Stored Procedure que construi al efecto es:
Código SQL [-]
ALTER PROCEDURE "INSERTAR_VALORES_EN_TABLA_CPU" 
AS
BEGIN
 UPDATE CPU
 SET
   "ID_DOMINIO"=GEN_ID(CONTADOR_PARA_ID_DOMINIO_EN_CPU,1),
   "IP"=GEN_ID(CONTADOR_PARA_IP_EN_CPU,1),
   "RACK"=GEN_ID(CONTADOR_PARA_RACK_EN_CPU,1),
   "LP_SIP_ACTUAL"=GEN_ID(CONTADOR_PARA_IMP_EN_CPU,1);
END
 ^
Pero no funciona como yo quiero. ¿Alguien me puede dar una idea de como hacerlo? Muchas gracias por vuestro tiempo.
Responder Con Cita
 



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
Missing data provider or data packet mcalmanovici Providers 1 11-09-2007 05:55:15
Data-aware o no data-aware... esa es la cuestión! __marcsc Debates 22 09-07-2006 21:32:36
Data Aware vs Clases Carlosj Varios 1 10-05-2006 15:04:26
Distincion de mayusculas en campos unicos xerkan Firebird e Interbase 4 01-09-2004 18:45:46
Valores unicos en tablas mySQL jmselesan MySQL 1 05-08-2003 16:26:48


La franja horaria es GMT +2. Ahora son las 09:52:49.


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