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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-04-2007
Avatar de UREÑA
UREÑA UREÑA is offline
Miembro
 
Registrado: feb 2007
Posts: 75
Poder: 18
UREÑA Va por buen camino
Red face como generar un id

hola amigos una vez mas solicitando de su valiosa ayuda

lo que pasa es que tengo una tabla de usuarios con los campos de id_usuario, nombre, contraseña, me gustaria saber como le puedo hacer para generar un id de usuario cada vez que se agregue un usuario a la tabla

gracias un avez mas
Responder Con Cita
  #2  
Antiguo 16-04-2007
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
hola ureña...

debes colocar que base de datos utilizas, porque la mayoria soporta campos incrementales, eso se crea cuando das la estructura de la tabla...ahora si no soporta campos incrementales tu DB. crea una tabla que lleve el conteo, es decir cuando se inserta un registro se le asigna un valor que esta contenido en la otra tabla, y luego se incrementa de tal forma que este listo para la proxima insercion.....bye
Responder Con Cita
  #3  
Antiguo 16-04-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Creo que lo que pide es otra cosa. Supongo que quieres generar un Id de usuario automático y al azar.

Si el campo Usuario es de tipo clave única con eso ya evitarás que se repite algún nombre de usuario.

Puedes utilizar Randomize y luego la función Random, para una clave de seis caracteres puede hacer 6 llamadas a esta función dentro del rango de los números y letras y devolverá claves aleatorias, puedes usar SQL para comprobar si la clave ya existe y entonces llamar a generar otra.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 16-04-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
lo mas facil es obtener el ultimo id e ir incrementando tu el registro y obtienes un id, otra puede ser conseguir una libreria md5 por ejemplo y obtener el md5 del nombre, seria otro id..
Responder Con Cita
  #5  
Antiguo 16-04-2007
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Genereando un Id Inteligente

Hola amigo del FORO
Te cuento que yo utilizo Id como campo clave en la mayoria de las bases de datos que diseños. Esto me permite modificar el resto de los campos sin perder la relacion Master - > Datail que ocurre cuando se utilizas un campo con valores que vos no controlas como campo clave. Es decir, si utilizas algun dato como la edad o algo asi como campo clave, al modificar esta valor y no actualizarlo en las tablas de detalle perdes la relacion y por consiguiente no vas a ver los datos relacionados.
Debido a este motivo tenes dos soluciones.

1) Hacer que tu campo clave sea autonumerico. Lo cual es muy facil, y si manejas bases de datos de escritorios podes desde Acces o el DatabaseDesktop señalar como autoincrementable a tu campo clave

2) Podes escribir un poco de codigo, sin utilizar Sql, sino algo sencillo como el que yo utilizo para que te genere numeros enteros continuos. Es decir que cada vez que insertas un registro, una funcion encuentre un numero unico para cada campo y que sea continuacion del que eliminaste. Es asi. vas a ingresar registros y cada uno llevara como Id valores como 1 2 3 4 5 6, pero si borras el registro "3", te van a quedar 1 2 4 5 6, lo que hace mi codigo es buscar esa falta y rellenarla. Es solo para dar un orden. Aqui va el codigo

Tenes que definir esta funcion en el sector private de tu DataModule


Código Delphi [-] procedure DS_EvolLaboraStateChange(Sender: TObject);
private
{ Private declarations }
ViejoPE, ViejaAL, VijoEP: Double;
FUNCTION ValidIdReg(TOrigen,Tablit: TADOTable; Campo: String):Integer;
.....
....
.....

FUNCTION TDM_BD.ValidIdReg(TOrigen,Tablit: TADOTable; Campo: String):Integer;
Var I: Integer;
begin
{Funcion definida para campos numericos, busca el numero entero inmediato
es para asignar el valor para los campos IdReg, por ejempo}
Tablit.TableName:=TOrigen.TableName;
Tablit.Open;
Tablit.Clone(TOrigen);
I:= 0;
While Tablit.Locate (Campo, I,[loCaseInsensitive]) = True do
begin
I:= I+1;
end;
If Tablit.Locate (Campo, 0,[loCaseInsensitive]) = False then Result:= 0 Else Result:= I;
Tablit.Close;
end;





Luego capturas el evento OnNewRecord de la tabla en la que esta el id
en cuestion y escribis este codigo


Código Delphi [-]
procedure TDM_BD.T_PCTE_NewRecord(DataSet: TDataSet);
begin
F_PCTE.cxDBTextEdit1.SetFocus;
T_PCTE_IdPcte.Value:=ValidIdReg(T_PCTE_, TCtrl, T_PCTE_IdPcte.FieldName);
end;





TDM_BD= TDatamodule donde estan tus objetos
T_PCTE_= Es una TADOTable
T_PCTE_IdPcte= Es el Id del paciente
TCtrl= Es una tabla TADOTable que esta en tu datamodule pero no esta relacionada con ninguna tabla de tu base de datos
La funcion ValidIdReg te devuelve el numero para un Id unico e irrepetible luego de que le pasas como parametro la tabla de origen en la cual reside el campo Id que quieres generar, luego el nombre de la tabla control, que es una tabla ado vacia y el campo id en cuestion de la tabla origen.
Finalmente la funcion clona la tabla origen, es decir realiza un copia de tu tabla original y trata de ver si existe un hueco en la sucesion de numeros id, si es asi te devuelve el necesario para rrellenarlo, sino te genera el siguiente.

Espero que te sirva, y comentame si usas TAdotable, paradox o que sistema de bases de datos estas utilizando. Es totalmente adaptable a paradox el codigo que te mando, pero si lo tuyo es lo mas sencillo con lo que te digo en el primer punto (campos id autoincrementables) es suficiente.
Responder Con Cita
  #6  
Antiguo 17-04-2007
Avatar de UREÑA
UREÑA UREÑA is offline
Miembro
 
Registrado: feb 2007
Posts: 75
Poder: 18
UREÑA Va por buen camino
Red face

hola amigos lo que quiero hacer es mucho mas facil...

solo quiero agregarle un numero consecutivo a cada uno de los registros ya que solo voy a eliminar logicamente por que tengo un campo que me los pone como activo o inactivo segun sea el caso asi es que no hay problema al momento de que queden numeros consecutivos sin usar
Responder Con Cita
  #7  
Antiguo 17-04-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
pues el autoincremento desde la base de datos
o cuando crees un nuevo registro, puedes usar una consulta, que te traiga el maximo +1 para ponerlo en el campo id
Responder Con Cita
  #8  
Antiguo 18-04-2007
Avatar de UREÑA
UREÑA UREÑA is offline
Miembro
 
Registrado: feb 2007
Posts: 75
Poder: 18
UREÑA Va por buen camino
Talking gracias

gracias a todos a los que se tomaron la molestia en ayudarme

ya me quedo

cada vez me gusta mas esto de delphi

salidos!!!
Responder Con Cita
  #9  
Antiguo 17-05-2007
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
Hola Ureña, buscando otra cosa llege a este hilo, no lo lei todo pero hace tiempo encontre una forma sencilla de generar un id para mi db, lo hice generando un formato de fecha y hora que me permite que se cambie permanentemente, porque el tiempo no para..
es el siguiente:
edit1.TEXT:=formatdatetime('yyMMddHHmmsszzz',now);
queda algo asi: 070516221120235
si tenes varias pc en la red puede pasar que en el mismo momento, o sea en el mismo dia a la misma hora en el mismo segundo y en la misma milesima de segundo se duplique el numero pero en ese caso manejate poniendo un un para de digitos unicos para cada Pc
salu2
Responder Con Cita
  #10  
Antiguo 20-05-2007
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Que buena IDEA

Hola ebeltete que buena idea tenes, menos mal que la publicaste en un hilo reciente
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
Como generar reporte en PDF ? martita Impresión 4 24-11-2006 10:14:00
¿Como Generar Ejecutable con BDE? zugazua2001 Varios 4 14-12-2004 23:27:39
como generar un informe ? maruenda Impresión 1 24-11-2004 17:52:24
Como generar esto? nefy SQL 2 02-04-2004 17:34:46
Como generar instaladores Robert Conexión con bases de datos 4 06-08-2003 23:48:15


La franja horaria es GMT +2. Ahora son las 06:33:28.


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