Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2006
crc2005 crc2005 is offline
Registrado
 
Registrado: sep 2006
Posts: 6
Poder: 0
crc2005 Va por buen camino
Smile Autonumericos

Hoal a todos
Por favor quisiera saber como puedio al darle en el boton nuevo de un form se genere un campo autonumerico solo (Campo cadena de 5 caracteres como maximo y que empiece con la letra U)
ejm:
Primer regsitro A0001
Segundo registro A0002
me lea el anterio y se genere automaticamente el A0003
Saludos
Gracias de antemano
Responder Con Cita
  #2  
Antiguo 20-10-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Bueno, teniendo el valor del campo del registro anterior, puedes hacer algo como esto:

Código Delphi [-]
var
  ValorNuevo: string;
  ParteNumerica: Integer;

begin
  ParteNumerica := StrToInt(Copy(ValorAnterior, 2, 4));
  Inc(ParteNumerica);
  ValorNuevo := Format('A%.4d', [ParteNumerica]) // Esto te devolvería algo como A0003
end;


Saludos...
Responder Con Cita
  #3  
Antiguo 20-10-2006
crc2005 crc2005 is offline
Registrado
 
Registrado: sep 2006
Posts: 6
Poder: 0
crc2005 Va por buen camino
Smile RP. Autonumerico

Cita:
Empezado por maeyanes
Bueno, teniendo el valor del campo del registro anterior, puedes hacer algo como esto:


Código Delphi [-]
var
ValorNuevo: string;
ParteNumerica: Integer;

begin
ParteNumerica := StrToInt(Copy(ValorAnterior, 2, 4));
Inc(ParteNumerica);
ValorNuevo := Format('A%.4d', [ParteNumerica]) // Esto te devolvería algo como A0003
end;






Saludos...
Pero tengo una duda como podria saber cual es el valor anterior
Gracias
Saludos
Carlos
Responder Con Cita
  #4  
Antiguo 20-10-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Lo podrías hacer mediante un query, aquí una función que hace los dos procesos al mismo tiempo:

Código Delphi [-]
function GetKeyValue: string;
var
  ValorAnterior: string;
  ParteNumerica: Integer;

begin
  { Esto depende un poco del tipo de base de datos y los componentes que uses,
  por ejemplo, si es Interbase y usas los IBX sería algo como TIBQuery.Create }
  with TQuery.Create(nil) do
    try
      // Configuras la base de datos
      SQL.Text := 'select max(campokey) from tabla'; // Obtienes el valor mas alto del campo
      Open;
      ValorAnterior := Fields[0].AsString;
      Close
    finally
      free
    end;
  ParteNumerica := StrToInt(Copy(ValorAnterior, 2, 4));
  Inc(ParteNumerica);
  Result := Format('A%.4d', [ParteNumerica])
end;


Saludos...
Responder Con Cita
  #5  
Antiguo 20-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola crc2005
Solo por curiosidad para ti haz esta prueba:
En una aplicacion nueva, coloca 2 edit y un boton, en el evento on click del boton pon:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
  A: String;
  N: Integer;
begin
  A:= Edit1.Text;
  N:= 1;
  Edit2.Text:= Edit1.Text + IntToStr(N);
end;

end.
Ejecutalo, pon en el edit 1 la letra A, y presiona el boton.
Esto no hara lo que necesitas pero te va a dar muchas ideas, en vase a esto podras hacer lo que quieres.
Saludos
Responder Con Cita
  #6  
Antiguo 20-10-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Para que declaras A y le asignas un valor si no la usas en la concatenación?
Responder Con Cita
  #7  
Antiguo 20-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Buen Punto Maestro.
No se necesita.
Saludos
Responder Con Cita
  #8  
Antiguo 23-10-2006
crc2005 crc2005 is offline
Registrado
 
Registrado: sep 2006
Posts: 6
Poder: 0
crc2005 Va por buen camino
Smile RP. Autonumerico

Amigos:
Gracias a todas las ideas resolvi mi problema
Primero cree una Consulta:SQL1
Select max(campokey) from tabla
------
var
ValorAnterior: string;
ParteNumerica: Integer;
begin
En el boton de Nuevo
SQL1.OPEN;
SQL1.SQL.Text := 'select max(campokey) from tabla';
ValorAnterior := Fields[0].AsString;
ParteNumerica := StrToInt(Copy(ValorAnterior, 2, 4));
Inc(ParteNumerica);
Result := Format('A%.4d', [ParteNumerica]);
DBEDIT1.TEXT:=Result;
SQL1.REFRESH;
SQL1.CLOSE;
tabla.insert;
end;
------
En un boton Guardar
tabla.post;
tabla.refresh;
Gracias
Saludos
Carlos
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
InsertRecord con autonumericos Caljim Conexión con bases de datos 5 04-06-2004 11:52:30
Autonumericos NuncaMas Tablas planas 1 14-10-2003 20:15:37
Autonumericos en FireBird jmselesan Firebird e Interbase 2 18-09-2003 16:48:02
Recuperar autonumericos despues de Borrar, Cancelar ,Ect. IcebergDelphi Varios 1 14-05-2003 07:55:02


La franja horaria es GMT +2. Ahora son las 10:55:43.


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