jueves, 7 de noviembre de 2019

Progress 4gl función ACCUM, SQL función SUM

Hola amigos programadores, esta semana les quiero platicar acerca de una función en Progress 4gl que es ACCUM, esta función es un similar a SUM de SQL. Lo que hacen ambas funciones es consolidar la suma de un campo que cumpla ciertas características.


Por ejemplo si quieren saber el total de Venta facturada por un cliente, la sentencia en SQL es:



SELECT SUM(ih_invoicetotal) , ih_bill                                           
 FROM ih_hist                                                                   
 WHERE ih_domain = 'dominio'                                                    
 AND YEAR(ih_inv_date) =  2019                                                  
 GROUP BY  ih_bill   
 

El mismo ejemplo pero con sentencia de Progress 4gl es:




FOR EACH ih_hist WHERE ih_domain = 'dominio'
                               AND YEAR(ih_inv_date) = 2019      NO-LOCK                                                   BREAK BY ih_bill:                                                           
ACCUMULATE ih_invoicetotal (TOTAL BY ih_bill).                                  
IF LAST-OF(ih_hist.ih_bill) THEN                                          
   DISPLAY  ACCUM TOTAL BY ih_bil ih_invoicetotal ih_bill.                                                            
END.                                               

Como se ve en las imágenes el resultado es el mismo. Las funciones que utilizamos de Progress fueron:

  • ACCUMULATE : Esta opción nos permite ir sumando o accumulando el valor de una variable de nuestra tabla

https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/dvref/accum-function.html                                   

  • TOTAL BY:  Nos indica porque campo vamos a consolidar o agrupar el total, ademas del total, también puede utilizarse  AVERAGE, COUNT, MAXIMUM,MINIMUM,
  • ACCUM TOTAL BY: Para poder mostrar el total en pantalla utilizamos esta sentencia
  • LAST-OF: Indicamos al query que cuanto termine de recorrer todos los registros que coincidan con un tipo se detenga, también existe la opción de FIRST-OF 


  • BREAK BY: Le decimos al query que vaya buscando y agrupando por un campo en la tabla de  nuestra base de datos


Como anecdota cuando yo comencé aprender Progress, buscaba como hacer las consultas en SQL pero en Progress, esto para entender la lógica primero antes de programarlo, ahora pienso la lógica independientemente del lenguaje de programación que es como debería de ser cuando programamos primero pensar el algoritmo y luego traducirlo a un lenguaje de programación.

jueves, 31 de octubre de 2019

Macro de Excel para utilizar Vlookup o Buscarv

Hola amigos, bienvenidos a un nuevo post de nuestro blog de programación para todos.

La mayoría utilizamos Excel en nuestros trabajos y una de las funciones mas utilizadas es el Vlookup o el BuscarV que hace la maravillosa actividad de buscar un dato en una tabla y en base a un indice podemos obtener otra columna de la tabla, esto sirve mucho para cruzar información o simplemente para validar si un valor de una tabla esta en otra tabla.


Como siempre buscamos hacer las cosas más rápido y ser los mejores en nuestra aldea Godín, les quiero compartir un ejemplo de una Macro que cuenta con:

La primer hoja tiene una lista de Productos a vender 



En la segunda Hoja tiene los pedidos de los clientes con su código de cliente y el item del pedido, la cantidad pedida, fecha de la venta


Lo que va hacer nuestra Macro es en la primer hoja nos calcule la cantidad total vendida por cada item y el monto total de venta

Antes de ver el programa, les explico como habilitar la pantalla de desarrollo de software en Excel

Configurar Excel para Macros

  • Habilitar Pestaña de Desarrollo
  1. En la pestaña archivo , vaya a Opciones> personalizar la cinta de opciones.
  2. En Personalizar la cinta de opciones y Pestañas principales, active la casilla Programador.
  • Presionamos las teclas Alt + F11 al mismo tiempo, deben ver una pantalla así:


Una vez, teniendo estos requisitos podemos empezar con la magia :) 

Código de la Macro

Private Sub CommandButton1_Click()
Dim Fila As Long
Dim Fila2 As Long
Dim Col As Integer
Col = 3 ' columna C
Fila = 4

'coloca montos totales en hoja2
Do While Sheet2.Cells(Fila, "B") <> ""
    Call vlookup_data(Sheet2.Cells(Fila, "B").Value, Col, Fila)
    Fila = Fila + 1
Loop

Fila = 3
'consolidado de venta
Do While Sheet1.Cells(Fila, "A") <> ""
    Fila2 = 4
    Do While Sheet2.Cells(Fila2, "B") <> ""
       If Sheet2.Cells(Fila2, "B") = Sheet1.Cells(Fila, "A") Then
          'sumamos las cantidades vendidas por item
          Sheet1.Cells(Fila, "D") = Sheet1.Cells(Fila, "D") + Sheet2.Cells(Fila2, "C")
          'sumamos lo montos
          Sheet1.Cells(Fila, "E") = Sheet1.Cells(Fila, "E") + Sheet2.Cells(Fila2, "E")
       End If
       Fila2 = Fila2 + 1
    Loop
    
Fila = Fila + 1
Loop
End Sub

Sub vlookup_data(val_look As String, val_col As Integer, val_fila As Long)
Dim resultado As Long
Dim temp_col As Integer

resultado = 0

On Error Resume Next
 resultado = Application.WorksheetFunction.VLookup(val_look, Sheet1.Range("A3:C10"), val_col, False)
 If Err.Number <> 0 Then
 End If

On Error GoTo 0  ''
If Err.Number = 0 Then
 Sheet2.Cells(val_fila, "E").Value = Sheet2.Cells(val_fila, "C").Value * resultado
End If
End Sub


Ejecución de la Macro

Para mostrarles como se va ejecutando la Macro, en la pantalla donde esta nuestro programa podemos marcar los renglones donde queremos que se detenga , dando doble click del lado izquierdo sobre la parte izquierda y se coloca un punto rojo 

En la primera parte busca en cada linea de la hoja 2 y busca el precio que le corresponde en la primer hoja
En el siguiente paso nos va ir sumando por cada item la cantidad total vendida y la el monto total



Al final en nuestra primer hoja tendremos los datos consolidados 



Este es un ejemplo pero puede utilizar o ajustar el programa a sus necesidades, espero les haya gustado este post y nos compartan. Recuerden si no saben que es Vlookup  o quieren aprender nuevas funciones de Excel, contacten a Debite


Les dejo las ligas de otras macros en nuestro blog





miércoles, 23 de octubre de 2019

Ejemplos de paginas web dinámica con ASP

Bienvenidos a programacionparatodos.com


Esta semana vamos a conocer otro lenguaje de programación que es ASP (Active Server Pages ) que es de la familia de Microsoft es plataforma Cliente/Servidor y que permite crear páginas WEB dinámicas, utiliza un servicio conocido como IIS o (Internet Information Services) fue creado en 1996.
Cuando ven paginas WEB que terminan en .aspx es que están desarrolladas con este lenguaje.

Páginas  que por ejemplo utilizan ASP


Igual hay mucho trabajo para este software por ejemplo les dejó las siguientes vacantes 



Para seguir con el formato del blog, les quiero compartir un programa de ejemplo, pero he de decirles que es la primera vez que programo en ASP , ya que no lo había hecho antes, me tomo 1 semana terminar el ejemplo porque primero no entendía muy bien la generación del proyecto en Visual Studio y como hacer la invocación de los programas, como enviar los datos, esto porque existen muchas formas de hacerlo:

Como dice el dicho cada quien decide como matar a una mosca, si con un periódico o con un cañón. 
Yo trate con todos esos casos, hasta que decidí irme por lo más simple para mi que fue hacer el programa como el ejemplo de PHP del calculo de la Hipotenusa, utilizando un FORM y un programa ASP que me devolviera el resultado. 
Les comparto mi experiencia cuando inicio con un nuevo lenguaje de programación:
  1. Primero leer acerca del lenguaje a utilizar: saber cual es su arquitectura, que software se requiere para programarlo, hacer un ejemplo sencillo, como escribir en pantalla "HOLA MUNDO" que es el clásico en la programación. En este caso entre a la documentación oficial de Microsoft https://dotnet.microsoft.com/apps/aspnet.
  2. Aprender como llamar funciones o utilizar librerías, operaciones matemáticas es lo primero que busco. Por ejemplo vi la pagina https://www.w3schools.com/asp.
  3. Saber como introducir datos al programa, saber como enviar datos a otro programa o como compartir variables
  4. Como hacer la conversión de tipos de datos, por ejemplo de carácter a entero o viceversa, ver el manejo de fechas
  5. En mi caso busco similitudes con algún otro lenguaje que ya conozca para que mi cerebro comience a entender la lógica
No es una guía documentada o un estándar, pero es lo que me ha funcionado por 20 años, espero a ustedes les sea de utilidad. La programación es como hablar otro idioma entre mas sofisticado le queramos hablar a las computadoras, mas sofisticada sera la respuesta, cuando hablan otro idioma mientras adquieren vocabulario lo que hacemos es hablar lo más simple, bueno en la programación hagan siempre eso, busquen las soluciones más simples 

Ejemplo de ASP 

Para hacer un ejemplo , necesitamos instalar Visual Studio Comunity 2019 (gratuito) y seleccionamos create a new project ASP



El objetivo de nuestro ejemplo sera calcular el apotema de un polígono regular, este dato nos sirve para calcular el área de dicho polígono regular (los lados tiene la misma medida)

Para este ejercicio vamos a crear 2 archivos, 1 que es la página principal donde ingresaremos los datos y enviaremos por medio de un formulario los valores ingresados por los usuarios, este programa es el HTMLPag1.html y las variables son Num1 y Num2.
El segundo programa Apotemamaind.cshtml es el que hace el calculo matemático y muestra el resultado por medio de la función apotema, para ello utilice las funciones SQRT  que es la raíz cuadrada y POW que es la potencia.

Programas

HTMLPag1.html


<!DOCTYPE html>


<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>"Calcular Apotema"</title>
</head>
<body>
    <p>Es un segmento donde los extremos son el centro del polígono regular y el punto medio de cualquiera de sus lados.</p>
    <p><img src="Apotema.jpg">
    <p>La apotema de un polígono regular es la menor distancia entre el centro y uno de sus lados.</p>
    Largo
    <form action="Apotemaind.cshtml" method="post">
        <p><input id="Text1" type="text" title="Radio" name="Num1" value="10" /></p>
        Numero de Lados
        <p><input id="Text2" type="text" title="Numero de Lados del Poligono" name="Num2" value="6" /></p>
        <input id="Button1" type="submit" value="submit" />
    </form>
    <div>
    </div>
</body>
</html>


Apotemamaind.cshtml


@Model Class1
@{
    Layout = null;
}
@functions{
    public string apotema()
    {
        string number = Request.Form["Num1"];
        string number2 = Request.Form["Num2"];
        double resultado = Math.Sqrt(Math.Pow(Convert.ToDouble(number), 2) - Math.Pow((Convert.ToDouble(number2) / 2), 2));
        return "Apotema = " + resultado;
    }
    public string texto() { return "hola"; }

}

<!DOCTYPE html>

<html>
<body>
    <p>Es un segmento donde los extremos son el centro del polígono regular y el punto medio de cualquiera de sus lados.</p>
    <p><img src="Apotema.jpg" /></p>
    
    @apotema()
</body>
</html>




Cuando probemos nuestra aplicación iremos a la siguiente ruta, https://localhost:44393/  , que quizá hayan oído chistes o visto en memes, no hay lugar como localhost , esto es porque muchas veces probamos en nuestros equipos y todo funciona a la maravilla, pero al publicarlos en Internet podemos tener fallas por por ejemplo llamar a una imagen dentro de la ruta de nuestra PC, la cual no existe en el servidor donde publiquemos los programas.
Les comparto algunos memes. 



Como se ve nuestro sitio




Configuraciones Previas


Colocar en el archivo Webconfig la bandera 

 <add key="webpages:Enabled" value="true"/>


Indicar cual es el home de nuestro proyecto o la pagina inicial



Ejecución del programa

En esta pantalla después de ingresar los datos nos despliega el resultado de calcular el apotema.



Comparación ASP vs PHP


ASP es como PHP , desde mi punto de vistas la principal diferencia es que para uno hay que pagar licencia y para el otro no, ASP al ser de Microsoft tiene un costo y PHP es gratuito al igual que la instalación del servidor ya que utiliza LAMP  o XAMP (Servidores Linux o Unix) lo que también hace más rápido a PHP, la portabilidad de PHP es mejor, porque ASP solo pude utilizarse en plataforma Windows. Claro habrá quien difiera en esto, estaría bien que alguien nos diera su punto de vista acerca de esta comparación.



Dejen sus comentarios, dudas,sugerencias y comparta-nos :=)

Entrada destacada

Como Programar HTML,Como crear página WEB, HTML para principiantes

Hola programadores Esta semana voy a escribir acerca de como programar con HTML (HyperText Markup Language) , el cual es un lenguaje ...