Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Ogramar

Páginas: [1]
1
Buenas, este sería un código de ejemplo para ejecutar una macro invocándola desde Visual Basic. Este código habría que adaptarlo a la versión de Visual Basic con que se esté trabajando, y cambiar el nombre test por el nombre que tenga la macro. En el código se puede hacer que el excel se visualice manteniendo Excel.Visible = True o bien que no se visualice eliminando esta línea.

Código: [Seleccionar]
Private Sub Command1_Click() 
    Dim ret As Boolean 
    ' le pasa la ruta del libro y el nombre de la macro _ 
    NOTA: Si la macro tiene parámetros, pasarlos al método Run, _ 
    por ejemplo: Excel.Run "NombreMacro","Param1","Param2", ..etc.... 
     
    ret = Ejecutar("c:\Libro1.xls", "test") 
     
    If ret Then 
       MsgBox "OK", vbInformation 'OK 
    End If 
End Sub 
 
Private Sub Form_Load() 
    Command1.Caption = "Ejecutar Macro" 
End Sub 
 
Function Ejecutar(Libro As String, _ 
                  Macro As String) As Boolean 
 
 
On Error GoTo Error_function 
 
Dim Excel As Object 
    'Nueva Referencia al Excel 
    Set Excel = CreateObject("Excel.Application") 
    Excel.Visible = True ' opcional 
    With Excel 
        .Application.workbooks.open Libro ' abre el libro 
        .Run (Macro) ' ejecuta la macro 
    End With 
 
    ' descarga la referencia 
    Set Excel = Nothing 
    Ejecutar = True ' OK 
 
Exit Function 
 
Error_function: 
' elimina la referencia 
If Not Excel Is Nothing Then Set Excel = Nothing 
' mensaje de error 
If Err Then 
   MsgBox Err.Description, vbCritical 
End If 
End Function 


Macro de ejemplo que va escribiendo valores desde la celda 1 hasta la 10 , luego se guarda el libro y se cierra

Código: [Seleccionar]
    Sub test() 
     
    Dim i As Integer 
     
    ' escribe algunos datos en las celdas 
    For i = 1 To 10 
        Cells(i, 1) = Cells(i, 1) + i 
    Next 
     
     
    ' guarda y cierra este libro 
        ActiveWorkbook.Save 
        Excel.Application.Quit 


Salu2

2
Buenas, es posible que el anterior post lo "desapareciera" yo. Normalmente vamos revisando los posts para comprobar que cumplen lo indicado en el hilo de Indicaciones para escribir en los foros: https://aprenderaprogramar.com/foros/index.php?topic=1460.0
Si no se cumple, bien advertimos, bien ponemos un mensaje y borramos, bien corregimos. El problema está por ejemplo con usuarios que repiten los posts en varios foros, o que ponen mensajes ilegibles. En este caso, en este hilo el título es inadecuado porque no describe de qué trata el tema. En este caso ya nos encargaremos de corregirlo nosotros. No obstante le pido a theseap que lea el hilo y ponga títulos adecuados y siga el resto de indicaciones cuando publique en los foros, ya que en caso contrario podrían eliminarse sus mensajes. Salu2

3
Este código sirve para visualizar un reloj cronómetro con cuenta atrás que puede detenerse o resetearse en cualquier momento:

Código: [Seleccionar]
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class StopwatchGUI3 extends JFrame {

    private static final long serialVersionUID = 3545053785228009472L;

    // GUI Components
    private JPanel panel;
    private JLabel timeLabel;

    private JPanel buttonPanel;
    private JButton startButton;
    private JButton resetButton;
    private JButton stopButton;

    // Properties of Program.
    private byte centiseconds = 0;
    private byte seconds = 30;
    private short minutes = 0;

    private DecimalFormat timeFormatter;

    private Timer timer;

    public StopwatchGUI3() {
        panel = new JPanel();
        panel.setLayout(new BorderLayout());

        timeLabel = new JLabel();
        timeLabel.setFont(new Font("Consolas", Font.PLAIN, 13));
        timeLabel.setHorizontalAlignment(JLabel.CENTER);
        panel.add(timeLabel);

        buttonPanel = new JPanel();
        buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER));

        startButton = new JButton("Start");
        startButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                timer.start();

            }
        });
        buttonPanel.add(startButton);

        resetButton = new JButton("Reset");
        resetButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                timer.stop();

                centiseconds = 0;
                seconds = 30;
                minutes = 0;

                timeLabel.setText(timeFormatter.format(minutes) + ":"
                        + timeFormatter.format(seconds) + "."
                        + timeFormatter.format(centiseconds));
            }
        });

        buttonPanel.add(resetButton);

        stopButton = new JButton("Stop");
        stopButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                timer.stop();
            }
        });

        buttonPanel.add(stopButton);

        panel.add(buttonPanel, BorderLayout.SOUTH);

        timeFormatter = new DecimalFormat("00");

        timer = new Timer(10, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (centiseconds > 0) {
                    centiseconds--;
                } else {
                    if (seconds == 0 && minutes == 0) {
                        timer.stop();
                    } else if (seconds > 0) {
                        seconds--;
                        centiseconds = 99;
                    } else if (minutes > 0) {
                        minutes--;
                        seconds = 59;
                        centiseconds = 99;
                    }
                }
                timeLabel.setText(timeFormatter.format(minutes) + ":"
                        + timeFormatter.format(seconds) + "."
                        + timeFormatter.format(centiseconds));
            }
        });

        timeLabel.setText(timeFormatter.format(minutes) + ":"
                + timeFormatter.format(seconds) + "."
                + timeFormatter.format(centiseconds));

        add(panel);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setTitle("StopwatchGUI.java");

        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                new StopwatchGUI3();
            }
        });
    }
}

Salu2

4
Hola

InputStream es una clase abstracta public abstract class InputStream con un método read() previsto para leer un byte de a cada vez desde un fichero

BufferedInputStream no es abstracta, es una clase concreta, por tanto puedes crear instancias de esta clase. Su método read devuelve un byte de a cada vez pero mantiene un buffer donde va acumulando los bytes internamente.

La clave en las clases que comienzan con Buffered es que usan un buffer, digamos que una memoria interna que normalmente hace que esas clases sean más eficientes, es decir, es esperable que BufferedInputStream sea más rápida que las otras implementaciones de InputStream. La idea sería: un InputStream normal tiene que estar llamando y accediendo al sistema operativo para cada byte que quiera devolver y esto consume cpu y es ineficiente. En cambio un BufferedInputStream llama al sistema operativo una vez y recolecta un array de bytes. Cuando se le pide read() ya no tiene que acceder al sistema operativo, sino que devuelve la información de su buffer interno. En algún momento el buffer interno se agota, pero mientras esto ocurre se han ahorrado un montón de procesos.

Salu2

5
Ejemplo 1: creamos una estructura student que nos permite almacenar los datos de un estudiante. y en el main creamos una variable record de tipo student.

Código: [Seleccionar]
#include <stdio.h>
#include <string.h>

struct student
{
           int id;
           char name[20];
           float percentage;
};

int main()
{
           struct student record = {0}; //Initializing to null

           record.id=1;
           strcpy(record.name, "Raju");
           record.percentage = 86.5;

           printf(" Id is: %d \n", record.id);
           printf(" Name is: %s \n", record.name);
           printf(" Percentage is: %f \n", record.percentage);
           return 0;
}


Ejemplo 2: creamos el tipo de dato y al mismo tiempo declaramos

Código: [Seleccionar]
#include <stdio.h>
#include <string.h>

struct student
{
            int id;
            char name[20];
            float percentage;
} record;

int main()
{

            record.id=1;
            strcpy(record.name, "Raju");
            record.percentage = 86.5;

            printf(" Id is: %d \n", record.id);
            printf(" Name is: %s \n", record.name);
            printf(" Percentage is: %f \n", record.percentage);
            return 0;
}





Ejemplo 3: creamos el tipo de dato y un array de elementos

Código: [Seleccionar]
#include <stdio.h>
#include <string.h>

struct student
{
     int id;
     char name[30];
     float percentage;
};

int main()
{
     int i;
     struct student record[2];

     // 1st student's record
     record[0].id=1;
     strcpy(record[0].name, "Raju");
     record[0].percentage = 86.5;

     // 2nd student's record         
     record[1].id=2;
     strcpy(record[1].name, "Surendren");
     record[1].percentage = 90.5;

     // 3rd student's record
     record[2].id=3;
     strcpy(record[2].name, "Thiyagu");
     record[2].percentage = 81.5;

     for(i=0; i<3; i++)
     {
         printf("     Records of STUDENT : %d \n", i+1);
         printf(" Id is: %d \n", record[i].id);
         printf(" Name is: %s \n", record[i].name);
         printf(" Percentage is: %f\n\n",record[i].percentage);
     }
     return 0;
}

6
Hoola!

Con el código que indico más abajo se pueden leer los datos de un archivo excel y mostrarlos sobre un datagridview con Visual Basic

Para que funcione hay que escribir bien la ruta (C:\ejemplo.xlsx puede ser otra) y el nombre de la hoja (en vez de [Hoja1$] puede ser [Productos$] o como se llame)


Código: [Seleccionar]
Imports System.Data.OleDb
Imports System.IO

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim objConn As OleDbConnection
        Dim oleDA As OleDbDataAdapter
        Dim ds As DataSet
        Dim FileName As String
        FileName = "C:\ejemplo.xlsx"

        Try
            'Create a OLEDB connection for Excel file
            Dim connectionString As String = "Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & FileName & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1"""
            objConn = New OleDbConnection(connectionString)
            oleDA = New OleDbDataAdapter("select * from [Hoja1$]", objConn)
            ds = New DataSet()
            'Fill the Data Set
            oleDA.Fill(ds)
            'Set DataSource of DataGridView
            DataGridView1.DataSource = ds.Tables(0)
            ds.Dispose()
            oleDA.Dispose()
            objConn.Dispose()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
 
    End Sub

End Class

Salu2!

7
Este código Java permite recorrer recursivamente una lista (o cualquier otra colección análoga) sin usar bucles tradicionales (for, while, etc.)

Normalmente será preferible un recorrido con un iterador, bucle for tradicional, etc. pero en ocasiones nos puede interesar operar recursivamente.

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Arrays;

public class recorridoRecursivo {
    //Recorrido recursivo ejemplo aprenderaprogramar.com

    public static void recorridoRecursivo (ArrayList<Integer> lista, int indiceActual) {
        if (indiceActual == lista.size()-1) { System.out.println ("Ultimo elemento..."+lista.get(indiceActual)); }
        else {
            System.out.println("Leyendo... " + lista.get(indiceActual));
            recorridoRecursivo(lista, indiceActual+1);
        }       
    }

    public static int numeroDeSietes (ArrayList<Integer> lista, int indiceActual, int contador) {
        if(lista.get(indiceActual) == 7) {contador= contador+1;}

        if (indiceActual == lista.size()-1) { return contador;     }

        else { return numeroDeSietes(lista, indiceActual+1, contador);    }         
    }

    public static void main (String[] args) {
        Integer [] listado = {3, 4, 1, 7, 3, 5, 7, 9, 4, 7}    ;
        ArrayList <Integer> listadoNumeros = new ArrayList<Integer> (Arrays.asList(listado));

        System.out.println ("listadoNumeros contiene " + listadoNumeros);
        System.out.println ("RECORRIDO SIN BUCLES (RECURSIVO)");
        recorridoRecursivo(listadoNumeros, 0);
        System.out.println ("RECORRIDO SIN BUCLES (RECURSIVO) CONTANDO ELEMENTOS QUE CUMPLEN UNA CONDICIÓN");
        System.out.println ("El número de sietes en la lista es " + numeroDeSietes (listadoNumeros, 0, 0));
    }
}

8
En base a lo que ha comentado Camilo voy a dar algunas opiniones (tener en cuenta que se trata de opiniones, no de "verdades") sobre el posicionamiento SEO en joomla y en general para cualquier página web. Me voy a referir a google principalmente porque es quien acapara la operativa de búsquedas en muchos países, pero también sería extensible a cualquier buscador.

- Hace unos cuantos años los buscadores trabajaban en base a algoritmos "tontos". Por decir algo, medían en cuántas páginas de tu sitio aparecía una palabra clave, medían cuántos sitios externos tenían un link a tu sitio... y el resultado era que si el algoritmo decía que tenías una buena posición, aparecías en las primeras posiciones en los resultados de búsqueda.

- Hace unos cuantos años que esto empezó a cambiar. Los ingenieros de google se dieron cuenta de que la gente lo que hacía era preparar sus webs para que el algoritmo les pusiera buena puntuación y aparecer sus webs en los primeros lugares. A raíz de esto empezaron a introducir restricciones que no hacían tan fácil obtener puntuación. Por ejemplo no bastaba con tener un link desde un sitio externo, ahora había que ver si ese sitio externo tenía buena puntuación o no era un sitio dedicado a simplemente colgar links para aumentar la posición de otras webs.

- Con los años los buscadores han desarrollado una meta-inteligencia. Ya no basta con obtener buenas puntuaciones en cosas medibles. Ahora hay más factores, de modo que cada vez se asemejan más al comportamiento que tendría un humano a la hora de clasificar los resultados de búsquedas. Por ejemplo, un aspecto a tener en cuenta es que existe un "factor de retardo". Cuando se crea una página web mucha gente espera verla rápidamente en los primeros resultados de los buscadores y hace todo lo posible para introducir optimizaciones seo gastando mucho tiempo en esto. Sin embargo, Google ahora no te posiciona en primeras posiciones de un día para otro, sino que introduce un tiempo de retardo en el que dice "estoy observando tu web a ver cómo es y cómo evoluciona". Si durante un tiempo la valoración y evolución es positiva, te iré subiendo. Si no, no.

- Google introduce factores de aleatoriedad entre otras cosas. Realmente se especula mucho con el algoritmo de posicionamiento pero nadie lo conoce, y es más, posiblemente no exista un solo algoritmo y posiblemente haya factor humano en algunos casos. Más que de google y de su algoritmo la principal preocupación de los responsables de las webs deberían ser sus propias webs.

- Google busca cada día más con meta-inteligencia o pseudo-inteligencia. En base a esto las recomendaciones para obtener un buen posicionamiento web por orden de importancia (aproximadamente) serían estas:

- Utiliza un buen nombre de dominio: relacionado con la palabra clave de tu sitio web. Por ejemplo si la web es de una tienda de surf debe llevar surf dentro del nombre de dominio.

- Crea una web con velocidades de carga adecuadas: si creas un sitio con excesivo número de animaciones, imágenes pesadas, procesos en base de datos intensivos, etc. tu web irá lenta y la experiencia de usuario (y del robot de google) será mala por esto.

- Crea una web con metadatos: las metadescripciones y meta palabras clave son rastros explícitos para los buscadores. Mucha gente trata de posicionarse con sofisticadas herramientas cuando no hace lo más básico que es introducir metadatos.

- Potencia el tráfico de tu web: el tráfico es un indicador de la calidad de la web. Para conseguir tráfico piensa que tu web es un comercio, escaparate, proveedor o como quieras verlo. La gente acudirá si es atractivo, si tiene contenidos de calidad e interesantes, si se actualiza, etc. Haciendo publicidad o con sofisticadas técnicas seo puedes conseguir un pico de visitas que se vendrá abajo rápidamente si no ofreces nada "real".

- Trata de que tu código sea aceptado por todos, o al menos por los princiaples, navegadores y dispositivos. Para ello puede usarse la validación w3c, pero si tienes la validación y tu web se ve mal tampoco servirá de mucho. Comprueba la visualización en los principales navegadores. Google te penalizará básicamente por velocidad de carga o distorsiones graves, no porque tengas algunos errores menores de validación.

- Trata de conseguir que tu web sea enlazada desde sitios relevantes.

- Sobre joomla específicamente: se pueden obtener magníficos resultados con joomla simplemente cumpliendo con todo lo anterior. No es necesario siquiera usar la optimización de urls. Al igual que con otras cuestiones, hace unos años los buscadores tenían problemas con las urls dinámicas y de ahí surgió la optimización de urls, pero hoy en día los buscadores han superado esa cuestión. Si se cumple todo lo anterior y se quieren usar herramientas extra de potenciación seo bienvenidas pero no es la cuestión clave que va a lograr un buen posicionamiento por sí sola para tu web.


9
Hola, estoy tratando de redireccionar la dirección de una web para que muestre el sitemap generado por xmap (componente de joomla) cuando se escribe:

http://www.midominio.com/sitemap.xml

Para ello he añadido estas líneas al .htacces:

RewriteCond %{REQUEST_URI} ^/sitemap.xml
RewriteRule .* /index.php?option=com_xmap&sitemap=1&view=xml

Pero me salta un error. ¿Alguna idea?

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".