2014-04-16 102 views
0

所以我在我的報告中有一個字段計算字段。該公式應該返回基於某些值的DateTime值。Crystal Report公式錯誤

下面是式

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 
)) 

我面臨的問題是,它加載在預覽模式中,給所希望的數據。但是,在瀏覽器中加載時,會出現以下錯誤:

公式中的錯誤。 「日期時間(則DateValue(」此字段名稱是 不知道。

我不知所措,不知道該做什麼。我驗證了DB上打印,它給我的。如果沒有驗證命令,所有的值來回復爲0請幫忙

+0

我沒有使用Crystal Reports的經驗網絡,但我想知道'DateTime'或'DateValue'在網絡上不可用於公式。 –

+0

在瀏覽器中,您是否連接到正確的數據庫? – Siva

+0

據我所知,DateTime和DateValue函數是標準的。 – trevoirwilliams

回答

0

我發現了一個修復在代碼中我加載了表格和頁面代碼後面的連接信息,這是託管Crystal Viewer控件,我在表格中添加了一個額外的字段請參閱下面的代碼

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 
      } 
    } 
} 
相關問題