viernes, agosto 22, 2008

Detectar si SQL Server esta instalado en un equipo

Estoy tratando de crear un sencillo script en Asp.net, emulando la simplicidad de WordPress, para instalar un aplicacion web en cualquier equipo.

Como estoy usando SQL Server como base de datos, necesito que antes de instalar el esquema de la aplicacion en sql server, verificar que SQL server este instalado en el equipo.

Windows 2000 en adelante (XP, 2003, etc) trae en el core WMI el cual permite revisar, y hacer acciones sobre los servicios de windows.

Una herramienta muy util para esto es WMI Code Creator disponible en Microsoft, el cual me ayudo a crear la consulta destinada a descubrir los servicios del equipo.

Sin mas rollo el codigo:


Imports System
Imports System.Management
 Private Function isServerInstalled(ByVal servername As String) As Boolean


        Try
            Dim searcher As New ManagementObjectSearcher( _
                "root\CIMV2", _
                "SELECT * FROM Win32_Service WHERE Name = '" & servername.ToUpper & "'")
            If searcher.Get.Count = 0 Then
                Return False
            End If
 
            For Each queryObj As ManagementObject In searcher.Get()
                If queryObj("Name").ToString.Equals(servername.ToUpper) Then
                    Return True
                Else
                    Return False
                End If
            Next
        Catch err As ManagementException
            Return False
        End Try
    End Function

Y para usarla dentro de la pagina:




    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not (isServerInstalled("MSSQLSERVER") OrElse isServerInstalled("MSSQL$SQLEXPRESS")) Then
            Response.Redirect("nosqlserver.aspx")
        End If
    End Sub

Listo!

jueves, agosto 14, 2008

Función para ejecutar un procedimiento almacenado

Continuando un poco con SQL Server y el post anterior sobre procedimientos almacenados, ahora dejo una pequeña funcion que permite recibir como parametros una cadena de textos para el nombre del procedimiento y un objeto hashtable para los parametros.

La idea es que esta funcion se guarde como un metodo dentro una clase para el proyecto que estamos realizando.

Actualmente esta clase ya cuenta con metodos para obtener un datareader, un escalar, una consulta non-query, etc. Ahora la idea es que acepte procedimientos almacenados.

    Public Function ExecuteStoreProcedure(ByVal spname As String, ByVal params As Hashtable) As SqlDataReader
        If connString.State = ConnectionState.Closed Then
            connString.Open()
        End If
        Dim cmd As New SqlCommand(spname, connString)
        cmd.CommandType = CommandType.StoredProcedure
        For Each param As DictionaryEntry In params
            cmd.Parameters.AddWithValue(param.Key, param.Value)
        Next
 
        Return cmd.ExecuteReader
    End Function 'ExecuteDataSet


De esta manera creamos un objeto de la clase, mediante:


        Dim db As New AccessDatabase
        Dim oreader As SqlClient.SqlDataReader
        Dim hashParams As New Hashtable
        hashParams.Add("@page", 3)
        hashParams.Add("@pagesize", 50)
         oreader = db.ExecuteStoreProcedure("usp_getdestiniesbypage", hashParams)


Si lo deseamos podemos colocar un grid en nuestra pagina y vincular directamente el objeto datareader.

        GridView1.DataSource = oreader
        GridView1.DataBind()

Listo!

Notas del Seminario Tecnologico 2008 en Veracruz

Generalmente voy colocando una serie de notas en los cuadernillos que dan para estos eventos, pero en esta ocasion, lo unico que llegue a apuntar fue la direccion del blog de Oscar Correas (http://ocorreas.spaces.live.com), quien fue el expositor de la primera parte SQL 2008. Y algunas preguntas que le hice a él mismo. De las cuales me gusto cuales fueron las respuestas.

Honestamente muchas cosas fueron nuevas para mi, o por lo menos porque no las uso. El esquema de seguridad y de planes de mantenimiento suena tremendo. Asi tambien el asunto de poder realizar reporting services sin necesidad de un IIS. Lo cual puede ser practico pues en Vista Home no se instala el IIS7. Amplio conocimiento del expositor la segunda parte, caray me dieron ganas de tomar un curso con el. No asiste al evento de Vista, porque a diferencia de mucha gente, lo uso, funciona bien, y no quiero complicarme. Sobretodo que ahora, no tengo que administrar tantos equipos. Espero empezar a usar SQL 2008 lo antes posible.

Pero en esta ocasion, mis notas mas bien estan efocadas al evento mismo, y no tanto a lo nuevo que trae el producto. De entrada, como mencione muy bien los expositores, Oscar y Miguel Angel Garcia de Compueducacion (http://www.compueducacion.com.mx) dieron de manera rapida y concisa las nuevas funcionalidades del producto. Lo malo, pues la poca publicidad que dieron al evento los de Microsoft. El anterior evento fue de aproximadamente 60-70 personas, ahora solo asisitimos por ahi de 10. Pregunte por la gente de Microsoft, y nadie venia con ellos, en realidad Oscar trabaja en bSide un partner de MS, caray ni siquiera Humberto Aguirre que esta situado en Veracruz, estuvo durante todo el evento, llego y se fue. Algunos participantes felices porque se llevaron un paquete de cuadernillos o de plumas que al final regalaron, asi como  los libros, que solo porque no eran de herramientas de desarrollo o de servidores, no me puse a pelearlos. :D

Espero que la poca asistencia no provoque que de repente no vengan a impartir estas platicas.

Listo!

pd. Oscar Correas y yo estuvimos de acuedo que el evento de blogit.ms estuvo muy chafa… que casualidad que el ganador de un dia para otro tuvo como 800 votos… mmmm

viernes, agosto 01, 2008

Calcular pago del recibo de honorarios en linea

En ocasiones tengo que dar recibos de honorarios por algun trabajo realizado. Por lo cual tengo un archivo de excel para esto. Con la migracion a mi nueva laptop, no encuentro el CD donde respalde el archivo, el dia menos pensado aparece.

Creo que ya era oportuno tener el archivo de excel, en Google Apps o algo por el estilo. No hace mucho lei en la revista de Software Guru, sobre un caso en el cual lograron mediante Zoho tener una pequeña aplicacion que funcionaba como un webservice.

Me parecio interesante el asunto de poder colocar un webservice para el calculo, en realidad no toma, mucho y seria practico colocarlo en otras aplicaciones. Igual ya me estoy ideando una aplicacion completa para facturacion (mensaje para el Robert y SICFE.Net).

Busque en Zoho, y despues de una pequeña batalla con mi usuario y contraseña, experimente colocar mi primera “Aplicacion” con Zoho Creator.

Al principio no entendi muy bien en que estaba programando, pense por un instante que era Javascript, pero no es algo diferente, una especie de JSON, sin serlo. Diferente.

El entorno es bastante amigable, logre entender el lenguaje y despues de 30-40 minutos, tengo el resultado:

http://creator.zoho.com/vgarcias21/form/1/

El resultado no es totalmente un servicio web, pero funciona bastante bien y es lo que andaba buscando hacer. El codigo del script es el siguiente:



form Recibo_de_Honorario 
{ 
    displayname = "Recibo de Honorario" 
    Cantidad_a_recibir 
    ( 
        displayname = "Cantidad a recibir" 
        type = MXN 
        width = 20 
    ) 
 
    Monto_en_recibo 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95) 
    ) 
 
    IVA_15 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95 * 0.15) 
    ) 
 
    Valor_total 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95 * 1.15) 
    ) 
 
    Ret_10_ISR 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95 * 0.1) 
    ) 
 
    Ret_10_IVA 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95 * 0.1) 
    ) 
 
    Valor_neto 
    ( 
        type = formula 
        value = (Cantidad_a_recibir / 0.95 * 1.15 - Cantidad_a_recibir / 0.95 * 0.2) 
    ) 
 
    plain 
    ( 
        type = plaintext 
        value = "<DIV id=ted>Consulta el resultado en: <A href=\"http://creator.zoho.com/vgarcias21/view/1//%22>http://creator.zoho.com/vgarcias21/view/1/</A> </DIV>" 
    ) 
 
}

Listo!

Comunidad IT Pros y MS Innovation Tour 2008 en Veracruz

La comunidad de IT Pros Mexico esta invitando a unos seminarios que se realizaran sobre Windows Vista y Microsoft SQL, se llevaran a cabo en distintas ciudades de la republica, y entre ellas incluiran Veracruz, el Martes, 12 de agosto de 2008.

Además el próximo 27 de Agosto de 2008 andaran por aqui los de Microsoft con algunos temas interesantes:

10:00 - 11:00 Technology Business Preview
11:00 - 12:00 Aceleración de Negocio
12:00 - 12:30 Break (Café, Galletas) - 30 personas
12:30 - 13:30 Programas para Empresas de Microsoft
13:30 - 15:00 Networking
Track de Tecnología
15:00 - 16:00 Enterprise 2.0 Blogs, Wikis, Mashups, RSS, redes sociales y bancos de ideas, se han convertido en uno de los mejores métodos para compartir información no estructurada dentro de las organizaciones, aprende como integrar ésta información con los datos estructurados de las organizaciones para agilizar y mejorar los procesos de negocio. OBA y Sharepoint
16:00 - 17:00 Aprovechando el poder de Windows. Windows Presentation Foundation, WorkFlow Foundation, Communication Foundation, son de los principales avances que el framework tiene para el desarrollo de aplicaciones. Aprende como generar aplicaciones altamente confiables y de alto rendimiento, ASI COMO Las consideraciones que debes de tener en cuanto a compatibilidad con Windows Vista
17:00 - 17:30 Break
17:30 - 18:30 Web 2.0 y Servicios de Datos. La integración de los servicios de internet que ofrecen Windows Live nos permiten crear la nueva generación de aplicaciones interactivas en conjunto con el poder de Visual Studio y las nuevas funcionalidades de SQL 2008 descubre las nuevas posibilidades que tienes
18:30 - 19:30 Interoperabilidad MySQL, PHP, SQL Express, hay muchas inversiones que se han hecho en estas tecnologías. Descrubre como sacarle el máximo a estos desarrollos y como lograr lo mejor de estos mundos.
19:30 - 20:00 Enthusiasts Talk

Me interesa mucho ver qué presentan con PHP, seguro harán el comparativo de SQL Express y MySQL. Espero este interesante.

Al parecer el evento se realizará en el Fiesta Americana. No he visto todavia la forma de registro para el evento toda la informacion la esta publicando Jaime Sanchez, lo curioso es que al parecer no tiene una pagina en el sitio de Microsoft. La informacion ha sido lanzada en Facebook, Hi5 y en Blogs MSDN. Pareciera que quieren que la noticia del evento sea un tanto viral, y no tan formal.

Listo!