Yes I pass a lot of parameters but pheraps I don't understand your first response, so I give you the interesting part of my asp:
Set ParamDefCollection = Session("oRpt"

.Parameterfields
set session("Param"

= ParamDefCollection
'set session("Param"

= Session("oRpt"

.Parameterfields
'''''''PARAMETER 1 (UTENTE)
set Param1 = session("Param"

.Item(1)
if not isnull(value1) then
ParamValue = Request.Form("ParamValue"
Call Param1.SetCurrentValue (CStr(ParamValue), 12)
else
Call Param1.SetCurrentValue (CStr("Tutti"

, 12)
end if
'''''''PARAMETER 2 (TIPO CLIENTE)
set Param2 = session("Param"

.Item(2)
if not isnull(value2) then
Call Param2.SetCurrentValue (CStr(value2), 12)
else
Call Param2.SetCurrentValue (CStr("Tutti"

, 12)
end if
'''''''PARAMETER 3 (SCELTA)
set Param3 = session("Param"

.Item(3)
if not isnull(value3) then
Call Param3.SetCurrentValue (CStr(Value3), 12)
else
Call Param3.SetCurrentValue (CStr("Tutti"

, 12)
end if
'''''''PARAMETER 4 (LINEA)
set Param4 = session("Param"

.Item(4)
if not isnull(value4) then
Call Param4.SetCurrentValue (CStr(Value4), 12)
else
Call Param4.SetCurrentValue (CStr("Tutti"

, 12)
end if
'''''''PARAMETER 5 (CODICE TPPRB)
set Param5 = session("Param"

.Item(5)
if not isnull(value5) then
Call Param5.SetCurrentValue (CStr(Value5), 12)
else
Call Param5.SetCurrentValue (CStr("Tutti"

, 12)
end if
'''''''PARAMETER 6 (FUORI PRODUZIONE)
set Param6 = session("Param"

.Item(6)
if not isnull(value6) then
Call Param6.SetCurrentValue (CStr(Value6), 12)
else
Call Param6.SetCurrentValue (CStr("Tutti"

, 12)
end if
'''''''PARAMETER 7 (SERIE)
set Param7 = session("Param"

.Item(7)
if not isnull(value7) then
Call Param7.SetCurrentValue (CStr(Value7), 12)
else
Call Param7.SetCurrentValue (CStr("Tutti"

, 12)
end if
'''''''PARAMETER 8 (FORMATO)
set Param8 = session("Param"

.Item(8)
if not isnull(value8) then
Call Param8.SetCurrentValue (CStr(Value8), 12)
else
Call Param8.SetCurrentValue (CStr("Tutti"

, 12)
end if
'''''''PARAMETER 9 (CODICE CLIENTE)
set Param9 = session("Param"

.Item(9)
if not isnull(value9) then
Call Param9.SetCurrentValue (CStr(Value9), 12)
else
Call Param9.SetCurrentValue (CStr("Tutti"

, 12)
end if
'''''''PARAMETER 10 e 11 (INTERVALLO MESI)
set Param10 = session("Param"

.Item(10)
set Param11 = session("Param"

.Item(11)
if not isnull(mesev1) then
Call Param10.SetCurrentValue (CStr(mesev1), 12)
Call Param11.SetCurrentValue (CStr(mesev2), 12)
else
Call Param10.SetCurrentValue (CStr("-"

, 12)
Call Param11.SetCurrentValue (CStr("-"

, 12)
end if
'''''''PARAMETER 12 (LINGUA)
set Param12 = session("Param"

.Item(12)
if not isnull(lang) then
Call Param12.SetCurrentValue (CStr(lang), 12)
else
Call Param12.SetCurrentValue (CStr("it"

, 12)
end if
'''''''PARAMETER 13 (TITOLO REPORT)
set Param13 = session("Param"

.Item(13)
if not isnull(lang) then
Call Param13.SetCurrentValue (CStr(reportitle), 12)
else
Call Param13.SetCurrentValue (CStr("Report"

, 12)
end if
On Error Resume Next
session("oRpt"

.ReadRecords
If Err.Number <> 0 Then
Response.Write "An Error has occured on the server in attempting to access the data source"
response.write err.number & " " & err.description
response.end
else
If IsObject(session("oPageEngine"

) Then
set session("oPageEngine"

= nothing
End If
set session("oPageEngine"

= session("oRpt"

.PageEngine
End If
''''''''''''''''''''''''''''''''V I E W E R
viewer = Request.Form("Viewer"

If cstr(viewer) = "ActiveX" then
%>
<!-- #include file="SmartViewerActiveX.asp" -->
<%
ElseIf cstr(viewer) = "Java using Browser JVM" then
%>
<!-- #include file="SmartViewerJava.asp" -->
<%
ElseIf cstr(viewer) = "HTML Frame" then
Response.Redirect("htmstart.asp"

Else
Response.Redirect("rptserver.asp"

End If
%>
Thank you very much