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?
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
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. –