Die gebruik van parameters in MS Reporting Services (SQL Server 2008) teen 'n ODBC data bron
-
08-06-2019 - |
Vra
Ek skryf 'n verslag in Visual Studio dat 'n toevoer van die gebruiker parameter neem en loop teen 'n ODBC data bron. Ek wil graag die navraag hand skryf en het verslagdoening dienste te vervang deel van die waar klousule met die parameter waarde voordat dit aan die databasis. Wat blyk te wees gebeur, is dat die @parmName
Ek neem aan sal vervang word eintlik as deel van die SQL-stelling gestuur. Mis ek 'n opset opstel iewers of is dit net nie moontlik nie?
Ek is nie die gebruik van die opsie filter in die instrument, want dit lyk of terug die volle dataset uit die databasis van die filter op die SQL Server bring en te doen.
Oplossing
Dit klink soos wat jy nodig het om te behandel die SQL-stelling as 'n uitdrukking. Byvoorbeeld:
="Select col1, col2 from table 1 Where col3 = " & Parameters!Param1.Value
As die waar klousule is 'n string wat jy nodig sou wees om die volgende te doen:
="Select col1, col2 from table 1 Where col3 = '" & Parameters!Param1.Value & "'"
Let wel: Moenie lyn breek in jou SQL-uitdrukking. As jy dit doen sal jy 'n fout kry.
Holla terug as jy nie meer hulp nodig het.
Ander wenke
Maak nie ODBC gebruik die ou "?" sintaksis vir parameters? Probeer hierdie:
select col1, col2 from table1 where col3 = ?
Die einde van jou parameters word belangrik dan, maar dit is minder vatbaar vir SQL-inspuiting as net die parameter waarde aanbring.
teëgekom dieselfde probleem probeer om 'n Access-databasis navraag via ODBC.
My oorspronklike navraag: SELECT A.1 FROM A WHERE A.1 = @parameter
gelei tot foute. Verander na:. SELECT A.1 FROM A WHERE A.1 = ?
Jy moet dan die navraag parameter met jou verslag parameter te karteer.
Ek is 'n bietjie verward oor hierdie vraag, as jy op soek is na eenvoudige parameter gebruik dan die notasie is: *paramName*
, maar as jy wil hê dat die WHERE
klousule (as jy dalk in sql + behulp van?) Struktureel verander dan moet jy regtig wees met behulp van persoonlike kode binne die verslag 'n funksie wat die vereiste sql opbrengste vir die navraag te definieer.
Ongelukkig toe met behulp van persoonlike kode, parameters kan nie direk verwys word in die gegenereerde navraag maar moet hê daar Waarden saamgevoeg in die gevolglike String, dus bekendstelling van die potensiaal vir SQL
inspuiting.