0
我有一個訪問數據庫。有一個字段是[開始日期]。 [開始日期]的值爲01/01/2017,只有一個是2017年7月24日。 [開始日期]字段是表格中的短日期字段。當我將7/24/2017更改爲01/01/2017時,查詢運行正常,但是當我在下拉菜單中選擇了7月並且該表單值爲7,並且年度中的2017下拉式時,以下查詢表示它是太複雜,無法評估。我正在嘗試使用dateserial函數來執行一個datediff,並且使用小數值進行一些除法運算。下面是該查詢:訪問查詢 - 太複雜的評估,數值表達式可能包含太多複雜的元素
Base Charge: Round(Sum(IIf(DateDiff("d",[Return to COE Regions].[Start Date]
,CDate(DateSerial([Forms]![Main]![cboReportYear],[Forms]![Main]!
[cboReportMonth],1)))<30,[Base Charge HAL].[Base Charge]/DateDiff("d",
[Return to COE Regions].[Start Date],CDate(DateSerial([Forms]![Main]!
[cboReportYear],[Forms]![Main]![cboReportMonth],1))),[Base Charge HAL].[Base
Charge])),2)
的dateserial通常是:
DateSerial(Year(Date),Month(Date),1)
我試圖把形式的日期下拉值。我也試過這樣:
Base Charge: Round(Sum(IIf(DateDiff("d",[Return to COE Regions].[Start
Date],format(DateSerial([Forms]![Main]![cboReportYear],[Forms]![Main]!
[cboReportMonth],1,"mm/dd/yy"))))<30,[Base Charge HAL].[Base Charge]/DateDiff("d",
[Return to COE Regions].[Start Date],format(DateSerial([Forms]![Main]!
[cboReportYear],[Forms]![Main]![cboReportMonth],1,"mm/dd/yy")))),[Base Charge HAL].[Base
Charge])),2)
我也曾嘗試:
Base Charge: Round(Sum(IIf(DateDiff("d",[Return to COE Regions].[Start
Date],format([Forms]![Main]![cboReportMonth]/1/[Forms]![Main]!
[cboReportYear],"mm/dd/yy"))<30,[Base Charge HAL].[Base
Charge]/DateDiff("d",
[Return to COE Regions].[Start Date],format(DateSerial([Forms]![Main]!
[cboReportMonth]/1/[Forms]![Main]![cboReportYear],"mm/dd/yy")),[Base
Charge HAL].[Base
Charge])),2)
我也串聯一起嘗試和字符串它。在該月查詢中,7月的價值下降,即7不會計算。
從我讀過的表格下拉值查詢中遇到困難。有沒有解決辦法?是否建議我將值存儲在vba變量中,或者在vba中運行查詢?
我不知道這是否是錯誤的原因,但我知道它會導致一個錯誤: - 在你的「也試過」你的DateSerial([Forms]![Main])! [cboReportYear], [Forms]![Main]![cboReportMonth],1'缺少其右括號,並且'DateSerial([Forms]![Main]! [cboReportMonth]/1/[Forms]![Main]![cboReportYear] '缺少它的右括號以及兩個參數(它需要傳遞給它的年,月和日) - 但是你傳遞了一個由兩個分部計算的數字,即類似於'8/1/2017'這大約爲'0.003966' ) – YowE3K
另外,你爲什麼要做'CDate(DateSerial(...))'?'DateSerial'已經是'Date',所以沒有必要轉換它。 – YowE3K