12.176 cursos gratis
8.738.894 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

Introducción a CrystalReport

Autor: michael cofre
Curso:
10/10 (2 opiniones) |5576 alumnos|Fecha publicación: 16/04/2007
Envía un mensaje al autor

Capítulo 5:

 Operadores y variables

Introducción

Este capítulo trata en profundidad todos los operadores de Crystal Reports.

Los operadores son símbolos o palabras especiales que describen una operación o una acción que se va a realizar entre dos o más valores. Los operadores se usan en las fórmulas. Crystal Reports lee los operadores de una fórmula y realiza las acciones especificadas.

Este capítulo explica en profundidad cada operador. La lista de operadores está ordenada alfabéticamente.

Nota   Los operadores de Crystal Reports (Equal, In string, etc.) distinguen entre minúsculas y mayúsculas. Por ello, "ABC" no es igual a "abc", "abc" no está en la cadena "ABCDEF", etc.

Suma (+) Uso

x + y
«Suma los valores x e y.»

Ejemplo(s)

5 + 6
{file.QTY1} + {file.QTY2}

«Devuelve 1487, donde Qty1 = 366 y Qty2 = 1121.»

{file.AMT1} + {file.AMT2} + {file.AMT3} +      {file.AMT4}

«Devuelve 20, donde Amt1 = 2, Amt2 = 4, Amt3 = 6, Amt4 = 8.»

{file.CLASS1} + 25

«Devuelve 37, donde Class1 = 12.»

Date(1991,04,15) + 12

«Devuelve Apr 27 91»

Y (and) Uso

x and y
·     False and False = False
·     False and True = False
·     True and False = False
·     True and True = True

Ejemplo(s)

If {file.CREDIT LIMIT} = 5000 And  
{file.SALESMAN} = "SP" Then  
   {file.AMOUNT}
Else  
   0;

«Si el límite de crédito es 5000 y el representante de ventas es SP (ambas condiciones son verdaderas), entonces se devuelve el valor del campo Amount. De lo contrario, se devuelve cero.»

A > B and B > C

«Devuelve TRUE, donde A = 10, B = 6 y C = 3 (ambas condiciones son verdaderas).»

A > B and B > C

«Devuelve FALSE, donde A =10, B =6 y C =7 (sólo una de las dos condiciones es verdadera).»

(A>B) and (A*C-D>E) and (E/D<=B)

«Devuelve TRUE, donde A = 7, B = 5, C = 3, D = 2, E = 10 (las tres condiciones son verdaderas).»

Asignación (:=) Uso

x := n

«Asigna el valor n a la variable x. (x tiene que estar previamente declarada en la misma fórmula.)»

Ejemplo(s)

Amount := 0

«Inicializa (pone a cero) la variable Amount.»

Amount := 100

«Asigna el valor 100 a la variable Amount.»

Amount := Amount + {detail.QTY}

«Asigna el resultado de un cálculo a la variable Amount. El cálculo agrega el valor del campo de cantidad ({detail.QTY}) al valor actual de la variable Amount.»

Amount := {detail.QTY1} + {detail.QTY2} +      {detail.QTY3

«Calcula el total de los tres campos de cantidad y asigna este total a la variable Amount.»

Customer := "Westside Motors"

«Asigna la cadena "Westside Motors" a la variable Customer.»

Customer := TrimRight({customer.FIRST NAME}) + " "    + {customer.LAST NAME}

«Elimina los espacios en blanco a la derecha del campo de nombre {customer.FIRST NAME}, agrega un espacio en blanco, concatena el campo de apellido {customer.LAST NAME} y asigna el valor concatenado de ambos campos a la variable Customer.»

Customer:= "Sr. " + {customer.LAST NAME}

«Concatena la cadena "Sr. " con el valor del campo de apellido {customer.LAST NAME} y asigna el valor concatenado a la variable Customer.»

Amount := 100; Customer := "Westside Motors"

«Asigna la constante 100 a la variable numérica Amount y asigna la cadena "Westside Motors" a la variable de cadena Customer. Puede asignar valores a múltiples variables si separa las instrucciones de asignación con signos de punto y coma.»

Comentario (//) Uso

// texto

«El texto que figura a la derecha del operador es un comentario; no se trata como parte de la fórmula y no se imprime.»

Ejemplo(s)

{file.SALES} - {file.COST}
// calcula el beneficio bruto

«{file.SALES} - {file.COST} es la fórmula; el Editor de fórmulas pasa por alto todo lo demás.»

({file.SALES} - {file.QUOTA}) * .06
//calcula la comisión de ventas

«({file.SALES} - {file.QUOTA}) * .06 es la fórmula; el Editor de fórmulas pasa por alto todo lo demás.»

// A continuación aparece
// una fórmula. Observe que cuando
// forzamos un salto de línea debemos
// comenzar la siguiente línea con un
// operador de comentario
If {file.COST} > {file.SELLPRICE} Then
   "Loss"
Else  
   "";
//Eso era una fórmula

«Todas las líneas que aparecen como comentarios antes y después de la fórmula se pasan por alto.»

Concatenación (+) Uso
x + y
«Concatena (conecta) la cadena x a la cadena y para crear una única cadena contigua.»Ejemplo(s)

"Pan " + "y " + "mantequilla"

«Devuelve "Pan y mantequilla".»

"Su número de cliente es " + ({customer.CUSTOMER      ID}) + " y la persona de contacto de la empresa es " +    ({customer.FIRST NAME}) + "."

«Devuelve "Su número de cliente es 64 y la persona de contacto de la empresa es Benito.", donde CustomerID = 64 y First Name = Benito.»

División (/) Uso

x/y
«Divide el valor x entre el valor y.»

Ejemplo(s)

25/5
«Devuelve 5.»
1/3
«Devuelve .33333.»
{file.SALES} / {file.FORECAST}

«Devuelve .875, donde Sales = 52533, Forecast = 60000.»

{file.DAYSDUE} / 5

«Devuelve 22, donde DaysDue = 110.»

Nota   Si el denominador = 0, el informe se verá detenido por una advertencia de división por cero. Si desea evitar este problema, debe incluir una comprobación de este tipo:

If {file.FORECAST} = 0 Then
   0
Else
   {file.SALES} / {file.FORECAST}

Igual (=) Uso

x = y
«x es igual a y.»

El operador Equal pide a Crystal Reports que evalúe una expresión (x=y) y devuelva TRUE (si x es igual a y) o FALSE (si x no es igual a y).

Ejemplo(s)

{file.QUANTITY} = 3

«True, por tener Quantity el valor 3.»

{file.QUANTITY} = 3

«False, en todas las demás situaciones posibles.»

{file.YTD} = {file.LAST YEAR YTD}

«True, donde el valor del campo YTD idéntico al valor del campo Last Year YTD.»

{file.YTD} = {file.LAST YEAR YTD}

«False, en todas las demás situaciones posibles.»

({file.SALES} - {file.COGS}) = 22,554

«True, donde Sales = 109,986 y COGS = 87,332.»

({file.SALES} - {file.COGS}) = 22,654

«False, en todas las demás situaciones posibles.»

{customer.LAST NAME} = "Johnson"

«True, donde la cadena de texto del campo Last Name es Johnson.»

{customer.LAST NAME} = "Johnson"

«False, en todas las demás situaciones posibles.»

Mayor que (>) Uso

x > y
«x es mayor que y.»

Ejemplo(s)

{file.WEIGHT} > 200

«False, donde Weight = 150, Weight = 199 o Weight = 200.»

{file.WEIGHT} > 200

«True, donde Weight = 400 o Weight = 201.»

{file.COST} > {file.PRICE}

«True, donde Cost = 350 y Price = 325.»

Mayor o igual que (>=) Uso

x >= y

«x es mayor o igual que y.»

Ejemplo(s)

{file.WEIGHT} >= 200

«False, donde Weight = 150 o Weight = 199.»

{file.WEIGHT} >= 200

«True, donde Weight = 400, Weight = 200 o Weight = 201.»

{file.COST} >= {file.PRICE}

«False, donde Cost = 350, Price = 400.»

If-Then-Else Uso

If x Then y Else z

«Si x es verdadero, entonces (Then) realiza y. Si x no es verdadero, entonces (Else) realiza z.»

Ejemplo(s)

If {customer.POSTAL CODE} <= "49999" Then
   "Etiqueta azul"
Else
   "Tierra";

«Asigna el modo de transporte en función de la distancia al remitente.»

If ToNumber({file.ITEM}) >= 2500 And
ToNumber({file.ITEM}) < 2600 Then
   "Estacional"
Else
   "";

«La instrucción If incluye un operador And.»

If {file.COUNT} >= 25 Then
   {file.DISTRIBUTOR} * {file.COUNT}
Else
   {file.DEALER} * {file.COUNT};

«Dependiendo de la cantidad pedida se elige la lista de precios que se va a usar.»

If {file.ONHAND} > 10 Then
   {file.ORDERED}
Else
   If {file.ORDERED} < 5 Then
      {file.ORDERED}
   Else
      2;

«Asignación basada en la cantidad pedida mediante instrucciones If-Then-Else anidadas.»

En matriz (in) Uso

x in [y]

«¿Está x en la matriz y?»

Ejemplo(s)

{customer.REGION} in ["CA","HI","AK"]

«¿Está el valor del campo Region entre las abreviaturas que figuran entre corchetes?»

{file.COLOR} in ["Rojo","Blanco","Azul"]

«¿Está el valor del campo Color en la matriz de colores que figura entre corchetes?»

DayofWeek({orders.ORDER DATE}) in [2,4,6]

«¿Figura el valor del campo Order Date, una vez convertido a un número que representa el día de la semana, entre la matriz de números que aparece entre corchetes? (Domingo = 1, Sábado = 7)»

En intervalo (in) Uso

x in y

«Prueba un intervalo de valores (y) para ver si un valor (x) se encuentra dentro del intervalo especificado.»

Ejemplo(s)

Today in Date(1990,09,01) to Date(1990,09,20)

«True, donde Today = September 15, 1990.»

Today in Date(1990,09,01) to Date(1990,09,20)

«False, donde Today = September 21, 1990.»

{file.QTY} in {file.ONHAND} to ({file.BACKORDER} +    {file.ONORDER})

«True, donde Qty=20, OnHand=10, Backorder=5, OnOrder=25. (¿Está 20 dentro del intervalo que comienza con 10 y termina con la suma de 5 y 25?)»

{file.QTY} in {file.ONHAND} to ({file.BACKORDER} +    {file.ONORDER})

«False, donde Qty=31, OnHand=10, Backorder=5, OnOrder=25. (¿Está 31 en el intervalo que comienza con 10 y termina con la suma de 5 y 25?)»

En cadena (in) Uso

x in y

«Comprueba si la cadena x está en la cadena y.»

Ejemplo(s)

"Elm" in {customer.ADDRESS1}

«True, donde Address es 1335 Elm Street.»

"elm" in {customer.ADDRESS1}

«False, donde Address es 1335 Elmer Street.»

"elm" in {file.MOTTO}

«False, donde Motto = "Sienta más energía".»

(La terminación "ta" de "sienta" y el comienzo "m" de la palabra "más" están separados por un espacio en blanco que también cuenta como un elemento.)

"el m" in {file.MOTTO}

«True, donde Motto = "Sienta más energía".»

(Esta vez, la cadena de búsqueda "ta m" contiene el espacio en blanco entre la a y la m, por lo que sí se produce la coincidencia.)

Nota   El operador "in" también puede usarse para probar la presencia de una cadena dentro de un intervalo de texto (por ejemplo, "V5B" in "V0A" to "V9Z").

Menor que (<) Uso

x < y

«x es menor que y.»

El operador menor que pide al Editor de fórmulas que evalúe una expresión (x < y) y devuelva TRUE (si x es menor que y) o FALSE (si x es igual o mayor que y).

Ejemplo(s)

{file.WEIGHT} < 200

«True, donde Weight = 150 o Weight = 199.»

{file.WEIGHT} < 200

«False, donde Weight = 200 o Weight = 400.»

{file.COST} < {file.PRICE}

«True, donde Cost = 350 y Price = 400.»

{file.COST} < {file.PRICE}

«False, donde Cost=350 y Price=350, o donde Cost=350 y Price=325.»

Menor o igual que (<=) Uso

x <= y

«x es menor o igual que y.»

Ejemplo(s)

{file.WEIGHT} <= 200

«True, donde Weight = 150, Weight = 200 o Weight = 199.»

{file.WEIGHT} <= 200

«False, donde Weight = 400.»

{file.COST} <= {file.PRICE}

«True, donde Cost=350, Price=400, o donde Cost=350 y Price=350.»

{file.COST} <= {file.PRICE}

«False, donde Cost = 350 y Price = 325.»

Like Uso

x like y

{file.FIELD} like "c?n*"

«Este operador comprueba si el contenido de {file.FIELD} coincide con el modelo especificado en la cadena de caracteres "c?n*". Si el contenido del campo coincide con el modelo "c?n*", la fórmula devuelve el valor True. Si el campo comienza con cualquier otra cosa, la fórmula devuelve False.

Puede usar los caracteres comodín ? y * para tener en cuenta caracteres variables. El símbolo ? representa un único carácter, mientras que el símbolo * representa cualquier número de caracteres.»

Ejemplo(s)

{customer.FIRST NAME} like "D?n"

«True, donde {customer.FIRST NAME} es Dan o Don.»

{customer.FIRST NAME} like "D?n"

«False, donde {customer.FIRST NAME} es Doug o Rick.»

{customer.LAST NAME} like "*s?n*"

«True, donde {customer.LAST NAME} es Johnson, Olson u Olsen.»

{customer.LAST NAME} like "*s?n*"

«False, donde {customer.LAST NAME} es Johnston o Smith.»

Crear matriz ([,]) Uso

[x, y, z,...n]

«Construye una matriz con los elementos x, y, z, ... n.»

Ejemplo(s)

[100,200,300,400]
[{file.QTYA}, {file.QTYB}, {file.QTYC}]
[({file.AMT1} *.5),({file.AMT2} *.5), ({file.AMT3} .25)]
[500,({file.QTY} /3)]

Nota   No puede tener más de un tipo de datos en una matriz.

Establecer intervalo (to) Uso

x to y

«Establece el intervalo desde x hasta y.»

Ejemplo(s)

100.00 to 250.00

«El intervalo de valores numéricos consecutivos comenzando con 100.00 y finalizando con 250.00, incluyendo los valores inicial y final.»

Date(1990,09,01) to Date(1990,09,20)

«El intervalo de fechas consecutivas que comienza el 1 de septiembre de 1990 y termina el 20 de septiembre de 1990. El 1 de septiembre y el 20 de septiembre están ambos incluidos en el intervalo.»

"Aaron" to "Lusk"

«El intervalo de valores de cadena consecutivos que empieza con Aaron y termina con Lusk, incluyendo los valores inicial y final.»

Multiplicar (*) Uso

x * y

«Multiplica el valor x por el valor y.»

Ejemplo(s)

2883 * 1999

«Devuelve 5,763,117.»

{file.EXMPT} * 356.00

«Devuelve, 152,012, donde Exmpt = 427.»

Negar (-()) Uso

(-(x))

«Multiplica el valor del interior del paréntesis por -1.»

Ejemplo(s)

-(-1)

«Devuelve 1; negativo por negativo = positivo.»

-(1)

«Devuelve -1; negativo por positivo = negativo.»

-({file.QTYONHND})

«Devuelve 144, donde QtyOnHnd = -144.»

-(-(15-18))

«Devuelve -3; 15-18 = -3, -(-3)= +3, -(+3)= -3»

No (not) Uso

Not (x)

«Invierte el valor True o False de x.»
·     Not (True) = False
·     Not (False) = True
·     Not (Not(False)) = False
·     Not (Not(True)) = True

Ejemplo(s)

not (A > B and B > C)

«Si A = 5, B = 4, C = 3, la expresión (A > B and B > C) es TRUE. Las dos condiciones unidas por el operador booleano And son TRUE. Por ello, la instrucción completa tiene un valor TRUE. El operador Not cambia el valor de la expresión a FALSE.»

not (A > B and B > C)

«Si A = 3, B = 4, C = 3, la expresión (A > B and B > C) es FALSE. Una de las dos condiciones unidas por el operador booleano And es FALSE. El operador Not cambia el valor de la expresión a TRUE.»

not ({file.ONHAND} - {file.ORDER} > 0) = TRUE

«Donde OnHand = 10 y Order = 11.»

not ({file.ONHAND} - {file.ORDER} > 0) = FALSE

«Donde OnHand = 10 y Order = 9.»

No igual (<>) Uso

x <> y

«x no es igual a y.»

El operador No igual pide a Crystal Reports que evalúe la expresión (x<>y) y devuelva TRUE(si x no es igual a y) o FALSE(si x es igual a y).

Ejemplo(s)

{order.ORDER AMOUNT} <> 400

«True, donde Amount es 200 o Amount es 401, etc.»

{order.ORDER AMOUNT} <> 400

«False, donde Amount es 400.»

{file.DAY} <> "Jueves"

«True, donde Day = Viernes.»

{file.DAY} <> "Jueves"

«False, donde Day = Jueves.»

{file.ONHAND} <> 0

«True, donde el valor de OnHand es 10.»

{file.ONHAND} <> 0

«False, donde el valor de OnHand es 0.»

{file.AVAILABLE} - {file.USED} <> 10

«True, donde el valor del campo Available menos el valor del campo Used es diferente a 10.»

{file.AVAILABLE} - {file.USED} <> 10

«False, cuando devuelve un valor igual a 10.»

O (or) Uso

x or y

«x, y o ambos son verdaderos.»
·     False or False = False
·     False or True = True
·     True or False = True
·     True or True = True

Ejemplo(s)

If {file.CREDIT LIMIT} = 5000 or {file.SALESMAN} = "SP" Then
   {file.AMOUNT}
Else
   0

«Esto significa que en caso de que el límite de crédito sea 5000 o el representante de ventas sea SP (cualquiera de las dos condiciones sea verdadera) se devuelve el valor del campo Amount; de lo contrario no se devuelve nada.»

A > B or B > C

«True, donde A = 10, B = 6 y C = 3 (ambas condiciones son TRUE).»

A > B or B > C

«False, donde A = 5, B = 6 y C = 7 (ninguna de las dos condiciones es TRUE).»

(A > B) or (A * C - D > E) or (E / D <= B)

«True, donde A = 5, B = 5, C = 3, D = 2, E = 12. Al menos una de las tres condiciones es verdadera. En este caso, únicamente una de las condiciones (A * C - D > E) es verdadera.»

Paréntesis (()) Uso

(x + y) * z

«Realiza primero los cálculos del interior del paréntesis.»

Los paréntesis se usan para controlar el orden en el que el Editor de fórmulas calcula una fórmula.

Ejemplo(s)

8 + 6 * 3 - 6 / 2 = 23
(8 + 6) * 3 - 6 / 2 = 39
(8 + 6) * (3 - 6 / 2) = 0
(8 + 6 * 3 - 6) / 2 = 10
{file.SALES} - {file.COGS} - {file.T&E} *.8

«Devuelve 11,800, donde Sales = 25,000, COGS = 12,000 y T&E = 1500.»

{file.SALES}-(({file.COGS}-{file.T&E}) *.8)

«Devuelve 16,600, donde Sales = 25,000, COGS = 12,000 y T&E = 1500.»

({file.SALES} - {file.COGS} - {file.T&E}) *.8

«Devuelve 9200, donde Sales = 25,000, COGS = 12,000 y T&E = 1500.»

Porcentaje (%) Uso

x % y

«Calcula el valor x como porcentaje del valor y [(x / y) * 100].»

Ejemplo(s)

Balance outstanding % Credit Limit calcula el porcentaje que representa Balance Outstanding del valor Credit Limit.

{file.BALANCE OUTSTANDING} %
{file.CREDIT LIMIT}

«Devuelve 30.00, donde Balance outstanding = $1500 y Credit Limit = $5000.»

Amount % Credit Limit calcula el porcentaje que representa el valor Amount del valor de Credit Limit.

{file.AMOUNT} % {file.CREDIT LIMIT}

«Devuelve 32.26, donde Amount =2257.87 y Credit Limit =7000.»

Nota   Si el denominador = 0, el informe se verá detenido por una advertencia de división por cero. Si desea evitar este problema, debe incluir una comprobación de este tipo:

If {file.FORECAST} = 0 Then
   0
Else
   {file.SALES} % {file.FORECAST}

startswith Uso

x startswith y

{file.FIELD} startswith "abc"

«Este operador analiza el contenido de {file.FIELD} para ver si comienza con la cadena de caracteres especificada: "abc". Si el contenido de una campo comienza con la cadena especificada, la fórmula devuelve el valor True. Si el campo comienza con cualquier otra cosa, la fórmula devuelve False.»

Ejemplo(s)

{customer.CUSTOMER NAME} startswith "A"

«True, donde {customer.CUSTOMER NAME} = ABC Inc.»

{customer.CUSTOMER NAME} startswith "XYZ"

«False, donde {customer.CUSTOMER NAME} = ABC Inc.»

Separador de instrucciones (;) Uso

1 + 1; "abc";

«1 + 1 y "abc" son dos instrucciones de fórmula diferentes, dentro de una instrucción de múltiples fórmulas. El punto y coma que hay entre ambas instrucciones especifica dónde termina una instrucción y dónde comienza la siguiente. Sin el punto y coma las instrucciones se tratarían como una única instrucción.»

Subíndice ([ ]) Uso

x[y]

«Extrae el elemento y de la cadena x.»

x[y to z]

«Extrae el intervalo de elementos y to z de la cadena x.»

x[n]

«Extrae el elemento n de la matriz x.»

Nota   El intervalo de los subíndices tiene su origen en 1; comienza en 1 en vez de en 0

Los subíndices se usan para extraer uno o más caracteres de una cadena de texto o para extraer un elemento de una matriz.

Ejemplo(s)

[100,233,466,998][3]

«Devuelve 466; 466 es el tercer elemento de la matriz.»

LASTNAME [1]

«Devuelve S, donde Last Name = Smith.»

Postal Code [6]

«Devuelve V, donde Postal Code = T5A 9V2 (el espacio entre A y 9 también cuenta como un elemento).»

{customer.POSTAL CODE} [5 to 7]

«Devuelve 9V2, donde Postal Code = T5A 9V2.»

{file.ITEMNUMBER} [4 to 5]

«Devuelve 40, donde ItemNumber es A1/4020/B10.»

Resta (-) Uso

x-y

«Resta el valor y del valor x.»

Ejemplo(s)

244 - 112

«Devuelve 132.»

{file.SALES} - {file.COGS} - {file.S&A}

«Devuelve 214,972, donde Sales = 455,031, COGS = 188,213 y S&A = 51,846.»

{file.ONHAND} - 877

«Devuelve 114, donde OnHand = 991.»

Date(1991,04,15) - 12

«Devuelve Apr 03 91.»

A moneda ($) Uso

$x

«Convierte el número x al formato de moneda.»

Ejemplo(s)

En los ejemplos siguientes se supone el formato siguiente: posiciones decimales = (1.00), signo negativo = (345.00-), símbolo de moneda = (flotante), separador de miles = (1,000.00).

$12345678

«Devuelve $12,345,678.00.»

$(123 * 456)

«Devuelve $56,088.00.»

$({file.QUANTITY} * 3)

«Devuelve $42.00, donde Quantity = 14.»

$({file.MILES} * {file.PLEDGE})

«Devuelve $363.35, donde Miles = 169 y Pledge = 2.15.»

Nota   $ * $ = error. No puede multiplicar un dólar por un dólar.

Declaradores de variables Uso

·     NumberVar x;
·     CurrencyVar x;
·     StringVar x;
·     BooleanVar x;
·     DateVar x;
«Declara una variable x que puede contener datos del tipo correspondiente al declarador de variables usado.»

Ejemplo(s)

NumberVar Amount;
«Declara una variable llamada Amount que puede contener cualquier valor de tipo de datos entero o decimal.»

BooleanVar Outstanding;
«Declara una variable llamada Outstanding que puede contener un valor TRUE o FALSE.»

StringVar LastName := "Adams";
«Declara una variable llamada LastName que puede contener un valor de cadena y asigna la cadena "Adams" a esa variable.»

Capítulo siguiente - El control ActiveX de Crystal
Capítulo anterior - Funciones

Nuestras novedades en tu e-mail

Escribe tu e-mail:



MailxMail tratará tus datos para realizar acciones promocionales (vía email y/o teléfono).
En la política de privacidad conocerás tu derechos y gestionarás la baja.

Cursos similares a Introducción a CrystalReport



  • Vídeo
  • Alumnos
  • Valoración
  • Cursos
1. Manual DataReport
Este curso, pretende dar unas nociones generales sobre la creación de informes con... [27/12/04]
14.178  
2. Introducción a Linux
Linux es un sistema operativo de descarga gratuita que se creo a principios de los... [11/04/03]
50.168  
3. Introducción al GPS
GPS es el acrónimo de Global Positioning System (sistema global de... [01/12/04]
16.631  

¿Qué es mailxmail.com?|ISSN: 1699-4914|Ayuda
Publicidad|Condiciones legales de mailxmail