So I have a field calculate field on my report. The formula should return a DateTime value based on some values.
Below is the formula
DateTime (DateValue(
if abs(DayOfWeek({vw_prfma_proforma.Dock_Date}) - {vw_prfma_proforma.p_dock_no}) < 4 then
(
if DayOfWeek({vw_prfma_proforma.Dock_Date}) > {vw_prfma_proforma.p_dock_no} then
dateadd("d",-(DayOfWeek({vw_prfma_proforma.Dock_Date})-{vw_prfma_proforma.p_dock_no}),{vw_prfma_proforma.Dock_Date})
else if DayOfWeek({vw_prfma_proforma.Dock_Date}) < {vw_prfma_proforma.p_dock_no} then
dateadd("d",{vw_prfma_proforma.p_dock_no}-DayOfWeek({vw_prfma_proforma.Dock_Date}),{vw_prfma_proforma.Dock_Date})
else
dateadd("d",0,{vw_prfma_proforma.Dock_Date})
)
else
(
if DayOfWeek({vw_prfma_proforma.Dock_Date}) > {vw_prfma_proforma.p_dock_no} then
dateadd("d",7 , dateadd("d",-(DayOfWeek({vw_prfma_proforma.Dock_Date})-{vw_prfma_proforma.p_dock_no}),{vw_prfma_proforma.Dock_Date}))
else if DayOfWeek({vw_prfma_proforma.Dock_Date}) < {vw_prfma_proforma.p_dock_no} then
dateadd("d",-7,dateadd("d",{vw_prfma_proforma.p_dock_no}-DayOfWeek({vw_prfma_proforma.Dock_Date}),{vw_prfma_proforma.Dock_Date}))
else
dateadd("d",0,{vw_prfma_proforma.Dock_Date})
)
)
,Time(
cdbl(
left(
replace(Space( 5-Length (replace(cstr({vw_prfma_proforma.p_dtoleranc}),".00","")))
+ cstr(replace(cstr({vw_prfma_proforma.p_dtoleranc}),".00",""))," ","0")
,3))
,
cdbl(
right(
replace(Space( 5-Length (replace(cstr({vw_prfma_proforma.p_dtoleranc}),".00","")))
+ cstr(replace(cstr({vw_prfma_proforma.p_dtoleranc}),".00",""))," ","0")
,2))
,0
))
The problem I am facing is, it loads in the Preview mode, giving desired data. However, when loaded up in the browser, it gives the following error
Error in formula . 'DateTime (DateValue( ' This field name is not known.
I am at a loss as to what to do. I verified DB on print and it gives me that. Without the verification command, all values come back as zero. Please help.
I found a fix. In the code where I load the tables and the connection information in the page's code behind, that is hosting the Crystal Viewer control, I added an additional field per table being referenced. See code below.
private void SetDBLogonToTables(CrystalDecisions.Shared.ConnectionInfo connectionInfo, CrystalDecisions.CrystalReports.Engine.ReportDocument reportDocument)
{
CrystalDecisions.CrystalReports.Engine.Tables tables = reportDocument.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
CrystalDecisions.Shared.TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
//Following, did the trick!
try
{
string strLocation = connectionInfo.DatabaseName + ".dbo." + table.Location.Substring(table.Location.LastIndexOf(".") + 1);
table.Location = strLocation;
}
catch (Exception ex)
{//Catch
}
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.