Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-03-2005
pharaonhx pharaonhx is offline
Miembro
 
Registrado: mar 2004
Ubicación: Rep. Dominicana
Posts: 40
Poder: 0
pharaonhx Va por buen camino
Question campo autonumerico en interbase

bueno me explicare lo mejor que puedo haber si alguien me ilumina con este lio

tengo la siguiente tabla en interbase

esta es de ejemplo

CREATE TABLE "PERSONAS"
(
"CLAVEPERSONAS" INTEGER NOT NULL,
"NOMBRE" VARCHAR(40),
"APELLIDO" VARCHAR(40),
"TELEFONO" VARCHAR(10),
"EMAIL" VARCHAR(50),
CONSTRAINT "PK_PERSONAS" PRIMARY KEY ("CLAVEPERSONAS")
);

y tengo un campo llave y no puede estar vacio


en la aplicacion tengo un ibdataset y todos los demas componentes y un navegador para insertar y eliminar los registros


en la base de datos tengo un triggers y un generador

AS
BEGIN
IF (NEW.CLAVEPERSONAS IS NULL) THEN
NEW.CLAVEPERSONAS = GEN_ID(GEN_PERSONAS,1);
END

CREATE GENERATOR GEN_PERSONAS;


el problema es que cuando inserto el registro el campo claveperssonas no se llena ni se incrementa en tonces no puedo guardar el registro porque el campo no puede estar basio y no se que esta mal si alguien puede ayudarme con esto y darme un ejemplo para salir de este lio gracias
Responder Con Cita
  #2  
Antiguo 02-03-2005
repo repo is offline
Miembro
 
Registrado: feb 2004
Posts: 14
Poder: 0
repo Va por buen camino
Deberas asignar en el evento OnNewRecord del DataSet un valor 0 al campo PK, y modificar tu trigger:

AS
BEGIN
IF ((NEW.CLAVEPERSONAS IS NULL)OR(NEW.CLAVEPERSONAS=0)) THEN
NEW.CLAVEPERSONAS = GEN_ID(GEN_PERSONAS,1);
END

el problema es que el valor que le asignara el trigger atraves del generador tu aplicacion no sabra cual es, hasta que no refresques la transaccion.

Saludos

repo
Responder Con Cita
  #3  
Antiguo 02-03-2005
pharaonhx pharaonhx is offline
Miembro
 
Registrado: mar 2004
Ubicación: Rep. Dominicana
Posts: 40
Poder: 0
pharaonhx Va por buen camino
autonumerico en interbase

bueno probe lo que me digeron pero y funciona se incrementa pero ahora no puedo editar los otros campos de la tabla y me da un error cuando trato de editar en ella me dise que el dataset no esta en modo de insercion.
Responder Con Cita
  #4  
Antiguo 02-03-2005
Aztaroth Aztaroth is offline
Miembro
 
Registrado: dic 2003
Ubicación: Matamoros
Posts: 52
Poder: 21
Aztaroth Va por buen camino
Campo Autonumerico

Yo utilizo lo siguiente

1.- ya cuando creas la sentencia sql le dices que no se actualize en el ibdataset

2.- agregas los campos al ibdataset y seleccionas la llave primaria, ahora en la propiedad Required le pones a false, y en la propiedad AutogenerateVale le pones arAutoInc, y en ProviderFlags.pfInkey le pones true

asi cuando insertes un registro a la tabla no te dara ningun problema.

Bueno esa es mi sugerencia no se, si hay alguna otra.
Responder Con Cita
  #5  
Antiguo 02-03-2005
pharaonhx pharaonhx is offline
Miembro
 
Registrado: mar 2004
Ubicación: Rep. Dominicana
Posts: 40
Poder: 0
pharaonhx Va por buen camino
Thumbs up campo autonumerico interbase

beuno gracias a todos por su ayuda siempre me sacan de estos lios
uni todas las soluciones y se resolvio el problema gracias
ok...
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 04:34:31.


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