Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-08-2012
wull wull is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 30
Poder: 0
wull Va por buen camino
Question Agregar ceros a la izquierda a una variable integer.

Hola a todos veran mi problema es el siguiente:
Tengo un programa conectado a una BD, y en esta tengo un campo llamado folio (de tipo numérico, entero largo) el cual es consecutivo; no lo puse autonumerico porque no pude hacer que me apreciera con el siguiente formato '00001' solo me aparecía '1', pensé que me seria más fácil hacerlo directamente en Delphi declarando una variable 'integer' e irla incrementando en 1 cada vez que se agregara un nuevo registro.
La cuestión es que la función para rellenar con ceros a la izquierda no funciona para 'integer' yo queria hacer algo como esto
Código Delphi [-]
variable:=variable+1;
pero siendo variable de tipo 'string' no puedo incrementar su valor.
Alguien tiene alguna idea de como hacerlo, ya sea desde Acces (ya que no pude cambiar el formato desde ahí) o bien en Delphi... espero no causar muchas molestias, gracias de antemano.
Responder Con Cita
  #2  
Antiguo 23-08-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El campo integer te dara numeros sin ceros a la izquierda, esto en cualquier BD.
Si lo que quieres es simplemente que el usuario vea estos numeros entonces puedes concatenar los ceros.
Lo unico es que si vas a guardar ese numero entonces tendras que usar la funcion replace.
Me parece algo complicado, yo cambiaria por tipo stringi el campo.
saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 23-08-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Comparto con Caral. Si necesitas ese tipo de numeración usaría el campo en string. Cuando necesites hacer el incremento conviertes el valor a entero a través de la función StrToInt, sumas uno, luego lo pasas a string nuevamente ( IntToStr) y agregas los ceros delante del string resultante.

Saludos
Responder Con Cita
  #4  
Antiguo 23-08-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Repasando matemáticas de primer grado:
01 = 1
002 = 2
Por tanto no interesa la cantidad de ceros que pretendas poner a la izquierda. ¡NO VALEN NADA!

En todo caso, a efectos de visualización puedes emplear la propiedad DisplayFormat para indicarle el formato. Otra posibilidad es la de aprovechar el método GetText y SetText del campo en cuestión y darle el formato indicado. Entonces en la base de datos se almacena en forma entera y se deja, exclusivamente, a modo de presentación mostrarlos con los ceros.

La otra posibilidad es cambiar el tipo del campo en la base de datos por un alfanumérico de modo que en vez de almacenar un número se tiene una cadena "0....0x..x". Esto va a requerir que se hagan conversiones de string a número, y viceversa constantemente. Si este campo es una clave primaria o una foránea me parece una pésima elección esta alternativa.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 23-08-2012
wull wull is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 30
Poder: 0
wull Va por buen camino
Exclamation Cosas de formato

Cita:
Empezado por Delphius Ver Mensaje
Repasando matemáticas de primer grado:
01 = 1
002 = 2
Por tanto no interesa la cantidad de ceros que pretendas poner a la izquierda. ¡NO VALEN NADA!

En todo caso, a efectos de visualización puedes emplear la propiedad DisplayFormat para indicarle el formato. Otra posibilidad es la de aprovechar el método GetText y SetText del campo en cuestión y darle el formato indicado. Entonces en la base de datos se almacena en forma entera y se deja, exclusivamente, a modo de presentación mostrarlos con los ceros.

La otra posibilidad es cambiar el tipo del campo en la base de datos por un alfanumérico de modo que en vez de almacenar un número se tiene una cadena "0....0x..x". Esto va a requerir que se hagan conversiones de string a número, y viceversa constantemente. Si este campo es una clave primaria o una foránea me parece una pésima elección esta alternativa.

Saludos,
Ja jaja si ya lo se , no es tanto por la cantidad sino por el formato, ya que al ser un folio pues generalmente usan los ceros a la izquierda; por eso necesito que se vea de esa forma; no se como funciona la propiedad DisplayFormat me podrias orientar como usarla... gracias de antemano.
Responder Con Cita
  #6  
Antiguo 23-08-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
Para poner ceros a la izquierda utiliza el FormatFloat.
Código Delphi [-]
...
var
  Folio: String;
begin
  Folio := FormatFloat('0000', 1);
end;
Cita:
Folio seria ahora "0001"
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
  #7  
Antiguo 23-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por wull Ver Mensaje
...no se como funciona la propiedad DisplayFormat me podrias orientar como usarla...
Hola wull.

Código Delphi [-]
 TIntegerField(DataSet.FieldByName('NOMBRE_DEL_CAMPO')).DisplayFormat := '00000';

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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 rellenar con ceros a la izquierda algun dato uper PHP 1 15-03-2011 19:49:10
Agregar ceros a la izquierda de un consecutivo ingabraham Varios 6 06-07-2010 20:42:12
Agregar Ceros a la Izquierda en Firebird 1.5.x mantrax Firebird e Interbase 2 06-10-2007 19:24:35
Llenar con ceros a la izquierda una variable string egostar .NET 9 22-08-2007 08:57:19
Agregar ceros al pincipio de folio jorelivi Varios 14 10-05-2007 17:53:46


La franja horaria es GMT +2. Ahora son las 08:50:04.


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