Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2014
ThePhantomAgony ThePhantomAgony is offline
Registrado
NULL
 
Registrado: jun 2014
Posts: 4
Poder: 0
ThePhantomAgony Va por buen camino
Wink Aumentar un folio de tipo string

Hola estoy haciendo un trigger, que se dispare cuando se haga una inserción en una tabla de inventarios(esto desde una aplicación), dicha inserción sera una entrada en el inventario a un almacen1.

El trigger se disparara a partir de esa entrada en el inventario,y generara un movimiento en esa misma tabla pero como salida , bueno hasta ahí ningún problema, en lo que me atore es que esta tabla de inventario asigna un folio de tipo string a dicho movimiento (no me refiero al identificador llave del registro cuyo campo si es un entero), y no se como aumentarlo, es decir si mi ultimo folio es INV1008 el siguiente debe ser INV1009.

Yo se que tengo que separar el numero de la cadena y aumentarlo , pero cómo, o que función puedo usar para saber que lo que estoy substrayendo de ese dato string es un número?
¿O tienen alguna idea para aumentar este folio?

(La base de datos es de un sistema que compramos, por lo cual no puedo cambiar el tipo de dato del campo)

Gracias!!
Responder Con Cita
  #2  
Antiguo 22-07-2014
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
Hola. No sé si has considerado hacerlo desde Delphi, pero en tal caso yo usaría la función ghInc de GHF:
Código Delphi [-]
Uses
  GHFRTL;

...

Begin
  Folio := 'INV1008';
  Folio := ghInc (Folio);  // Folio ahora es 'INV1009'
  Folio := ghInc (Folio);  // Folio ahora es 'INV1010'
Puede que te den otras soluciones, adopta la que sea más viable o adecuada en tu caso.

Un cordial saludo.
Responder Con Cita
  #3  
Antiguo 23-07-2014
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
En Firebird esto lo solucionas mediante SUBSTRNG

Código SQL [-]
/* Asumo que folio contiene el max(folio) */

/* Obtengo los 4 caracteres que queden a partir del 4 caracter */
nro_folio = cast(substring(folio from 4 for 4) as integer);
/* incrementeo el numero */
nro_folio = nro_folio + 1;
/* aqui falta controlar el largo de nro_folio (<10 agregar '000', <100 agregar '00', < 1000 agregar '0') */
folio = 'INV' || nro_folio;
Responder Con Cita
  #4  
Antiguo 23-07-2014
ThePhantomAgony ThePhantomAgony is offline
Registrado
NULL
 
Registrado: jun 2014
Posts: 4
Poder: 0
ThePhantomAgony Va por buen camino
Gracias duiliosola me diste una idea, creo que así ya lo puedo hacer, y pues Al Gonzalez yo se que lo podría programar en una aplicación, pero lo necesito que se haga en automático desde la base de datos.
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
tipo Hwnd y string delphos1942 Varios 3 05-11-2013 21:14:11
Parametros de Tipo String DasGrun OOP 3 19-03-2010 00:17:35
Aumentar espacio entre lineas de un memo sin aumentar tamaño de letra gulder Varios 1 28-10-2008 19:33:51
Convertir State a tipo String Marcela Varios 8 05-10-2006 20:00:38
Longitud maxima de un array tipo string!! cristian_abb Varios 5 25-07-2006 23:53:39


La franja horaria es GMT +2. Ahora son las 00:42:19.


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