Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-05-2010
Master23 Master23 is offline
Miembro
 
Registrado: feb 2010
Posts: 113
Poder: 15
Master23 Va por buen camino
¿Cómo sumar en una base de datos un número y 1 letra tipo matricula ?

Es decir tengo un software que genera códigos de los artículos pero quiero poner un ejemplo A-0001 pero es obvio que no se puede sumar un integer y string son incompatibles , cómo realizo eso es que. lo que en verdad quiero es que cada vez que venda un artículo suba un número de factura si el anterior era A-0001 entonces se le sume 1 al anterior A-0002 será el siguiente y así sucesivamente
cómo hago para unir letras y números y a la ves sumarle esto es en una base de datos , yo anteriormente usaba el autoincrement pero es un problema ya que comienza desde 1 y no puedo ponerle letras . gracias de ante mano.
Responder Con Cita
  #2  
Antiguo 06-05-2010
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
Hola Master23.

Tal como pones en el post no creo que se pueda incrementar códigos alfanuméricos desde la base de datos con un autoincremental.

Se me ocurre que lo podrías solucionar utilizando un campo alfanumérico y hacer el incremento por código antes de guardar.

Te pongo un ejemplo simple de como podrías implementarlo: (acorde al código de tu post)
Código:
function ProximoCodigo(CodAnt: string): string; // CodAnt= código leído de la BD
const
  NDIGIT = 5;  // parte numérica
  NCHAR = 3;  // parte alfanum.
var
  Prox: Integer;
begin
  // parte numerica + 1
  Prox:= StrToInt(Copy(CodAnt,NCHAR,Length(CodAnt)))+1;  
 // completar con ceros 
  Result:= Copy('00000',1,NDIGIT-Length(IntToStr(Prox)))+IntToStr(Prox); 
 // componer el código nuevamente
  Result:= 'A-'+Result;  
end;
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-05-2010 a las 03:14:49.
Responder Con Cita
  #3  
Antiguo 06-05-2010
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Supongo que la letra es la serie de facturación.
Yo te sugiero tener separados los valores en dos campos.

Serie, Numero, resto_de_campos

Con esto solo deberás incrementar el número para la siguiente factura. Al imprimir, solo tienes que concatenarlos.

También puedes tener un campo calclulado que sea Serie+'-'+Numero dentro de la base de datos (no se que que base trabajas) pero creo que casi todas lo permiten.

Una tercera opción es hacerlo dentro de la base.
Yo conozco Firebird: existe la función substr que es similar al copy de delphi. Esto te servirá para pedir los últimos 5 números del campo, incrementarlo y luego concatenarlo.
El resto de bases de seguramente tienen algo parecido.
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
¿cómo aumentar el número de factura en una base de datos paradox ? Master23 Varios 2 09-04-2010 00:42:26
como puedo cambiar la fuente de Delphi - tipo de letra micky mouse Varios 6 07-03-2008 02:26:12
Como convertir numero entero en letra kurono Varios 2 23-01-2008 05:10:39
Convertir datos DBEdit tipo $ a numero destrukthor Varios 12 26-06-2006 16:35:51


La franja horaria es GMT +2. Ahora son las 13:14:40.


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