Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-08-2007
egarc egarc is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
egarc Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 29-08-2007
egarc egarc is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
egarc Va por buen camino
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!!!
Responder Con Cita
  #3  
Antiguo 29-08-2007
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 22
José Luis Garcí Va camino a la fama
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;
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #4  
Antiguo 29-08-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
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'
Responder Con Cita
  #5  
Antiguo 08-10-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por maeyanes Ver Mensaje
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.
Responder Con Cita
  #6  
Antiguo 08-10-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
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.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
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
Llenar con ceros a la izquierda una variable string egostar .NET 9 22-08-2007 08:57:19
NULL por Ceros en Interbase BuenaOnda Conexión con bases de datos 3 14-06-2007 11:31:20
Agregar ceros al pincipio de folio jorelivi Varios 14 10-05-2007 17:53:46
Como poner ceros delante de un numero? juliopag1 Firebird e Interbase 4 28-09-2005 01:11:06
Ceros antes de un numero MRSAM Varios 2 24-11-2004 03:24:08


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