Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-03-2007
Alejandro73 Alejandro73 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Valparaiso - CHILE
Posts: 139
Poder: 21
Alejandro73 Va por buen camino
Prueba con este codigo

Hola yo utilizo la siguiente funcion

Declaracion
Function QuitarLetras(cadena: String):String;

Detalle de la Funcion
Function QuitarLetras(cadena: string): string;
var
i: integer;
begin
for i := 1 to Length(cadena) do
if cadena[i] in ['0'..'9'] then
Result := Result + cadena[i];
end;

Llamada
QuitarLetras(ubicciondelstring)

Esto te dejara solo los numeros, pero como string, tienes luego que utilizar la instruccion para pasar de strin a integer.

Espero te sirva.

Saludos

Alejandro
Valparaiso - CHILE
__________________
Los muertos en CRISTO de sus tumbas volveran y los que vivimos en las nubes nos levantara .......
Responder Con Cita
  #2  
Antiguo 19-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 23
RONPABLO Va por buen camino
Código SQL [-]
SET TERM ^^ ;
CREATE PROCEDURE P_MAX_CON_LETRAS returns (
  FACTURA VarChar(30),
  NUMERO Integer)
AS
DECLARE VARIABLE c char(1);
DECLARE VARIABLE cadena varchar(30);
DECLARE VARIABLE cadena1 varchar(30);
DECLARE VARIABLE CIFRAS1 integer;
DECLARE VARIABLE i integer;
DECLARE VARIABLE j integer;
DECLARE VARIABLE  AUMENTAR Integer;
DECLARE VARIABLE  CIFRAS Integer;
DECLARE VARIABLE  LETRA VarChar(4);
begin
  /* code */
  for select AUMENTAR, CIFRAS, LETRA from T_CIFRAS
  into :AUMENTAR, :CIFRAS, :LETRA do
  begin
  if (aumentar is null) then
    aumentar = 0;
  if (CIFRAS is null) then
    CIFRAS = 1;
  for select FACTURA from T_DEFINICION_TRATAMIENTO where FACTURA is not null into
  :FACTURA
  do
  begin
     CIFRAS1= CIFRAS;
     cadena = '0';
     numero=0;
     j=1;
     i = strlen(:FACTURA);
     while(j<=i) do
        begin
          c = substr(FACTURA,j,j);
          if (c between '0' and '9') then
             begin
                cadena = cadena || cast(:c as integer);
             end
          else
             cadena1 = substr(FACTURA,1,j);
          j=j+1;
        end
     numero = cast(cadena as integer) + aumentar;
     IF ((CIFRAS1 < i) and (CIFRAS < 2)) then
        CIFRAS1 = i;
     if ((letra is not null) and (letra <> '') and (letra <> ' ') and (letra <> '    ')) then
        cadena1 = letra;
     FACTURA = cadena1 || lpad(cast(numero as varchar(30)),cifras1,'0');
     suspend;
  end
  end
end
^^
SET TERM ; ^^

con el anterior sp lo que hago es obtener un consecutivo de una factura la cual puede tener letras y el numero entero que se ve sin las letras algo aasi

con la ultima factura generada y guardada en la bd con el valor PA0045 después de ejecutar el SP el valor Factura del SP sera PA0046 y el numero sera 46
Responder Con Cita
  #3  
Antiguo 03-04-2007
mcalmanovici mcalmanovici is offline
Miembro
 
Registrado: jun 2006
Posts: 78
Poder: 21
mcalmanovici Va por buen camino
Tema solucionado - Gracias.

Gente:
muchas gracias por la data. Me sirvio un montón la información que me suministraron. Lo pude hacer de una forma muy parecida a la que me dijo RONPABLO.
Mi código del procedure quitar letras quedó así.

DECLARE VARIABLE cont integer;
DECLARE VARIABLE longitudCadena integer;
DECLARE VARIABLE num varchar (1);
DECLARE VARIABLE CADENA_DE_NUMEROS varchar (30);

begin
/* code */
/*Me quedo con la longitud de la cadena que me mandaron*/
longitudCadena = strlen (CADENA);
/*Inicializo el contador para recorrer la cadena*/
cont = 1;
/*Inicializo la cadena en la cual voy a guardar los números de la orden de trabajo*/
CADENA_DE_NUMEROS = '';
/*Recorro la cadena*/
while (cont <= longitudCadena) do
begin
/*me quedo con la letra que se encuentra en la posición cont*/
num = substr(CADENA,cont,cont);
if (num between '0' and '9') then /*si la letra esta dentro de 0 a 9*/
CADENA_DE_NUMEROS = CADENA_DE_NUMEROS || num; /*concateno los números a los que ya tenía*/
cont = cont + 1; /*avanzo a la próxima letra*/
end
/*paso la cadena de letras a un número entero*/
NUMERO = cast(CADENA_DE_NUMEROS as integer);
end

Última edición por mcalmanovici fecha: 03-04-2007 a las 18:28:14.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 pasar un String a SOAPElement ku9 JAVA 0 16-06-2006 11:42:21
Pasar de string a integer o viceversa. ¿Es posible? Kamikaze Varios 5 07-07-2005 15:44:57
¿Como pasar de String a Integer? astur_racing JAVA 5 13-01-2005 18:58:18
Como Convertir un dato Integer ó Float a String en FireBird???? AGAG4 Firebird e Interbase 8 04-12-2004 02:59:47
Pasar String a Integer ramonibk Varios 12 09-09-2004 17:20:20


La franja horaria es GMT +2. Ahora son las 14:21:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi