2011-03-09 9 views
25

Ho un report con circa 10 parametri e circa 10 set di dati e un'origine dati. Ho digitato molto ma ho davvero bisogno di aiuto, quindi ho pensato di provare a fornire tutte le informazioni sul problema che potevo fin dall'inizio.SSRS 2008: messaggio di errore che dice che il mio parametro non esiste ma lo fa chiaramente?

Diciamo semplificare il tutto e far finta questi sono i nomi importanti di tutto e che il rapporto ottiene informazioni sui dipendenti di base:

  • Parametri
    • facilityID: testo nel formato di un GUID o uniqueidentifier, questo è nascosto e inoltrato in modo che l'utente finale del rapporto possa visualizzare solo le informazioni per la propria struttura; Parametro a valore singolo, non vuoto non nullo, nascosto, testo
    • startDate: intervallo di date di inizio, diciamo che voglio che il mio rapporto includa i dati a partire dal primo gennaio di quest'anno; Parametro a valore singolo, non vuoto non nullo, visibile, datetime
    • endDate: fine dell'intervallo di date, diciamo che è oggi/ora; parametro singolo valore, non vuoto non nullo, visibile, datetime
    • viewOption: tre valori hard-coded (etichetta, valore) ("Dipendenti correnti", 1) e ("Dipendenti Past", 2) e ("Dipendenti che ha spostato le strutture ", 3); Parametro multivalore (quindi selezionare tutto è un'opzione), non vuoto, non nullo, visibile, testo
    • personID: basato sul set di dati getListOfNames dove l'etichetta è il nome del dipendente e il valore è il loro personID (guid/uniqueidentifier) ; Singolo di selezione, non nullo, non vuoto, il testo e visibile
  • miei dati Imposta
    • getListOfNames: questo diventa un elenco di persone che erano presso l'azienda nella gamma data prevista presso l'impianto di data e dove il loro stato dipendente è nel valore del parametro viewOption (quindi può essere solo un numero o fino a tre). Questa è una procedura memorizzata ma l'ho configurata per gestire il parametro multivalore passandolo join (parametro, "~") e quindi separandolo nel proc memorizzato. Funziona su altri 5 rapporti.
    • getReportInfoOnSelectedPerson: query sul corpo principale; dopo che l'utente seleziona il dipendente su cui desidera i dati, questo prende il personID e l'intervallo di date e riempie la tabella principale.

Il problema:
SSRS dice viewOption non esiste. Ma lo vedo, proprio lì, nella cartella Parametri sul lato sinistro. Lo vedo quando vado per inserire un'espressione sotto Parametri. Non c'è alcuna linea rossa ondulata sotto Parametri! ViewOption.value. Ma, quando provo a metterlo come valore per un parametro usato dal set di dati getListOfNames, si sbaglia. Se lo metto nel set di dati getReportInfoOnSelectedPerson e lo uso nello stesso identico modo, SSRS va bene. Wtf? Quindi ... Ho controllato l'rdl e tutto è a posto (dove viene dichiarato il parametro attuale, dove è usato nel riferimento del dataset, tutto). È solo questo set di dati. E ho un rapporto simile che usa lo stesso set di dati, gli stessi parametri di base e quel rapporto va bene. Provo a impostare il valore del parametro dataset su 1 o qualcosa e va bene, ma quando provo a impostarlo su Parameter! ViewOption.value errori ..... Ora, sopra ho detto di solito passare il stored proc a sul parametro con una tilde ~ ma sto cercando di mantenerlo semplice e farlo funzionare semplicemente in generale (o passandogli il primo valore del parametro viewOption multivalore o girando quel parametro in una singola selezione e passando semplicemente il parametro. valore) ma il join non funziona neanche. Tutte queste cose funzionano per l'altro set di dati, che è anche un processo memorizzato.

Questo è il mio errore:
Si è verificato un errore durante l'elaborazione del report. (RsProcessingAborted) L'espressione di valore per il parametro di query ‘@viewOption’ contiene un errore: L'espressione riferimento a un non-esistente parametro nel report parametri di raccolta. (rsRuntimeErrorInExpression)

Che sta dicendo chiaramente che il mio parametro non esiste ma POSSO VEDERE ... ovunque. E se assegno uno dei valori dei parametri di altri set di dati al parametro viewOption, funziona senza errori. Ho controllato il rdl.

Ho avuto questo problema prima ed è stato risolto eliminando sia il parametro e set di dati e la creazione di nuovo (per sicurezza ho rinominato entrambi). Non ha funzionato questa volta.

Sono così frustrato. Si prega di aiutare ....

Codice?

 <DataSet Name="getListOfNames"> 
     <Fields> 
      <Field Name="personID"> 
       <DataField>PersonId</DataField> 
       <rd:TypeName>System.Guid</rd:TypeName> 
      </Field> 
      <Field Name="name"> 
       <DataField>name</DataField> 
       <rd:TypeName>System.String</rd:TypeName> 
      </Field> 
     </Fields> 
     <Query> 
      <DataSourceName>myDataSource</DataSourceName> 
      <CommandType>StoredProcedure</CommandType> 
      <CommandText>getListOfNames</CommandText> 
      <QueryParameters> 
       <QueryParameter Name="@fac"> 
        <Value>=join(Parameters!fac.Value,"~")</Value> 
       </QueryParameter> 
       <QueryParameter Name="@bldg"> 
        <Value>=join(Parameters!bldg.Value,"~")</Value> 
       </QueryParameter> 
       <QueryParameter Name="@unit"> 
        <Value>=join(Parameters!unit.Value,"~")</Value> 
       </QueryParameter> 
       <QueryParameter Name="@station"> 
        <Value>=join(Parameters!station.Value,"~")</Value> 
       </QueryParameter> 
       <QueryParameter Name="@startDate"> 
        <Value>=Parameters!startDate.Value</Value> 
       </QueryParameter> 
       <QueryParameter Name="@endDate"> 
        <Value>=Parameters!endDate.Value</Value> 
       </QueryParameter> 
       <QueryParameter Name="@viewOption"> 
        <Value>=Join(Parameters!viewOption.Value, "~")</Value> 
       </QueryParameter> 
      </QueryParameters> 
      <rd:UseGenericDesigner>true</rd:UseGenericDesigner> 
     </Query> 
    </DataSet> 



<ReportParameter Name="viewOption"> 
    <DataType>String</DataType> 
    <DefaultValue> 
    <Values> 
     <Value>1</Value> 
    </Values> 
    </DefaultValue> 
    <Prompt>View</Prompt> 
    <ValidValues> 
    <DataSetReference> 
     <DataSetName>viewOptionQuery</DataSetName> 
     <ValueField>value</ValueField> 
     <LabelField>label</LabelField> 
    </DataSetReference> 
    </ValidValues> 
    <MultiValue>true</MultiValue> 
</ReportParameter> 



<DataSet Name="viewOptionQuery"> 
    <Fields> 
    <Field Name="label"> 
     <DataField>label</DataField> 
     <rd:TypeName>System.String</rd:TypeName> 
    </Field> 
    <Field Name="value"> 
     <DataField>value</DataField> 
     <rd:TypeName>System.Int32</rd:TypeName> 
    </Field> 
    </Fields> 
    <Query> 
    <DataSourceName>flamingo</DataSourceName> 
    <CommandText>select 'Other Facility' as label, 3 as value union select 'Past' as label, 2 as value union select 'Current' as label, 1 as value order by value</CommandText> 
    <rd:UseGenericDesigner>true</rd:UseGenericDesigner> 
    </Query> 
</DataSet> 

Questo è come è impostato e getListOfNames è il motivo per cui l'errore è un tiro, se cambio

   <QueryParameter Name="@viewOption"> 
        <Value>=Join(Parameters!viewOption.Value, "~")</Value> 
       </QueryParameter> 

a

   <QueryParameter Name="@viewOption"> 
        <Value>="1~2"</Value> 
       </QueryParameter> 

allora funziona .... o la valore può essere solo 1 o 1 ~ 2 ~ 3

Tuttavia ... quando provo a mettere join (Parametri! viewOption.value, "~") come valore per un altro parametro della query del set di dati di r funziona e non ci sono errori.

<DataSet Name="getReportInfoOnSelectedPerson"> 
    <Fields> 
    <Field Name="name"> 
     <DataField>name</DataField> 
     <rd:TypeName>System.String</rd:TypeName> 
    </Field> 
    <Field Name="Building"> 
     <DataField>Building</DataField> 
     <rd:TypeName>System.String</rd:TypeName> 
    </Field> 
    <Field Name="Unit"> 
     <DataField>Unit</DataField> 
     <rd:TypeName>System.String</rd:TypeName> 
    </Field> 
    <Field Name="desc"> 
     <DataField>desc</DataField> 
     <rd:TypeName>System.String</rd:TypeName> 
    </Field> 
    </Fields> 
    <Query> 
    <DataSourceName>myDataSource</DataSourceName> 
    <CommandType>StoredProcedure</CommandType> 
    <CommandText>Reports_BasicInfo</CommandText> 
    <QueryParameters> 
     <QueryParameter Name="@personID"> 
     <Value>=Parameters!personID.Value</Value> 
     </QueryParameter> 
     <QueryParameter Name="@numberINeedToAggregateData"> 
     <Value>=Join(Parameters!viewOption.Value,"~")</Value> 
     <rd:UserDefined>true</rd:UserDefined> 
     </QueryParameter> 
    </QueryParameters> 
    <rd:UseGenericDesigner>true</rd:UseGenericDesigner> 
    </Query> 
</DataSet> 

E ho già detto, ma il proc/set di dati memorizzato che genera l'errore utilizza un parametro con lo stesso set up in circa 5 altre relazioni (ho cercato di copiare e incollare le sezioni di codice rilevanti da rapporti di lavoro ma ottengo ancora l'errore). Quindi, cosa c'è di sbagliato in questo?

+1

So che hai detto che hai provato prima, ma ho avuto problemi la classica in Reporting Services. Ho dovuto provare da zero e sembrava funzionare, sembra essere buggy a volte. Inoltre, esegui sempre il tuo sproc da SQL Server per vedere se funzionano prima di portarti su RS. Infine, quando si aggiungono parametri aggiuntivi in ​​una data successiva per qualche motivo, il codice sottostante del report non viene aggiornato e si deve digitare manualmente il codice ... molto bug. +1 anche se per dettagli approfonditi. – JonH

+0

Ho appena postato qualcosa come una "risposta" a questo ... La relazione era troppo dettagliata e complessa per ricominciare da capo, quindi ho appena copiato il codice e sembrava funzionare. Mi piacerebbe davvero sapere perché questo è successo, però. Mi assicuro sempre che il lavoro del programma memorizzato e io riusino alcuni di essi ... Ho anche imparato a controllare sempre il codice dietro SSRS. –

risposta

18

ho trovato nella mia situazione che era in realtà l'involucro nome parametri è stato leggermente modificato ed è stato gettando questo stesso errore.

Ho dovuto cambiare il nome alla carcassa corretta, e quindi cercare nel codice dietro a tutto ciò che si riferisce a tale parametro e correggere il suo involucro. Distribuito bene dopo.

+3

questa è una vecchia domanda e non lavoro più con questa roba ... ma grazie per la risposta. SSRS è una cosa divertente; non sono sicuro che sia migliorato. alla fine, sono andato nell'attuale database del server SQL dietro a tutti i rapporti e ho trovato una soluzione. hai sicuramente ragione, però, aveva qualcosa a che fare con la distinzione tra maiuscole e minuscole. avrebbe mostrato a me, l'utente, completamente lo stesso, ma da qualche parte nel DB era diverso. ti darò la risposta a questa domanda b/c è meglio tardi che mai. Grazie! –

+3

Punto di chiarimento qui - è il codice che è visibile solo nel xml che ha il problema del rivestimento. Per risolvere il problema, devi visualizzare il codice e poi trovarlo e correggerlo. Molto antipatico. –

+0

Questo è SSRS per te! Un dirigente anziano mi ha spiegato perché. Se devi avere una situazione che esegue un lavoro automatico, tutto deve essere accurato! Qualsiasi piccola modifica e fallirà. – logixologist

1

ho fatto un nuovo report e copiare il codice verso il nuovo rapporto e salvato. Funziona perfettamente ora in quel nuovo rapporto ... ho cancellato il vecchio e rinominato il nuovo, schierato al server e tutto è buono. Vorrei aver pensato a questo molto prima. SSRS è così divertente, io non so nemmeno che cosa è stato effettivamente la causa del problema ora, però ...

tutte le idee su questo?

(Avevo riavviato SSRS alcune volte, riavviato il mio computer alcune volte, cancellato i file .data, cancellato la copia dal server anche se questo stava accadendo sul mio computer solo per essere al sicuro ... durante tutto questo, btw)

+0

JonH in realtà ha avuto la risposta a questo, ma ha inserito il suo suggerimento come un commento, non come una risposta reale .... Quando SSRS ha problemi come questo mi fa impazzire perché non c'è in realtà qualcosa di sbagliato che sia visibile; il software attuale sta avendo problemi. –

28

Prova cambiare l'ordine dei parametri utilizzando le frecce su/giù.

dover figurare nell'ordine di dipendenza.

+0

Questo ha risolto il problema per me. Grazie. – Robbert

+0

Questo risolve un problema che stavo avendo pure. Se due set di dati richiedono lo stesso parametro e uno di questi dipende dall'output dell'altro, il parametro comune deve essere elencato in cima all'elenco. –

1

Il problema si verifica anche se si fa riferimento a un parametro "troppo presto", ad es. dall'interno di una OverIniden. In questo caso non è più possibile utilizzare un set di dati per i valori disponibili né per i valori predefiniti di alcun parametro, anche se il set di dati stesso non è correlato al parametro in questione.

+0

+1 per rispondere a una vecchia domanda ... grazie. Mi rivolgo ancora alla risposta di @logixologist perché i miei problemi sono stati risolti eliminando i riferimenti al rapporto ovunque possibile, quindi caricando di nuovo. Tuttavia, ho cercato la tua risposta proprio ora e non avevo idea di nessuna di quelle cose quando lavoravo con SSRS. Penso che la tua risposta avrebbe risolto molti altri problemi che avevo quando scrissi questa domanda se solo avessi saputo. –

10

Il riordinamento dei parametri del rapporto in base alla relativa dipendenza ha risolto il problema. Avevo il parametro del report in fondo alla lista ma quello sopra dipendeva da questo in basso. Quindi, quando crei/ricrea i parametri del rapporto, assicurati che l'ordine sia corretto.

+0

Questo ha risolto il mio problema, grazie! Ma perché!! Ora posso vedere che nel riquadro Report Data, se selezioni un parametro, nella barra strumenti in alto del pannello sono abilitate due piccole frecce. Qui puoi spostare i parametri su e giù per ordinarli. –

0

Ho riscontrato problemi simili con SSRS. Il codice era corretto, i parametri SQL erano corretti ma il report stava generando errori nei parametri. Stavo usando un set di dati condiviso. Ho copiato lo stesso SQL in un set di dati incorporato e il report ha funzionato perfettamente. Quindi, sono d'accordo che il software SSRS ha bug che causano strani comportamenti.

5

Aveva lo stesso problema. Controllare la scheda Parametri delle proprietà del set di dati e fare clic sul pulsante dell'espressione (fx). I parametri non sembrano aggiornare automaticamente qui, uno dei miei parametri aveva ancora le lettere maiuscole invece delle lettere minuscole

+0

questo ha funzionato per me + 1 – Pramesh

0

Ho anche avuto questo problema, seguendo tutte le risposte sopra aiutate deinetely.

Il difficile con il mio è che il set di dati era un set di dati SSAS quindi era nascosto. Ho dovuto cercare il codice per il parametro per vedere dove è stato utilizzato e questo è dove l'ho trovato.

Per visualizzare set di dati nascosti fare clic con il pulsante destro del mouse sulla cartella Dataset nella scheda Dati report e selezionare la casella "Mostra set di dati nascosti".

4

Ciò potrebbe essere dovuto principalmente al nome del parametro non aggiornato nel set di dati.

Questo article helped me resolve it

When editing Parameters (names or case) for a Dataset within SSRS you may encouter the previous error message when you preview the report. While on the surface it may appear that the parameter has the same case in the Parameter settings and the Dataset query – there is another place where a change is required.

  1. Open the Dataset properties for the Dataset (s) that use the Parameter in the error message.
  2. Select the Parameters property in the left list pane.
  3. Click the Expression Editor button for the specified Parameter.

enter image description here

  1. Here you will notice that the Expression is underlined in red. This is where you will need to correct the case of the Parameter name.

    enter image description here

Problemi correlati