【问题标题】:DataTable.Load() Throws Error: Undefined function 'CountWeekDays' in expressionDataTable.Load() 引发错误:表达式中未定义函数“CountWeekDays”
【发布时间】:2013-06-28 13:04:28
【问题描述】:

我正在使用 Access 数据库并尝试加载 DataTable 对象,但收到了错误。我的查询在标准访问模块中调用名为“CountWeekDays”的公共函数,当通过 Access 本身运行时,返回正确的结果就好了。为什么通过 .NET 应用程序调用它时这不起作用?

 SELECT tbl1.ProjectID, tbl1.EntryDate AS StartDate, tbl2.EntryDate AS EndDate, 
(SELECT (ChecklistDayMax - ChecklistDayMin + 1) AS DaysAlotted FROM milestone_def WHERE MilestoneDefID = [@milestoneID]) AS DaysAlotted, 
(SELECT ProjectPriority FROM project_master WHERE ProjectID = tbl1.ProjectID) AS Priority,    
 IIF(Priority = 1, (SELECT BonusDaysFH FROM milestone_def WHERE MilestoneDefID = [@milestoneID]), 
 IIF(Priority = 2, (SELECT BonusDaysFM FROM milestone_def WHERE MilestoneDefID = [@milestoneID]), 
 IIF(Priority = 3, (SELECT BonusDaysFL FROM milestone_def WHERE MilestoneDefID = [@milestoneID])))) AS BonusDaysAllotted, 
 CountWeekDays(tbl1.EntryDate, tbl2.EntryDate) AS DaysRequired
 FROM checklist_entries AS tbl1 
 INNER JOIN checklist_entries AS tbl2 ON tbl1.ProjectID = tbl2.ProjectID
 WHERE tbl1.ChecklistDay = (SELECT ChecklistDayMin FROM milestone_def WHERE MilestoneDefID = [@milestoneID])
 AND tbl2.ChecklistDay = (SELECT ChecklistDayMax FROM milestone_def WHERE MileStoneDefID = [@milestoneID]);

【问题讨论】:

  • CountWeekDays 定义在哪里?
  • 在名为“modCountWeekDays”的 Access 模块中。
  • @DStanley 这是this one 的后续问题。

标签: .net sql vb.net ms-access


【解决方案1】:

只有在 Access 本身内部运行查询时,才能在 Access 查询中使用用户定义的 VBA 函数。如果您将在 .NET 应用程序中运行查询,则查询必须只返回开始/结束日期,并且您的 .NET 代码必须计算它们之间的工作日数。

【讨论】:

  • 他又出手了!哈哈,虽然真的很烂。我厌倦了访问。该死的客户。好吧,我去重新做一遍。再次感谢戈德。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
相关资源
最近更新 更多