Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ayuda con autogeneracion (https://www.clubdelphi.com/foros/showthread.php?t=57823)

josi 28-06-2008 03:24:49

ayuda con autogeneracion
 
hola

tengo un form que con un adotable para registrar clientess pero nececito que el campo codigocliente se autogenere en este formato '0001' tengo este codigo:

var
id,id2:string;
begin
clientetable1.Last;
clientetable1.Insert;
id:='0001';
if clientetable1.FieldValues['codigo']=null then

clientetable1.FieldValues['codigo']:= id
else
begin
id2:=clientetable1.FieldValues['codigo']+1;
id:='000'+id2;

end;
end;

pero cuando inserto en todos los registro del campo codigo me le inserta el mismo valor '0001' lo que quiero es que me lo vaya generando osea '0001' que el siguiente sea '0002'

gracias........

poliburro 28-06-2008 17:26:04

que motor de base de datos utilizas?

felipe88 28-06-2008 17:43:09

Cita:

Empezado por josi (Mensaje 296914)

Código Delphi [-]
var
id,id2:string;
begin
clientetable1.Last;
clientetable1.Insert;
 id:='0001'; // <--- Aqui
 if clientetable1.FieldValues['codigo']=null then

  clientetable1.FieldValues['codigo']:= id
 else
 begin
 id2:=clientetable1.FieldValues['codigo']+1;
 id:='000'+id2;

end;
end;

Esto lo haces cada que creas uno nuevo :confused:
Ademas, no deberia ser integer ?

josi 29-06-2008 13:59:02

bueno estoy usando acces.

Caral 29-06-2008 17:31:56

Hola
Primero, felipe88 tiene razon, tiene que ser integer.
segundo, si usas este formato 000, cuando llegue a 10 quedara asi 00010, 100 quedara asi 000100 y asi sucesivamente, por lo menos como lo estas haciendo.
Ahora, no se por que la necesidad de los ceros adelante, esto se podria hacer formateando el dato, sin que este en la tabla.
Yo lo haria asi:
Código Delphi [-]
var
 id, id2: integer;
begin
id:= 1;
id2:= id + 1;
clientetable1.Last;
 if clientetable1.FieldValues['codigo']= null then
    clientetable1.FieldValues['codigo']:= id
   else
 begin
    clientetable1.Insert;
    clientetable1.FieldValues['codigo']:= id2
    clientetable1.Post;
Bueno, empecemos por ahi, ya nos diras como te fue.
Saludos

marcoszorrilla 29-06-2008 17:36:53

Yo utilizo algo parecido, pero que conste que el campo es de tipo Texto.

En una tabla guardo el último valor (como Integer), le sumo uno y luego.

Código Delphi [-]
MiTablaMiDat.Value:=FormatFloat('0000', Numero);

Tambien puedes lanzar un Sql:
Código SQL [-]
Select Max(CampoEntero) From MiTabla

Código Delphi [-]
MiTablaMiDat.Value:=FormatFloat('0000', Quer1.Fields[0].AsInteger);


Un Saludo.


La franja horaria es GMT +2. Ahora son las 10:57: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