Pablo's profileEl blog de Pablo Castill...BlogLists Tools Help

Blog


    April 02

    Como instalar reporting services del sql server 2005 en el windows server 2008

     
    Buenas,
     
    El problema es que no detecta el IIS porque el instalador no detecta el 7. Por lo tanto hay que habilitar toda la compatibilidad con el IIS6 para que el instalador se lo trague.
     
    Este tipo es el que me sacó del problema.
    December 27

    How to install visual studio 2008 into an xp sp2 with office 2007

     

    Hello everyone,

    I have tried to install vs2008 for two days and now I have done it.

    Go to run and write this:

    msiexec /x {30120000-0044-0C0A-0000-0000000FF1CE}

    It will delete: InfoPath MUI 2007 beta <-- I do not know what is it, but it was stucking the Visual Studio Web Authoring Component installation. What I can say is: I have NEVER installed any Office 2007 beta into my pc.

    Hope this could help someone else.

    Regards.

    April 24

    Cómo crear una búsqueda dinámica con linq, la típica con where dinámico

     

    ¿Cómo se podría hacer con Dlinq el típico formulario de búsqueda por varios campos?

    Muy fácil, se puede formar dinámicamente la consulta, al estilo procedimiento almacenado, pero todo desde Visual Studio, depurando y de una forma directa. Creo que realmente esto es un gran progreso respecto a como se realizaba anteriormente, ahí no hay conexiones, entlib.. ni nada por el estilo, se ataca la base de datos de una forma muy directa.

     

     

     

    Código del botón buscar de la web (los cb son combos y los tb textbox):

    protected void btBuscar_Click(object sender, EventArgs e)
    {
    var q = from p in db.PROYECTOS
    from t in db.TRABAJOS
    from pri in db.PRIORIDADES
    from est in db.ESTADOS
    where p.PROTRABAJO==t.TRAID && p.PROPRIORIDAD==pri.PRIID && p.PROESTADO==est.ESTID
    select new{proexpediente=p.PROEXPEDIENTE,protrabajo=t.TRANOMBRE, prodescripcion=p.PRODESCRIPCION,
    PRIORIDAD=pri.PRINOMBRE,ESTADO=est.ESTNOMBRE,
    CLIID=p.CLIID,PROEXPEDIENTE=p.PROEXPEDIENTE,PRONUMVIVIENDAS=p.PRONUMVIVIENDAS,
    LOCID=p.LOCID,CORID=p.CORID,PROFECHAALTA=p.PROFECHAALTA,PROESTADO=p.PROESTADO,PROID=p.PROID};

    if (cbClientes.SelectedValue != "0")
    {
    q = q.Where(h=> h.CLIID == Convert.ToInt32(cbClientes.SelectedValue));
    }
    if (!string.IsNullOrEmpty(tbExpediente.Text))
    {
    q = q.Where(h=> h.PROEXPEDIENTE == tbExpediente.Text);
    }
    if (tbNumViviendas.Text != "0")
    {
    q = q.Where(h=> h.PRONUMVIVIENDAS == Convert.ToInt32(tbNumViviendas.Text));
    }
    if (cbLocalidades.SelectedValue != "0")
    {
    q = q.Where(h=> h.LOCID == Convert.ToInt32(cbLocalidades.SelectedValue));
    }
    if(cbCoordinador.SelectedValue!="0")
    {
    q = q.Where(h=> h.CORID == Convert.ToInt32(cbCoordinador.SelectedValue));
    }
    if(cbAño.SelectedValue!="0")
    {
    q = q.Where(h=> h.PROFECHAALTA.Year.ToString()== cbAño.SelectedValue);
    }
    if(!chboxIncluirTerminados.Checked)
    {
    q = q.Where(h=> h.PROESTADO != 2);
    }

    GridViewBuscados.DataSource = q;
    GridViewBuscados.DataBind();  <-- Aquí ejecuta la consulta en la BBDD
    }

     

    Todo esto forma un sql muy correcto:

    exec sp_executesql N'SELECT [t0].[PRO_EXPEDIENTE] AS [proexpediente], [t1].[TRA_NOMBRE] AS [protrabajo], [t0].[PRO_DESCRIPCION] AS [prodescripcion], [t2].[PRI_NOMBRE] AS [PRIORIDAD], [t3].[EST_NOMBRE] AS [ESTADO], [t0].[CLI_ID] AS [CLIID], [t0].[PRO_NUM_VIVIENDAS] AS [PRONUMVIVIENDAS], [t0].[LOC_ID] AS [LOCID], [t0].[COR_ID] AS [CORID], [t0].[PRO_FECHA_ALTA] AS [PROFECHAALTA], [t0].[PRO_ESTADO] AS [PROESTADO], [t0].[PRO_ID] AS [PROID]
    FROM [PROYECTOS] AS [t0], [TRABAJOS] AS [t1], [PRIORIDADES] AS [t2], [ESTADOS] AS [t3]
    WHERE ([t0].[PRO_ESTADO] <> @p0) AND ([t0].[PRO_TRABAJO] = [t1].[TRA_ID]) AND ([t0].[PRO_PRIORIDAD] = [t2].[PRI_ID]) AND ([t0].[PRO_ESTADO] = [t3].[EST_ID])',N'@p0 int',@p0=2

     

    El linq realmente va a cambiar la forma de hacer los programas....

    August 18

    WCF (Indigo): si quieres no tienes porqué utilizar un proxy formado a través del wsdl del servicio

    Poco a poco voy conociendo cosas nuevas del Indigo, pero una de las que más me ha gustado ha sido el hecho de no tener que definir un proxy mediante wsdl. La gracia consiste en que compartes la interfaz del servicio a ambos lados de la comunicación y eso queda ya como proxy, no la guarrería que te forma svcutil.

    Esto tampoco es un grandísimo avance, pero hace que los proyectos, y las comunicaciones, queden más limpios y no haya que refrescar los proxys. Por supuesto esto es únicamente útil cuando se controlan los dos puntos de la comunicación, pero en esos casos me parece la mejor opción. Al principio da un poco de cosa no tener la referencia en el proyecto, pero luego te acostumbras :P

    Ejemplo de como quedaría:

    DLL común entre el cliente y el servidor, se referencia a ambos lados de la comunicación:

    namespace Comun
    {
    [ServiceContract()]
    public interface IServicioIndigo
    {
    [OperationContract]
    string MyOperation1(DataSetPrueba ds);
    }
    }

     Servidor que implementa la interfaz (no varía respecto a otro servicio indigo normal)

    public class servicioIndigo : Comun.IServicioIndigo
    {
    public string MyOperation1(DataSetPrueba ds)
    {
    return "Hello: "
    }
    }

    Cliente (aquí hay alguna pijada):

    class PruebaEnCliente
    {
    public PruebaEnCliente()
    {
    ChannelFactory<IServicioIndigo> cf =new ChannelFactory<IServicioIndigo>("ep");

    IServicioIndigo isic = cf.CreateChannel();

    using (isic as IDisposable )
    {
    DataSetPrueba dsp =new DataSetPrueba();

    ClaseComun cm = new ClaseComun(dsp);

    Console.WriteLine(isic.MyOperation1(dsp));
    }
    }
    }

    Por cierto, me dí cuenta de esto buscando como pasar un dataset tipado del servidor al cliente y que mantenga el tipo exacto, no te forme el global::blablabla. También descubrí que svcutil /r: referenciadondeestáeltipo consigue ese efecto, no te forma el tipo global y le tienes que pasar la dll que lo contenga al cliente.

    Pues nada, espero que a alguien le parezca interesante.

    August 17

    Presentación

    Buenas,

    Simplemente quiero presentar mi blog. Tratará cosas técnicas, unas veces en español y otras en inglés para que haya un montón de gente que pueda criticar, para bien o para mal, las cosas que escriba.

    Pues nada, ¡saludos!