2012-11-27 17 views
7

Devo impostare il rapporto start_date in base a un parametro del report. I timestamp sono calcolati in una query del database.I campi non possono essere utilizzati nell'espressione parametro report

La mia espressione si presenta così:

=SWITCH (
    Parameters!report_type.Value = 1,First(Fields!daily_start.Value, "Timestamps") 
    ,Parameters!report_type.Value = 2,First(Fields!weekly_start.Value, "Timestamps") 
    ,Parameters!report_type.Value = 3,First(Fields!monthly_start.Value, "Timestamps") 
) 

Purtroppo ricevo il seguente messaggio di errore:

un'espressione di valore utilizzato per il parametro di report 'time_from' si riferisce a un campo. I campi non possono essere utilizzati nell'espressione parametro report

So che questo non è consentito perché SSRS non può essere sicuro in quale ordine vengono chiamati i set di dati. Ma penso che questo non sia pericoloso.

Tutti i timestamp sono ricevuti da query senza parametro. Il parametro report_type viene selezionato da un utente prima che il rapporto venga generato.

Qualcuno può darmi un suggerimento per una soluzione?

+1

Potreste usare fissato parametri nascosti per il vostro daily_start, weekly_start, mensile invece di campi? – jbl

risposta

3

Ecco la soluzione alternativa: ottenere il valore utilizzando SQL.

Creare un nuovo insieme di dati denominato StartDates:

SELECT CASE 
    WHEN @report_type = 1 THEN daily_start 
    WHEN @report_type = 2 THEN weekly_start 
    WHEN @report_type = 3 THEN monthly_start 
END AS StartDate 
FROM MyTable 

hai già i parametri @report_type e @time_from. Con il parametro @time_from, impostare i relativi valori predefiniti su Get values from a query utilizzando il dataset StartDates e il campo Valore StartDate.

Ora, si potrebbe pensare che questo potrebbe essere sufficiente per farlo funzionare - stai riferimento questa query come valore predefinito e come si cambia il parametro @report_type gli altri parametri rinfrescano, ma la prima data nel parametro @time_from mai i cambiamenti. Questo perché l'aggiornamento avviene nella query Valori disponibili, non nella query Valori predefiniti.

Quindi è necessario cablare la query Valori disponibili alla query StartDates. A questo punto, la tua query verrà attivata per la modifica di @report_type e il valore predefinito verrà impostato sulla data appropriata per la selezione.

+1

cosa se posso farlo solo in FetchXML? –

0

Sono passato da una query a Stored procedure e ho ricevuto questo errore. Cose che ho provato:

  • Garantita avevo il permesso sufficiente sul database (è necessario disporre dei diritti Exec o DBO per eseguire teh sproc)
  • Eliminare i parametri esistenti (e quindi utilizzare i campi Aggiorna per aggiornare/ottenere il corretto nome quelli indietro)
  • Rimuovere le parentesi quadre intorno la stored procedure se hai specificato che
+0

Rimozione delle parentesi quadre hanno contribuito, grazie! – ConstantineK

0

a volte, le espressioni possono ottenere un po 'prolisso. Ho creato una funzione di codice del rapporto e l'ho usata come valore del parametro.

Per esempio, ho creato una funzione di codice chiamato "CalculateDateSet" e quindi impostare il parametro di report a questa espressione:

"= Code.CalculateDateSet (Parametri Month.Value, i parametri year!!.Valore"

+0

Potrebbe essere così gentile da elaborare un po 'sulla soluzione proposta? – user3285866

Problemi correlati