.NET Tutorial 47. Visual Studio 2010, Crystal Reports y RecordSelectionFormula

Continuando con mi "migración" de Visual Studio 2008 a Visual Studio 2010 he encontrado otro pequeño fallo que he podido solucionar más o menos rápido.
Lo comento aquí por si alguien se encuentra con la misma situación y le empiezan a correr sudores frios por la frente mientras está con cara de WTF intentando entender que demonios pasa 😉

El "tema" es que en determinadas circunstancias Crystal Reports se pasa por el "forro" la fórmula de selección que le hemos indicado. En lugar de generar un informe con aquella fórmula de selección, lo que nos muestra Crystal Reports son todos los registros de la tabla/vista a la cual está ligada el informe.

Esto obviamente es un "pequeño gran problema" que ahora os mostraré como solucionar.

Cuando añadimos controles a un formulario, Visual Studio añade código automáticamente en un archivo llamado xxxx.Designer.vb (xxxx.Designer.cs en el caso de C#)

Pues bien, en caso de que tengamos este problema con el RecordSelectionFormula del Crystal Reports lo que deberemos hacer es lo siguiente:

En el formulario donde tengamos el control del CrystalReportViewer abriremos el archivo "Designer":


(Haz click para agrandar)

El archivo "Designer" puede tener más o menos código.

Tendremos que ir a la rutina InitizlizeComponent() y buscar las propiedades que el IDE del Visual Studio 2010 ha escrito automáticamente sobre el control CrystalReportViewer que hemos colocado en dicho formulario:


(Haz click para agrandar)

Si en dichas propiedades tienes las siguientes líneas:

Me.CrystalReportViewer1.SelectionFormula = ""
Me.CrystalReportViewer1.ViewTimeSelecionFormula = ""

La solución es comentar (o eliminar) dichas lineas para solucionar este "bug"

De este modo podemos utilizar un RecordSelecionFormula tal que así (ojo, este código es a muy grosso modo):


(Haz click para agrandar)

 

Pues de momento esto es todo, seguiremos informando 🙂

 

Tutoriales relacionados:
.NET Tutorial 46. Visual Studio 2010, Crystal Reports 13 y .NET Framework 3.5 SP1

.NET Tutorial 55. Crystal Reports, aplicaciones x86 y Windows de 64 bits

 

Tags: Crystal Reports SelectionFormula display all records, Crystal Reports RecordSelectionFormula doesn’t work in Visual Studio, fórmula de selección no funciona en Crystal Reports, SelectionFormula bug, How to fix RecordSelectionFormula bug

Saludos.
mov eax,ollydbg; Int 13h

 


Ollydbg ProSignature

 

Guardando streaming de audio en formato MP3

Hoy os mostraré como jugar un poco con Wireshark (http://www.wireshark.org)
Wireshark es una herramienta de software libre bajo licencia GPL que permite capturar y analizar el tráfico de datos de un adaptador de red. 

En la wikipedia lo explican mejor que yo 😉
"Permite examinar datos de una red viva o de un archivo de captura salvado en disco. Se puede analizar la información capturada, a través de los detalles y sumarios por cada paquete. Wireshark incluye un completo lenguaje para filtrar lo que queremos ver y la habilidad de mostrar el flujo reconstruido de una sesión de TCP."(wikipedia)

Bien, lo primero es descargar Wireshark desde la página oficial (http://www.wireshark.org/download.html) A fecha de hoy la versión estable es la 1.4.6
Existen versiones tanto para 32 bits como para 64 bits. Deberéis instalar la versión correspondiente a vuestro S.O.

Una vez instalado estaremos listos para empezar la captura.

Para ello iremos a Capture —> Interfaces…:


(Haz click para agrandar)

Es posible que exista más de un adaptador de red. En mi caso particular tengo 3.
En este caso se utilizará el adaptador Realtek RTL8168C/8111C, ya que ese adaptador es mi tarjeta ethernet.

Pulsaremos en Options:


(Haz click para agrandar)

En las opciones de captura se establecerá un filtro. Sólo se va a capturar el tráfico procedente del puerto 80. Para ello pulsaremos en Capture Filter:


(Haz click para agrandar)

Y seleccionaremos el filtro "TCP or UDP port 80 (HTTP):

Finalmente pulsaremos sobre el botón Start para iniciar la captura de paquetes que llegan por el puerto 80:

En ese momento y dependiendo del tráfico entrante (si tenéis IExplorer, Firefox, Chrome, etc abiertos) puede que s e muestren paquetes:


(Haz click para agrandar)

En nuestro caso "filtraremos" los paquetes que nos llegan por el puerto 80. De todos los paquetes que llegan únicamente nos interesan los de "streaming". Para ello estableceremos el siguiente filtro:

http.content_type == "audio/mpeg" y pulsaremos en Apply:

Bien, Wireshark ya está a la "espera" y capurando paquetes de streaming.

Seguramente ahora lo que algunos de vosotros/as se estará preguntando es de donde sacamos estos paquetes de streaming, ¿verdad?

Vamos a utilizar Grooveshark como fuente del streaming.
Para los que no conozcan Grooveshark decir que se trata de una de las mayores libres de audio de internet (no sólo de Spotify vive el hombre 🙂 , es gratuito y no se necesita registro para utilizarlo.

Más información: http://en.wikipedia.org/wiki/Grooveshark
Página oficial: http://listen.grooveshark.com

Entramos en Grooveshark y buscamos un tema, el que queráis. Yo he buscado el clásico "Stairway to heaven" de Led Zeppelin:


(Haz click para agrandar)

Seleccionamos el archivo para la repoducción


(Click para agrandar)

En la barra de progreso de la reproducción  se pueden ver "dos barras".

La primera de color verde indica el tiempo actual de reproducción de la canción
La segunda de un color grisaceo indica el total del streaming cargado. Cuando dicho total cargado llegue al final (representado con la flecha roja en la imagen anterior) indica que todo el streaming se ha descargado.

Dependiendo de la conexión a internet que tengas, la canción puede durar 4 minutos, pero el streaming se te ha descargado en 3 segundos.

Pues bien, cuando el streaming se ha descargado volvemos a Wireshark detenemos la captura (este paso es opcional)

Observamos que tenemos un "paquete de datos" supuestamente de streaming. Seleccionamos dicho paquete.

Después de seleccionar el paquete pulsamos en "Media Type":

A continuación pulsaremos dentro de la opción "Media Type audio/mpeg (xxxxxxxx bytes):


(Haz click para agrandar)

Veréis que al hacer esto se mostrará una ventana que va indicando una barra de progreso. Puede que tarde más o menos en función del tamaño de los bytes capturados.

Una vez procesada toda la información se  "autoseleccionarán" los xxxxxxxx bytes.

Ahora pulsamos con el botón derecho del ratón otra vez sobre Media Type: audio/mpeg (xxxxxxx bytes) y seleccionamos  la opción "Exported Selected Packet Bytes…":


(Haz click para agrandar)

Le damos un nombre. Como extensión usar "mp3", por ejemplo: stairwayToHeaven.mp3:

Añadimos dicho mp3 por ejemplo al iTunes y probamos 🙂


(Haz click para agrandar)

Y ya puesto que estamos en iTunes, pasamos ese mp3 al iPod, iPhone, … 🙂

Nota: Cuando seleccionamos el contenido del Media Type: audio/mpeg (xxxxxxx bytes) podemos ver que los primeros bytes corresponden al tag ID3 que suelen tener todos los mp3.
Tampoco es necesario detener la captura entre canción y canción, simplemente has de estar antento al paquete generado (más quenada para darle un nombre correcto cuando lo guardes en formato *.mp3)


(Haz click para agrandar)

 

Tags: how to save grooveshark songs, save grooveshark to mp3, save audio stream to mp3, guardar canciones de grooveshark, using wireshark to save grooveshark songs, grooveshark to file , capture audio streaming, save audio streaming

Saludos.
mov eax,ollydbg; Int 13h