Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-03-2008
Forest Forest is offline
Miembro
 
Registrado: may 2007
Posts: 30
Poder: 0
Forest Va por buen camino
Ayuda con autoincrmentales - SQL Manager Lite 2008 / firebird

Hola, bueno me sucede que tengo mi base de datos creada en Firebird con el SQL Manager Lite 2008 y tengo algunas tablas en las que el campo de la llave principal es un autoincremental, hasta ahí todo bien... o eso creo o.o...

Estoy usando esa base de datos desde Turbo Delphi. La base de datos ya está conectada y ya he guardado algunos registros de prueba sin problemas. El problema está cuando he querido guardar en las tablas con campos autoincrementales, ya que al intentar guardar un nuevo registro me pide que un valor al campo autonumérico, lo que según yo no debería pasar pues se supone que para eso es el autoincremental, para que no tenga yo que especificar el valor manualmente.

Si sirve de algo el código sería algo como:

Código Delphi [-]
DataModule.tabla.insert;
DataModule.tablaDescripcion.value:= wnombre.text;
DataModule.tablaPrecio.value:= strToFloat(wprecio.text);
DataModule.tabla.post;


En teoría el campo "Counter" es decir tablaCounter no debería de especificarlo, pues al ser autoincremental el valor debería generarse automático, pero no lo hace, tengo que agregarlo manualmente, bueno, desde el mismo código pero buscando el ultimo registro y sumándole 1 para así guardar ese valor en el nuevo registro.

Código Delphi [-]
DataModule.tabla.insert;
DataModule.tablaCounter.value:= strToInt(ultimo_registro + 1);
DataModule.tablaDescripcion.value:= wnombre.text;
DataModule.tablaPrecio.value:= strToFloat(wprecio.text);
DataModule.tabla.post;


Y la verdad si no me va a servir de nada tenerlo en autoincremental mejor lo dejaría como un entero normal, pues eso me daría más flexibilidad para manipular los valores de este campo.

Espero me puedan explicar a que se debe que el valor no se esté generando... o no se... si no me expliqué digánme para intentar explicarlo de nuevo.

Yo me imagino que el error pudiera estar en el SQL Manager Lite, en los Triggers o con el Generator para el autoincremental. Pero de eso no se, por eso mismo no los he modificado, es decir, el código SQL que ejecutan es el mismo que el mismo programa generó, que sería este creo:

Código SQL [-]
CREATE TABLE TEMP_VENTA (
  COUNTER INTEGER DEFAULT 0 NOT NULL,
  DESCRIPCION VARCHAR(50) CHARACTER SET WIN1251 COLLATE WIN1251,
  PRECIOUNITARIO NUMERIC(15, 4),
  CANTIDAD SMALLINT,
  PRECIO NUMERIC(15, 4));


ALTER TABLE TEMP_VENTA ADD PRIMARY KEY (COUNTER);


SET TERM ^ ;

CREATE TRIGGER BI_TEMP_VENTA_COUNTER FOR TEMP_VENTA
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
  IF (NEW.COUNTER IS NULL) THEN
      NEW.COUNTER = GEN_ID(TEMP_VENTA_COUNTER_GEN, 1);
END^

SET TERM ; ^

Espero alguien haya entendido mi problema u.u
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
¿Cómo conectan Report Manager con Firebird? axelbb Impresión 4 02-12-2010 21:58:56
Roadmap de firebird 2008 jachguate Noticias 2 24-01-2008 09:42:06
por que tengo un error al conectar BD en sql manager lite... uper Firebird e Interbase 0 01-02-2006 19:38:20
ayuda sobre Report Manager fcobanda Impresión 0 25-08-2004 17:35:24
Ayuda Con el Action Manager edgusano Varios 1 26-07-2004 01:12:21


La franja horaria es GMT +2. Ahora son las 03:59:09.


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