Ms access 发布的Web表单出现故障:COMBOBOX--查询组合?

Ms access 发布的Web表单出现故障:COMBOBOX--查询组合?,ms-access,binding,combobox,webforms,reference,Ms Access,Binding,Combobox,Webforms,Reference,我创建了一个非常简单的access WebDB,它包含: A) (存储某些课程的日期和成绩的)表格。 B) 教师使用的一种表格作为输入(日期和分数)。 C) 另一个用作输出的表单,用于显示成绩(通过从组合框中选择日期) 为了有一个包含每次搜索结果的报告,我创建了一个查询,然后创建了报告 从组合框中选择日期后,我按下一个命令按钮,该按钮基于查询运行报告 我已经设置了组合框来显示主表中的日期。对我来说,这似乎是不可能的,那就是让查询每次都使用组合框选择的条件运行 我已将以下内容设置为“Where条

我创建了一个非常简单的access WebDB,它包含:

A) (存储某些课程的日期和成绩的)表格。 B) 教师使用的一种表格作为输入(日期和分数)。 C) 另一个用作输出的表单,用于显示成绩(通过从组合框中选择日期)


为了有一个包含每次搜索结果的报告,我创建了一个查询,然后创建了报告

从组合框中选择日期后,我按下一个命令按钮,该按钮基于查询运行报告

我已经设置了组合框来显示主表中的日期。对我来说,这似乎是不可能的,那就是让查询每次都使用组合框选择的条件运行

我已将以下内容设置为“Where条件”(在按钮的宏下):

[DateField]=[Forms].[FormThatContainsTheCombo].[Combo]
在我的电脑上一切正常

现在我请求DOR你帮忙的原因是:

当我在sharepoint server网站上发布所有这些内容并按下按钮时,会发生以下错误:

表达式中包含Combo.Combo的引用“Forms.Forms”无效。您可能试图使用未声明的参数或未绑定到窗体或报表上控件的字段

我相信对你们大多数人来说,在这方面帮助我是件容易的事。
老实说,这是我从工作中得到的第一个项目,对我来说完成它非常重要:)

假设代码是where子句,那么它应该可以工作。如果报告基于web查询,请使用该表单!作为一个条件,您必须将其删除。因此,您需要在这里使用OpenReport命令的“where”子句。这仅仅意味着一个[表格]!不允许在web查询中使用[SomeFormName]引用

假设存在上述问题,那么我可以想到另外两件事,这将导致失败:

您已将表单放置在导航表单中。这实际上意味着您的表单现在位于子表单中,因此filter命令中的forms ref现在是错误的

事实上,由于上述问题,我通常会将控件中的值填充到局部变量中,然后在过滤器表达式中使用该变量。这样做的原因是多方面的,但有一个好处是,在硬编码的代码中没有表单引用。筛选器可以接受控件,但必须硬编码为完全限定的forms ref。但是,筛选器命令也可以使用局部或全局变量

事实证明(谢天谢地),您可以将表单控件中的值填充到变量中,而无需使用限定的表单引用。因此,您只需使用控件名即可。这在很大程度上与VBA中的“我”相同,其结果是这里的形式无关的代码。因此,强烈建议使用此“额外”步骤

因此,这种方法允许您复制表单、重命名表单,甚至在子表单中使用表单(这意味着新的web导航表单),而无需修改代码和表单名称

下一个问题是基于web的应用程序对数据类型更加敏感。所以这意味着,如果您的组合框没有绑定,那么它可能不会返回日期数据类型值。这将导致过滤器在web端出现故障

客户端的访问通常会为您“铸造”数据类型,但对于web来说,这就不那么宽容了

这里一个简单的方法是组合框的属性表(format选项卡),将组合框的格式设置为date(试试short date)。这将解决您的问题

此外,我还将使用上述设置var思想删除硬编码的表单ref和name

因此,您的代码应该如下所示:

 SetLocalVar  (dtUserDate,[myComboBox])

 OpenReport (myReport, [InvoiceDate] = [LocalVars]![dtUserDate], Normal)
请注意,如果组合框绑定到数据库中的基础列,则不需要在组合框属性表中设置数据格式。不过,这可能是一个未绑定的组合框,因此必须设置数据类型

此数据类型问题也适用于过滤“数字”列(在“格式”选项卡中设置为“常规数字”)时的文本框。(或将表达式包装在CDbl()中以将其转换为长数据类型)

对于日期,您还可以使用dateSerial()命令强制使用日期类型,但这在组合框中可能没有意义

因此,在这里,当在表单上使用未绑定控件并将这些值用于过滤器时,请密切注意数据类型

如前所述,这通常不是绑定控件的问题,但对于unbound,则表达式通常采用错误的数据类型,而Access客户端在“转换”数据类型方面做得更好,而web端则更为敏感