我知道这里已有很多知识用于在Access中的表单上对数据进行排序。但是,我无法让它工作并需要一些帮助。
我有以下设置:
表“Mitarbeiter”(用户)的字段:“UNummer”/“Sortierung”/....
表格“Mo01”(每月一张),字段为:“UNummer”/“01”/“02”/ ....
表Mo01中的字段UNummer是一个组合字段,它获取Mitarbeiter.UNummer并将其保存为文本
现在我有一个表格“Monatsblatt”,我称之为基于表Mo01。
在那张表格中我有一个字段“fldSort”,它正在从“Mitarbeiter”表中调用“Sortierung”。该字段中的数据基于“= DomWert(”Sortierung“;”Mitarbeiter“;”UNummer ='“& [ID]&”'“)”
这一切都很好,看起来像这样:
现在我尝试使用此代码在“Monatsblatt”表单中通过“fldSort”对表单进行排序:
Form_Monatsblatt.OrderBy = "fldSort"
Form_Monatsblatt.OrderByOn = True
然而,当我这样做并开始运行该代码的表单时,我总是按照你在这张图片中看到的访问方式询问参数:
Access asking me for Parameter
我尝试了很多不同的编写代码的方法,以不同的方式引用该字段,并且根本无法理解如何执行它。我不希望将表单基于表格以外的任何内容。当然这一定是可能的。
我希望有人可以帮我解决这个问题。
问候。勒
答案 0 :(得分:2)
为什么不问广阔的世界观看“为什么Access要求我参数”?那会让你知道我的线索。 Debug.Print
或MsgBox
您的.OrderBy
,您会看到它是“fldSort”,而不是有效排序。 Access假设您要使用名为fldSort
的参数,但您希望变量fldSort
中的字符串,但由于它周围有双引号而无法识别。 2个双引号之间的所有内容都被解释为一个字符串,即使它是一个var名称。
删除引号,一切正常(如果您的排序字符串足够)!
Form_Monatsblatt.OrderBy = fldSort
[更新] 晚了,但现在我看到了线索。您向表单添加了计算字段,但无法对其进行排序或筛选。 不是将此字段附加到表中,而是创建一个查询并将其添加到那里,然后将表单绑定到查询并将该字段添加到表单中。现在您可以根据需要进行过滤和排序! 查询如下所示:
SELECT *,
Dlookup("Sortierung","Mitarbeiter","UNummer = '" & [ID] & "'") AS ldSort
FROM Mo01;
或者加入:
SELECT
Mo01.*,
Mitarbeiter.Sortierung AS fldSort
FROM
Mo01
LEFT JOIN
Mitarbeiter
ON
Mo01.ID = Mitarbeiter.UNummer;
现在你可以使用
Form_Monatsblatt.OrderBy = "fldSort"
Form_Monatsblatt.OrderByOn = True
因为你有一个名为fldSort
的绑定控件。
[/ Update]