Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Cómo sumar en una base de datos un número y 1 letra tipo matricula ? (https://www.clubdelphi.com/foros/showthread.php?t=67773)

Master23 05-05-2010 21:04:14

¿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.

ecfisa 06-05-2010 03:03:12

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.

duilioisola 06-05-2010 09:01:56

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.


La franja horaria es GMT +2. Ahora son las 16:43:21.

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