Clarion - SET y GET

 
Vista:

SET y GET

Publicado por Alej (1 intervención) el 10/08/2007 15:08:27
Hola a todo el foro !
SET y GET son funciones ?
Que diferencia hay en el uso de ellas y en general ?
por ejemplo para buscar un rejistro en un browse.
SET(Org:DptKey,Org:DptKey)
GET(file,key)

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: SET y GET

Publicado por Jose Luis (126 intervenciones) el 10/08/2007 16:41:21
set se usa para procesar un archivo y get para obtener un registro.
Por ejemplo: El siguiente codigo procesa todas las facturas de NumCliente

FAC:NCte = NumCliente
SET(FAC:NCteKey, FAC:NCteKey)
LOOP
NEXT(Facturas)
IF ERRORCODE() THEN BREAK.
IF FAC:NCte <> NumCliente THEN BREAK.
!! otros filtros
!! Aqui se escriben instrucciones para procesar cada registro.
END

El siguiente codigo obtiene una factura especifica.
FAC:NFactura = NumFactura
GET(Facturas, FAC:NFacturaKey)
IF ERRORCODE() = 35 THEN
MESSAGE('Factura no encontrada.')
ELSE
!! se encontro la factura
END
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: SET y GET

Publicado por Alej (1 intervención) el 14/08/2007 14:10:10
Gracias ! pero cual es mejor para buscar, cual es mas rápido ? ambos necesitan para el patrón de busqueda que el campo sea clave ? algo mas se puede decir sobre get y set ?

Gracias !
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: SET y GET

Publicado por Jose Luis (126 intervenciones) el 14/08/2007 15:37:28
Lo que pasa es que la utilidad de cada uno son 2 cosas distintas.
En cuanto a rapidez pues es mas rapido GET porque solo obtienes un registro, claro que necesitaras una llave que sea unica, es decir que sus valores no se repitan. Esto es, con GET no puedes buscar en una llave donde sus valores se repitan por ejemplo; no puedes buscar con GET un numero de cliente en una tabla de facturas porque para un mismo cliente puede haber infinidad de facturas pero si puedes buscar un numero de cliente en un catalogo de clientes porque el numero de clientes deberia ser unico.
SET lo usas cuando buscas un valor que puede repetirse por ejemplo las facturas con total mayor de 5000 en una tabla de facturas, todas las facturas de un cliente, todas las ventas de un vendedor, todas las ventas del dia. Obviamente cada una de estas busquedas deberia ser sobre una llave que contenga los campos en cuestion eso haria mas rapida la busqueda, que tambien puede hacer sobre llaves que no tengan los campos en cuestion pero eso lo haria mas lento.
Ejemplo de esto:
Tenemos las llave FAC:NCteKey que tiene solo el campo NCte, FAC:FcFacturaKey que tiene el campo FcFactura y la llave FAC:NCteFcFacturaKey que tiene los campos NCte y FcFactura.
Si quieres buscar las facturas de un cliente puedes utilizar SET(FAC:NCteKey, FAC:NCteKey) or SET(FAC:NCteFcFacturaKey, FAC:NCteFcFacturaKey) pero no SET(FAC:FcFacturaKey, FAC:FcFacturaKey) porque al utilizar las dos primeras formas puedes posicionarte directamente en el cliente en cuestion pero si utilizas la tercera forma tendrias que procesar por fecha y brincarte las facturas que no sean del cliente que buscas que seria la forma mas lenta pero se podria hacer.
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: SET y GET

Publicado por Alej (1 intervención) el 15/08/2007 14:06:11
Muchas gracias por la información, es muy clara y ya entendí las diferencias sos muy amable ! Dias anteriores hice una consulta sobre FUNCIONES en clarion, te cuento que soy programador y ahora estoy conociendo clarion 6.3 y me surgen algunas dudas.

Donde se definen las funciones en clarion, publicas o privadas, y como controlar los errores sin usar if por ejemplo tiene clarion algún comando especial para ello, como se hace para llamarlas desde cualquier parte de la aplicación, siempre retornan un valor ? que diferencia hay en clarion con los procedimientos ??

muchas gracias
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: SET y GET

Publicado por Jose Luis (126 intervenciones) el 15/08/2007 17:23:38
En clarion traducido al español hay lo que son rutinas (routine) y procedimientos (procedure)

Las rutinas son bloques de codigo definidos con routine. El codigo de las rutinas lo pones con el embed Procedure Routines, estas no llevan parametros ni retornan ningun valor.
Por ejemplo:

Rutina1 routine
data
!! aqui declaras variables locales de la rutina
code
!! aqui va tu codigo

Las rutinas las madas llamar con do
do Rutina1

Los procedimientos son bloques de codigo definidos por procedure. El codigo de los procedimientos lo pones en el embed Local Procedures, estas pueden llevar parametros y/o retornar un valor.

Por ejemplo:

Procedimiento1 procedure(LONG datoLong)
!! datos locales
code
!! aqui va tu codigo
return(valor)

Ahora si necesitas una rutina local que solo va a ser llamada desde este procedimiento entonces la pones justo debajo de donde termina el codigo del procedimiento.

La forma de mandarlo llamar seria
VariableRetorno = Procedimiento1(DatoLong)
o
Procedimiento1(DatoLong) sino necesitas el valor de retorno o si no regresa valor

o
Procedimiento1( ) si no lleva parametros ni regresa valor, todo depende de la definicion del procedimiento.
En procedimientos ademas debes declarar el prototipo del procedimiento en el embed Local Data, Other declarations

Por ejemplo esta es una lista de una declaracion de procedimientos en Local Data, Other declarations

map
Procedimiento1(long), string !! recibe un parametro long, devuelve un string
AgregaProducto !! no recibe ni retorna valores
aPagar(), byte !! retorna un valor byte
ImprimeTicket(long) !! recibe un valor long
end

Entonces el codigo de estos procedimientos debe estar en Local Procedures
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: SET y GET

Publicado por Alej (1 intervención) el 16/08/2007 15:53:08
Muchas gracias Jose Luis, la explicación es muy clara, a ver si entendí, entonces no hay funciones en clarion sino Procedimientos. muchas gracias por la ayuda.

Tus explicaciones son muy importante para el foro, te felicito. saludos hasta pronto !
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