Pregunta

¿Hay una manera de cambiar el valor por defecto de la fórmula de inteligencia de tiempo post ??

Tengo un tablero de instrumentos donde utilizo Desde la fecha y Hasta filtros de fecha, para calcular los valores entre el período seleccionado por el usuario, por esos filtros uso el inteligencia de tiempo post Fórmula , sin embargo el defecto cuando el usuario entra en la página siempre es la fecha de hoy en ambos filtros. (y desde hoy para el análisis de hoy no tiene sentido para esto)

Lo que me gustaría que es tener un algo de Fecha ser como 30 días antes de la fecha de hoy, pero no forzado en el informe de la recepción de los filtros, sólo quiero que el filtro tenga un valor por defecto y luego dejar que el usuario elija lo que quiere.

Alguien sabe de algo que se pueda hacer, o esto simplemente no se puede hacer?

EDIT:

A Través investigación en este enlace me mostró que no se puede hacer a través de formas normales:

sgrice hizo esta pregunta: Me encanta el calendario y la facilidad de su vinculación con mi cubo; Sin embargo, nunca tenemos datos para "Hoy", que es la fecha predeterminada. Por lo tanto, nuestros cuadros de mando son siempre en blanco cuando vienen por primera vez y nuestro cliente tiene que seleccionar una fecha. ¿Hay una manera de cambiar la fecha predeterminada?

El autor de la entrada dice en una respuesta comentario:

No se lo siento, pero voy a entrar en esto como una sugerencia sobre funciones.

Gracias,

Alyson

Así que no hay manera formal de hacerlo, así que estoy tratando de hacer esto de otra manera. Así que estoy tratando de hacerlo de una manera más documentada y oscura, A TRAVÉS DE Javascript. Le agradecería ayuda en la búsqueda de una manera de hacer esto.

¿Fue útil?

Solución 3

He resuelto punto a través de javascript y jQuery. Básicamente lo comprobé lo que hizo el calendario, y lo reprodujo, me he dado cuenta de que toogled la visibilidad del calendario cuando se hace clic en el día, y ya que no estaba interesado en que se lo quité, y llamó a un método con este nombre pps_TI_calendar_render pasando tres parámetros, uno era el id de la td calendario, y los otros dos fue la fecha que ha seleccionado en un nombre completo. He comprobado si aceptaría sólo dos parámetros, y la fecha en un formato más sencillo el resultado es esta llamada javascript (tenga en cuenta que sólo estoy cambiando el primer calendario de la fecha pps):

pps_TI_calendar_render(  $('.pps_calendarToggleDown').first().parent().closest('td').attr('id'),'01/01/2010');

(este formato de fecha es mes / día / año) si se pone, por ejemplo, 14/01/2010 colocará el calendario en febrero de 2011. primera así que ten cuidado.

Nota: En el primer parámetro que he usado una selección jQuery para obtener el id que quería, esto podría ser cambiado, pero el parámetro debe ser el ID de los pps elemento utiliza.

Espero que esto ayude.

Otros consejos

De acuerdo, he seguido este tema por un tiempo y probado muchos métodos para conseguir que esto funcione, el tiempo me hackeado mi camino a través de casi todo el SP2010 y SP2007 JavaScript y se encontró lo siguiente para trabajar en SP2010 y tuve que trabajar en SP2007 con un prefijo poco diferente.

. Paso 1: averiguar cuál es el prefijo de Identificación del Javascript de sus partes son naturales

  • Para ello, inicie el salpicadero de IE8 o IE9 y golpeó F12 para iniciar el depurador de JavaScript.
  • El usuario del Javascript GetElementByTagName ( "TD") para obtener una lista completa de todas las etiquetas TD en la página.
  • Busque las etiquetas que tienen un GUID en el ello y que terminan con _Selection y Selection_Toggle.
  • Estas serán sus partes del filtro de calendario. Nota el prefijo de partida (en SP2007 se ct_100_ en SP2010 que es pps _)

Paso 2: añadir el siguiente Javascript para el final de la página principal que se utiliza para los cuadros de mando (ver final del post)

Paso 3: guardar la página principal y actualizar su navegador y la fecha debe cambiar a ayer.

También he creado todo esto en un tablero de instrumentos con dos filtros de calendario en él para permitir el filtrado de rango de fechas y esto hará que la primera fecha de 11 días antes y la segunda fecha de ayer. Cualquier pregunta emil.swanepoel@live.co.za

<script type="text/JavaScript">


var isFirstLoad;
var calendarLoaded = false;
var srcID = "ctl00_m_WebPart_293af46d1c5c4320893d47f86614325bSelection";
var strDate = "Tue Aug 2 00:00:00 UTC+0200 2011";
var t;
var dateBackA = 1;
var dateBackB = 10;
testForCalendar();

function testForCalendar()
{
    isFirstLoad = true;
    if(calendarLoaded != true)
        t = setTimeout("waitForIt()", 5);
}

function waitForIt()
{
    var foundControl = -1;
    var t = document.getElementsByTagName("TD");
    var ts = "";
    var subDateFound = false;
    var xPoint = 0;
    for(var x = 0; x < t.length; x++)
    {
        if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
        {
            foundControl = x;
            ts = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
            xPoint = x;
            x = t.length;
        }
    }
    if(foundControl > -1)
    {
        if(isFirstLoad == true)
        {   
            if(t[xPoint].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
                calendarIntercept(ts, calendarDate(new Date(), dateBackB));
            else 
                calendarIntercept(ts, calendarDate(new Date(), dateBackA));
            waitForItSub(xPoint, ts);
            calendarLoaded = true;
            isFirstLoad = false;
        }
        else
            t = setTimeout("waitForIt()", 5);
    }
    else
        t = setTimeout("waitForIt()", 5);   
}

function waitForItSub(startPoint, firstTag)
{
    var foundControl = -1;
    var t = document.getElementsByTagName("TD");
    var tsub = "";
    var xPointNew = 0;
    for(var x = (startPoint++); x < t.length; x++)
    {
        if(t[x].id.indexOf(firstTag) == -1)
        {
            if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
            {
                foundControl = x;
                tsub = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
                xPointNew = x;
                x = t.length;
            }
        }
    }
    if(foundControl > -1)
    {
        if(isFirstLoad == true)
        {   
            if(t[xPointNew].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
                calendarIntercept(tsub, calendarDate(new Date(), dateBackB));
            else
                calendarIntercept(tsub, calendarDate(new Date(), dateBackA));
            calendarLoaded = true;
            isFirstLoad = false;
        }
    }
}

function calendarIntercept(inSrcID, inDate)
{
    strDate = (inDate.getMonth()+1) + "/" + inDate.getDate() + "/" + inDate.getFullYear(); 
    pps_TI_calendar_render ( inSrcID, strDate , strDate );
}

function calendarDate(inDate, daysBack)
{
    var returnValue = new Date();
    returnValue.setDate(returnValue.getDate() - daysBack);
    return returnValue;
}

</script>

Hay que crear dos calendarios, y luego asignar una a la fecha de inicio y una a la fecha de finalización. Esto se describe en este comentario en el blog Performance Point.

La técnica es como sigue:

  

Para trabajar con una fecha de inicio y fin es necesario crear 2 calendarios. A continuación, enlazar un calendario a <> y el otro a <>. Como fórmula que acaba de entrar Día: Día.   En el informe se tendrá que crear un conjunto llamado 'DateRange' o algo similar.

WITH 
SET [DateRange] AS
   <<StartDate>>.Item(0) :  <<EndDate>>.Item(0)
SELECT
NON EMPTY 
[DateRange]
ON COLUMNS,
{ [Measures].[Price Total] }
ON ROWS
FROM [TurnoverCube]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top