Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-09-2003
Avatar de Onti
Onti Onti is offline
Miembro
 
Registrado: jul 2003
Ubicación: La Paz - Bolivia
Posts: 500
Poder: 21
Onti Va por buen camino
Campo autoincremental en Oracle

Hola:

Necesito saber como definir un campo que autoincrmente y como usarlo.

Gracias
Responder Con Cita
  #2  
Antiguo 03-09-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
Puedes crear una secuencia y mediante un trigger "BEFORE INSERT" asignarle el valor de secuencia.nextval al campo que desees. Es una lastima que no se puedan usar secuencias como default value de un campo.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 19-09-2003
ingacg ingacg is offline
Miembro
 
Registrado: may 2003
Ubicación: México D.F.
Posts: 36
Poder: 0
ingacg Va por buen camino
exacto, o bien puedes hacerlo por sql

insert into tabla(campo_incrementable) values (secuencia.nextval)

donde la secuencia la creas con la orden create sequence...
__________________
Alberto C.
Responder Con Cita
  #4  
Antiguo 15-02-2004
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Buen día a todos!

Al hacer esto con DataSet.Post, ¿se mostrará el valor del campo autoincremental en pantalla automáticamente, como sucede con las bases de datos de escritorio?

Pregunto esto porque tengo un caso similar cliente/servidor, donde deseo que después del Post se vea en el DBGrid donde inserté el registro, el valor que obtuvo el campo autoincremental (y que el objeto campo TIntegerField realmente tenga ese valor después del Post).

http://www.clubdelphi.com/foros/showthread.php?t=7408

Muchas gracias.

Al González .
Responder Con Cita
  #5  
Antiguo 21-02-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Hola Al. No habia visto tu pregunta antes, y no veo la relación con el post al que redirigis en el mensaje.

Con relación a tu planteamiento... al obtener el valor de la secuencia en el evento OnPost del dataset tenes la ventaja que no solo es mostrado en pantalla, sino que Delphi - si trabajas con el BDE o con la mayoría de componentes de acceso a datos que se basan en el PK para identificar los registros - podrá refrescar el registro y mantener el puntero del dataset en este.

Si trabajas con datos en cache, existe la posibilidad que se creen huecos en la secuencia (por eso no lo utilizo para numerar documentos legales, por ejemplo), pues aún despues de hacer el Post, el usuario puede "arrepentirse" y cancelar las actualizaciones en el cache.

Espero haber resuelto en algo tu inquietud.

Hasta luego

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 25-02-2004
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile Solucionado con GeneratorField

¡Buen día a todos!

Gracias Antonio.

Lo he solucionado con la propiedad GeneratorField de los IBX. En ella puedo especificar qué generador deseo que se ejecute, para cuál campo y en qué momento.

Lo que pasa es que en un principio creí que por el simple hecho de tener la tabla un generador y un disparador, el valor autoincrementado que asignaba el motor de la base de datos debía mostrarse automáticamente en pantalla después de haber guardado un nuevo registro. Lo cuál después comprendí que no es así, porque el servidor de la base de datos no tiene la obligación de avisar al cliente de esas asignaciones internas. Es hasta la siguiente lectura del registro cuando ya se obtendrá el valor dado al campo por el disparador.

Un abrazo.

Chao.

Al González .
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:22:24.


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