FoxPro/Visual FoxPro - instruccion sql

 
Vista:

instruccion sql

Publicado por marcosr (16 intervenciones) el 24/06/2004 02:16:07
hola a todos, tengo un problema con la instruccion sql:

select cve, descrip, precio, letra(precio), precio*cantidad,;
letra(precio*cantidad);
from mitable

la funcion letra recibe una cantidad y me devuelve su valor en letra, pero el detalle es que siempre me devuelve la misma cantidad independientemente si los valores de entrada cambian, esto es para cada registro, es decir, en las dos llamadas de la funcion me devuelve el mismo valor. Podrian decirme porqué?. de antemano GRacias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:instruccion sql

Publicado por Plinio (7841 intervenciones) el 24/06/2004 14:56:45
Y que contiene esa funcion?
Es posible que el problema sea la funcion. Prueba enviandole distintos parametros desde la linea de comandos a ver que devuelve.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Instruccion sql

Publicado por Evelyn (16 intervenciones) el 24/06/2004 19:43:01
Revisa bien tu funcion amigo, te dare un ejemplito

mira esta es un sentencia SQL que usa la funcion calculo(nValor) que recibe un parametro nValor

SELECT Precio , Thisform.calculo(cantidad) as Cantidad FROM TABLA1

Luego el codigo de la funcion calculo es el siguiente:

*/*************************
LPARAMETER nVALOR
nValor = nValor * 2
Return nValor
*/**************************

Y listo nigun error ocurrio y los resultados fueron distintos para cada registro. si deseas pasame el codigo de tu funcion o la estructura que usas para darte una manita.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CReo que la funcion

Publicado por marcosr (16 intervenciones) el 24/06/2004 21:49:09
Plinio, Evelyn, creo que lafuncion no tienen problema, porque la utilizo en otras partes de programa y funciona bien, pero el problema no es con los registros, perdon me equivoque, es con los campos en los registros, por ejmplo:
si tengo los siguientes registros
cve,cantidad,precio
a, 1, 5.0
b, 2, 6.0
c, 4, 10.0

select cve, mifuncion(cantidad), mifuncion(cantidad*precio) from mitabla

me devuelve:

a, uno, uno
b, dos,dos
c, cuatro,cuatro

y debe devolver

a, uno, cinco
b, dos, doce

Evelyn, en este momento no tengo la funcion aqui, pero en un rato te el envio. En el ejmplo que me das porqué llamas a tu funcion con thisform.?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CReo que la funcion

Publicado por Roman Suazo (2723 intervenciones) el 24/06/2004 23:25:38
Creo que el error esta en como pasas los parametros, es decir, cantidad*precio no es una forma correcta de mandar los parametros, mejor manda la cantidad y precio en parametros separados y haz la multiplicacion adentro de la funcion (por lo menso eso creo que es el problema).

Con respecto a tu ultima pregunta, simplemente porque esta usando un metodo de la actual forma para calcular ciertos datos, no hay ninguna razon en especial.

Mejor pon el codigo de tu funcion en el foro asi te podemos ayudar mejor...


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CReo que la funcion

Publicado por Evelyn (16 intervenciones) el 25/06/2004 00:41:04
Lo del thisform es x que la funcion la cree en un form eso es todo pero eso no tiene mucha importancia.

Hice una tabla con los siguientes tipos de datos

CANTIDAD = numerico
PRECIO = numerico

Aqui los datos de la tabla:

Cantidad Precio
1 1
2 2
1 3

Aqui la sentencia :

SELECT Precio, Cantidad, Thisform.calculo(precio * cantidad) AS ExpCantidad FROM TABLA1

Resultado :

Cantidad Precio ExpCantidad
1 1 Uno
2 2 Cuatro
1 3 Tres

Aqui la funcion Calculo( ) que cambia los numeroa a letras
( algo rapido )

* * * * * * * * * * Funcion Calculo * * * * * * * * * *
LPARAMETER nValor
DO CASE nValor
CASE nValor = 1
cRes = "Uno "
CASE nValor = 2
cRes = "Dos "
CASE nValor = 3
cRes = "Tres "
CASE nValor = 4
cRes = "Cuatro"
ENCASE
RETURN cRes
* * * * * * * * * * * * * * * * * * * *
Al final no me ocurrio ningun error todo me salio bien. espero que esto ayude. no olvides revisar bien bien pero bien tu codigo. chaoooo.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar