Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   SubString en Procedimiento Almacenado (https://www.clubdelphi.com/foros/showthread.php?t=46085)

rruffino 24-07-2007 02:52:39

SubString en Procedimiento Almacenado
 
Hola amigos del foro. Estoy teniendo un problema. Estoy haciendo un procedimiento almacenado que genera un codigo de barras. Al momento de calcular los digitos verificadores necesito partir 12 strings distintos caracter a caracter y luego realizar una operación matemática. Los caracteres de cada string son numeros, para hacerlo utilizo la udf SUBSTR, pero al correr el sp da error de division por cer, o como si fallo la truncación. Cuando hago el debug del sp no tira ningu error y los calculos son correctos. Aqui les dejo el cofdigo

Código SQL [-]
  longitud=STRLEN(:code);
  dias=1;
  temporal='135793579357935793579357935793579357935793579357935';
  suma=0;
  while(:dias<=:longitud)do
    begin
      char_1=SUBSTR(:code, :dias, :dias);
      char_2=SUBSTR(:temporal, :dias, :dias);
      suma=suma + (Cast(:Char_1 as integer) * Cast(:char_2 as Integer));
      dias=dias+1;
    end

Code y Temporal son las cadenas de texto.

Estoy usando interbase 6.5.
Desde ya muchas gracias y espero sus respuestas.
Saludos, Román.-;)

jhonny 24-07-2007 15:35:34

Por alguna razón creo que cuando envías el parámetro de entrada llamado ":Code" desde la aplicación al procedimiento almacenado, estas incluyendo el carácter que usualmente envían los lectores de codigo de barras al final de la cadena; La mayoría envían por defecto un [TAB] y otros un [ENTER].


Pregunta: ¿En Interbase 6.5 no existe la sentencia substring, como en FireBird 1.5?

Paoti 24-07-2007 16:20:15

El error, ami me paso la semana pasada, y es por que quieres almacenar en una variable o campo un valor mucho más grande que el permitido pro la variable, sea tipo numerico o cadena de texto.




jhonny desconcozco si está la función en interbase, en fb 1_5 sí.

rruffino 28-07-2007 02:00:30

Gracias
 
Es como dices, trato de guardar algo que no alcanza, y no, la udf no esta en interbase. Ya solucione, gracias!!!

jhonny 30-07-2007 15:01:03

Cita:

Empezado por rruffino
Es como dices, trato de guardar algo que no alcanza, y no, la udf no esta en interbase. Ya solucione, gracias!!!

Solo aclarar una cosita, en FireBird Substring no es una UDF, es una sentencia ;)

rastafarey 01-08-2007 18:57:34

Resp
 
El error es division por cero o truncacion de cadena.

Solo hay que leer los errores completos.


La franja horaria es GMT +2. Ahora son las 02:22:43.

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