Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-03-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
Crear un numero Autoincremental

hola a todos.

la inquietud q tengo es la siguiente.

estoy utilizando una base de datos Oracle la cual esta conectada por medio de un Database, igual un Query unida al database.

ahora la tabla "Configuracion" tiene un campo llamaremos "Campo1" el cual debe ser autoincremental, "campo2", "campo3".

hasta el momento e insertado datos pero ingresandolos directamente en cada campo de la tabla.

lo que quiero es q no toque digitar el "campo1" si no q al momento de querer ingresar uno nuevo digiten solo los datos correspondientes para los compos 2 y 3.

me e enterado q es necesario crear un Generador, un tigger y no se q mas.

pero la cuestion es q no se como ni en q parte hacerlo.

En resumen que el numero se cree y se autoincremente en delphi a medida q se van ingresando datos.

si me pueden explicar como o un tutorial donde hacerlo se les agradeceria.

saludos.
Responder Con Cita
  #2  
Antiguo 14-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bueno en realidad no se en Oracle, en las base de datos buenas hay tigers y esas cosas, pero siempre digo, si no tienes tigres pues hay que usar los gatitos como en access.
Bueno empecemos para que veas que con gatitos se puede hacer sin problemas, lo que haremos sera una sentencia sql que nos indique cual es el ultimo numero insertado y que nos cree el siguiente automáticamente.
Primero se supone que tenemos 3 edits:
Edit1-Campo1 (el que va a ser autoincremental).
Edit2-Campo2
Edit3-Campo3
Bueno, entonces hagamos la faena.
Te aconsejo que pongas un query en el form, lo enlazas con la base de datos y lo dejas asi, supongamos que se llama query1.
Código Delphi [-]
      query1.SQL.Text := 'Select Max(Campo1) From Configuracion';
      query1.Open;
      Edit1.Text  := IntToStr(query1.Fields[0].AsInteger+1);
      query1.Close;
Esto lo puedes poner en cualquier evento, por ejemplo en el evento OnCreate del form o en un botón etc.
Como ves el edit obtendrá el valor del registro mas alto y le sumara uno.
Luego solo tendrás que tomar ese valor y colocarlo en la bd.
Facil, sencillo y con un solo gatito
Saludos
Responder Con Cita
  #3  
Antiguo 14-03-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Creo en oracle se llama campos "identity", vale al googlear un poco sale esto.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 14-03-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
Validar fecha antes de Guardar

Gracias por responder

e probado lo q me dijiste caral y el campo autoincremental sirve generosamente..

ahora tengo el siguiente incomveniente. En mi Base de datos el "Campo2" es de tipo Fecha y dabe ser Unico.

hasta el mometo solo se validar campos de tipo Entero.

para capturar el "Campo2" utilizo un DatetimePicker, lo que me gustaria saber es como podria validar que la fecha q fue ingresa o seleccionada este repetida y si es asi que mande un mensage de error o de advertencia y si no pues q guarde la informacion.

se les agradece de antemano una pronta respuesta.

Saludos.
Responder Con Cita
  #5  
Antiguo 14-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pues de igual forma que el otro, pero se hace una comparacion:
Código Delphi [-]
      query1.SQL.Text := 'Select Campo2 From Configuracion';
      query1.Open;
     if query1.Fields[0].Value = DateToStr(DateTimePicker.Date) then
     begin
     ShowMessage('la fecha esta repetida');
     end
     else
     // lo que quieras que haga
    query1.Close;
saludos
Responder Con Cita
  #6  
Antiguo 14-03-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Una pequeña modificacion si carlos me lo permite:

Código Delphi [-]
      query1.SQL.Text := 'Select Count(Campo2) as cuantos From Configuracion where Campo2 = ' + QuotedStr(DateToStr(DateTimePicker.Date));
      query1.Open;
     if query1.FieldbyName(cuantos).AsInteger >0 then
     begin
     ShowMessage('la fecha esta repetida');
     end
     else
     // lo que quieras que haga
    query1.Close;
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #7  
Antiguo 14-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Desconocía que se puede hacer un conteo de campos date, esta bueno saberlo.
Gracias por el dato.
Saludos
Responder Con Cita
  #8  
Antiguo 14-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Un par de comentarios:

1. Si usan el método del select max(..) deben asegurarse de bloquear la tabla: dos clientes pueden acceder simultáneamente y ver el mismo valor de max. El último en grabar el registro tendrá problemas.

2. Si el campo fecha debe ser único, aun cuando puede pre validarse la existencia de una fecha, es imperativo tene un índice único sobre ese campo para que sea la misma base de datos la que se asegure de que no haya repeticiones.

Bye
Responder Con Cita
  #9  
Antiguo 16-03-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por georgejg Ver Mensaje
hola a todos.

ahora la tabla "Configuracion" tiene un campo llamaremos "Campo1" el cual debe ser autoincremental, "campo2", "campo3".
En oracle los autoincementales no existen, pero tienes a tu disposición las secuencias, que combinadas con un triger, te permiten obtener un Id único para cada registro. Suerte
__________________
Conoce mi blog http://www.edgartec.com
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
campo autoincremental Jheysson13 Varios 8 13-12-2006 22:35:34
Autoincremental Firebird Puche Firebird e Interbase 3 05-08-2006 15:51:10
Modificar AutoIncremental tarco35 Conexión con bases de datos 6 12-04-2005 20:06:23
Como crear un numero de serie pgraciap Varios 5 28-11-2003 16:53:20
Campo autoincremental tarco35 Tablas planas 1 10-11-2003 14:53:25


La franja horaria es GMT +2. Ahora son las 23:52:59.


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