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 19-03-2007
mcalmanovici mcalmanovici is offline
Miembro
 
Registrado: jun 2006
Posts: 78
Poder: 18
mcalmanovici Va por buen camino
Como pasar de string a integer.

Hola gente:
tengo el siguiente problema. Tengo un campo de una tabla que es varchar(30). El mismo tiene letras y números (un ejemplo de este dato sería 'OT21145'). Yo necesito una vez que ya tengo este dato poder quedarme solo con la parte entera del mismo (O sea que quisiera quedarme con el 21145) para poder insertarla en otra tabla. Todo esto lo quiero hacer desde un store procedure desde la base.
Estoy trabajando con el motor de base de datos firebird 1.5.

Desde ya agradezco si alguien sabría contestarme.
Gracias por su tiempo.
Mariano.
Responder Con Cita
  #2  
Antiguo 19-03-2007
Avatar de xavinet
xavinet xavinet is offline
Miembro
 
Registrado: mar 2005
Posts: 41
Poder: 0
xavinet Va por buen camino
SUBSTR de las UDF's

Hola!

Creo que la función substr de las udf's del firebird, te sirve para coger esta parte entera que dices en un procedure.

Suerte!
__________________
________________________________
It's no good shouting at me like that
Responder Con Cita
  #3  
Antiguo 19-03-2007
Alejandro73 Alejandro73 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Valparaiso - CHILE
Posts: 132
Poder: 19
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
  #4  
Antiguo 19-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
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
  #5  
Antiguo 03-04-2007
mcalmanovici mcalmanovici is offline
Miembro
 
Registrado: jun 2006
Posts: 78
Poder: 18
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



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 06:29:22.


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