2009-11-25 8 views
11

Genero dinamicamente file RDL per SSRS 2008, assemblando i miei report da "building blocks" che ho definito come report su Report Server e che utilizzo come sottoreport sul mio rapporto generato.Utilizzo di un'origine dati condivisa per i report generati e distribuiti dinamici

Sul mio server di report, ho una singola origine dati condivisa che funziona fintanto che eseguo roba direttamente sul server di report.

Quello che sto cercando di realizzare è questo:

  • mio rapporto principale generato dovrebbe fare riferimento, che ha condiviso origine dati
  • miei subreports contenuti nel rapporto principale generato dovrebbero usare la stessa fonte di dati
  • dopo aver distribuito il report sul server di report utilizzando l'interfaccia webserver, mi piacerebbe essere in grado di vedere subito il report

Per ora, posso generi te e convalidare il mio RDL bene, posso anche distribuirlo al server di report - si presenta e tutto, ottimo.

Ma quando provo a visualizzare il report, ottengo un errore che la mia fonte di dati non è valido o è stato rimosso o qualcosa .......

Che cosa mi manca ?? Sono abbastanza sicuro di avere la giusta fonte di dati - GUID per questo e tutto - e i nomi corrispondono. Come faccio a dire a un RDL generato di utilizzare l'origine dati condivisa già presente sul server ??

risposta

18

Rispondendo alla mia domanda proprio qui, nella speranza che qualcun altro potrebbe rivelarsi utile:

ero sotto la (falsa) impressione che il "DataSourceID" unico dato ad una fonte di dati sul server sarebbe sufficiente per identificarlo in modo univoco.

Quindi, a mio generato RDL, ho avuto qualcosa di simile:

<DataSources> 
    <DataSource Name="MyDataSource"> 
     <Transaction>true</Transaction> 
     <DataSourceReference>MyDataSource</DataSourceReference> 
     <rd:DataSourceID>6ba7c588-e270-4de9-988c-d2af024f10e1</rd:DataSourceID> 
     <rd:SecurityType>None</rd:SecurityType> 
    </DataSource> 
    </DataSources> 

Ora, questo ha funzionato una volta, quando la mia fonte di dati è stato effettivamente chiamato "MyDataSource" e si trova nella stessa directory come il mio rapporto che ho pubblicato attraverso l'API RS WebService.

Non appena ho spostato l'origine dati altrove, ha smesso di funzionare.

LA SOLUZIONE:
Questo può sembrare stupido, ma io davvero non "farlo" in un primo momento: le DataSourceReference necessità di avere il "percorso" piena e completa sul server di report a quella fonte di dati I voglio fare riferimento. Basta specificare l'ID univoco non farà ....

Così una volta ho cambiato il mio RDL a:

<DataSources> 
    <DataSource Name="MyDataSource"> 
     <Transaction>true</Transaction> 
     <DataSourceReference>/MyProject/DataSources/MyDataSource</DataSourceReference> 
     <rd:DataSourceID>6ba7c588-e270-4de9-988c-d2af024f10e1</rd:DataSourceID> 
     <rd:SecurityType>None</rd:SecurityType> 
    </DataSource> 
    </DataSources> 

(notare il <DataSourceReference>/MyProject/DataSources/MyDataSource</DataSourceReference>)

Da questo momento essa funziona come un fascino.

Spero che qualcuno possa trovarlo utile un giorno!

Problemi correlati