相当简单的问题。我有一个表单中的文本字段,我希望将默认值设置为查询的结果。此特定查询返回我在Access中设置的小型发票系统的默认税率。
查询(qrySettingsDefaultTaxRate)如下所示,并返回一行,其中包含我希望在此表单中设置为默认值的税率的十进制等值:
SELECT CDbl([value]) AS default_tax_rate
FROM settings
WHERE (((settings.key_name)="default_tax_rate"));
我尝试将文字字段的默认值设置为:
=[qrySettingsDefaultTaxRate]![default_tax_rate]
然而,这不起作用。当我返回到表单视图时,该框会以“ #Name?”作为默认值,而不是返回查询结果。
答案 0 :(得分:4)
您可以将文本框的控件来源设置为DLookup,或者将值设置为代码中的DLookup。
DlookUp("default_tax_rate","qrySettingsDefaultTaxRate")
或者
DlookUp("default_tax_rate","settings","settings.key_name='default_tax_rate'")
您甚至可以将DLookUp放在默认值下的属性表中。
答案 1 :(得分:3)
我有类似的问题。这对我有用 - 我编写了一个函数,返回我想设置为默认值的值,并在默认情况下指定函数。
我的代码:
Public Function MaxTDate()
MaxTDate = CurrentDb.OpenRecordset("MaxTDateQry").Fields(0)
End Function
...并在字段属性中:
默认值= MaxTDate()
答案 2 :(得分:2)
即使现在回答正确,因为正确的答案足以满足某些情况。
可能存在默认值来自表达式,外部文件,用户输入或其他任何计算的情况。
Microsoft Access抛出#Name的原因?错误是因为它期望使用撇号"来引用String数据。同时也说,如果字符串本身包含撇号,它也需要进行转义。在php中思考addslashes。
所以给出一个特定的变量DefValue,
Dim DefValue
DefValue = "This is a static string or result from database query or other computation"
TextBox.DefaultValue = """" & Replace(DefValue, """", """""") & """"
因此,在您的情况下,它将是"""" & Replace([qrySettingsDefaultTaxRate]![default_tax_rate], """", """""") & """"
答案 3 :(得分:0)
Fionnuala的答案在第二部分中包含错误。不幸的是,我的编辑被拒绝了两次,所以现在我将其作为单独的答复发布。它必须为:
DLookUp("value","settings","settings.key_name='default_tax_rate'")
原因是,在原始表settings
中,该列称为value
,而default_tax_rate
仅在基于{{1 }}。