ผมทำได้แล้วครับ มีปัญหาเหมือนกับคุณเลย
คือเอา Source จาก CR Version เก่า กับ VS2005 มันได้ แต่พอเอามาใช้ กับ VS2010 มันจะ pop up parameter ใหม่
แก้ง่ายมากเลยครับ คือต้องเอาคำสั่งในการส่งค่า parameter ให้กับ report ไปไว้ต่อจาก คำสั่งในการส่ง Dataset ให้กับ Report ครับ
แค่เรียงลำดับของ Source code ใหม่เท่านั้นเอง ... ไม่ทราบเหตุผลเหมือนกันครับ แต่ว่าได้ผลลัพธ์ตามที่ต้องการ คือมันไม่ pop up มาถามอีกครับ
Code (VB.NET)
repName = ApplicationPath & "\Reports\RepReceivingSum.rpt"
' Load the report
reportDoc.Load(repName)
'Set Parameter to Report Title
'Set discreet value to Report Title.
paramValues = New ParameterValues
paramValue = New ParameterDiscreteValue
paramValue.Value = Condition
'Add to parameter collection.
paramValues.Add(paramValue)
' Apply the current parameter values.
' Old Version of crystal report อันนี้เป็น Source จาก Version เก่า
1-- 'reportDoc.DataDefinition.ParameterFields(PRM_PRINT_CONDITION).ApplyCurrentValues(paramValues)
'Fill the dataset with the data retrieved. The name of the table
'in the dataset must be the same as the table name in the report.
repDataset.Tables.Add(TableSummary)
'Pass the populated dataset to the report
reportDoc.SetDataSource(repDataset)
' New Version of Crystal report for VS2010
' Must followed by datasource ย้าย line 1--- มาไว้ต่อจาก setDataSource ก็จบครับ แค่นี้เอง
reportDoc.DataDefinition.ParameterFields(PRM_PRINT_CONDITION).ApplyCurrentValues(paramValues)
List<object> dataListIn = new List<object>();
List<object> dataListEx = new List<object>();
List<object> dataListDO = new List<object>();
List<object> dataListRT = new List<object>();
RptSVR11200 report = new RptSVR11200();
foreach (SVR11200Header item in data.SVR11200Headers)
{
if (item.JobInd == VehicleServiceConstant.ModifiedVehicleWorkorderJobDetail.JobInd.Internal)
{
dataListIn.Add(item);
}
else
{
dataListEx.Add(item);
}
}