Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Rellenar con ceros (0) (https://www.clubdelphi.com/foros/showthread.php?t=47491)

egarc 29-08-2007 19:28:02

Rellenar con ceros (0)
 
Buenas Chicos, tengo una consulta que hacerles.

Tengo un campo NroComprobante en una tabla en mi base de datos sql 2005. Lo que quiero es almacenar el número de comprobante y el resto relleno de ceros.

por ejemplo, si el comprobante es el número 1, que se grabe en la tabla 0000001, Si el comprobante en el número 250, que se grabe 00000250

si existe algunas funcion, o alguna forma de hacerlo, por favor se los agradecerá......sin otro particular, se despide......

PD.

GRACIAS ANTICIPADAS

egarc 29-08-2007 19:56:55

Solucion Problema
 
Estuve leyendo en el foro (despues de haber dejado el mensaje):), y encontre la funcion que hace exactamente lo quiero.

Código Delphi [-]
Function FillSpaces(cVar:String;nLen:Integer):String;
 begin
 Result:=StringOfChar('0',nLen - Length(cVar))+cVar;
 end;

y luego para usarla en un boton o en lo que quieras

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit2.Text:= FillSpaces(Edit1.Text, 8);
end;


esto funciona NITIDO, la foma de guardar en VARCHAR, ya que los ceros a la izquierda en un campo numérico no sirven :)

Gracias por leer!!!

José Luis Garcí 29-08-2007 19:57:37

Prueba esta función que uso a menudo, ten encuenta que tipo es el campo, debe ser String

Código Delphi [-]
[//Delvuelve unacadena reyena de ceros al frente
  function ceros(text:string;Cant:integer):string;  //Propia
        EJEMPLO
        a2:=ceros(inttostr(32),4);
        a2 = 0032
}


//Delvuelve unacadena reyena de ceros al frente
function ceros(text:string;Cant:integer):string; //Funcion para rellenar con ceros a la izquierda
var
   valor,x:integer;
   dev,con:string;
begin
   con:='';
   valor:=length(text);
   if valorthen
   begin
        for x:=1 to (cant-valor) do
        begin
            con:=con+'0';
        end;
        dev:=con+text;
   end
   else
   dev:=text;
   result:=dev;
end;

maeyanes 29-08-2007 20:24:06

Otra forma de lograr esto es la función Format:

Código Delphi [-]
function FormatNumber(Number, StrLen: Integer): string;
begin
  Result := Format(Format('%%.%dd', [StrLen]), [Number])
end;

// Ejemplo:
Str := FormatNumber(123, 10); // Str = '0000000123'

Al González 08-10-2012 06:43:56

Cita:

Empezado por maeyanes (Mensaje 226826)
Otra forma de lograr esto es la función Format:
Código Delphi [-]
function FormatNumber(Number, StrLen: Integer): string;
begin
  Result := Format(Format('%%.%dd', [StrLen]), [Number])
end;

Encontré el tema por casualidad y me pareció curiosa la anterior solución, ya que puede conseguirse el mismo resultado con una sola llamada a Format:
Código Delphi [-]
S := Format ('%.*d', [10, 123]);  // S = '0000000123'
Más que nada lo pongo para que se conozca esta alternativa. Habiendo pasado cinco años, seguro que maeyanes ya lo ha de saber. ;)

Saludos. :)

olbeup 08-10-2012 08:42:21

Otra forma de hacerlo es

Código Delphi [-]
FormatFloat('00000000', 250);
El resultado es 00000250

También te puedes crear una función:
Código Delphi [-]
function GetIntToStrZero(Value: Integer): String;
begin
  Result := FormatFloat('00000000', Value);
end;
Ejemplo:
Código Delphi [-]
...
var
 X: String;
begin
  X := GetIntToStrZero(250);
end;

Un saludo.


La franja horaria es GMT +2. Ahora son las 15:54:06.

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