将文本框的默认值设置为查询结果

时间:2013-01-06 21:37:08

标签: ms-access-2010

相当简单的问题。我有一个表单中的文本字段,我希望将默认值设置为查询的结果。此特定查询返回我在Access中设置的小型发票系统的默认税率。

查询(qrySettingsDefaultTaxRate)如下所示,并返回一行,其中包含我希望在此表单中设置为默认值的税率的十进制等值:

SELECT CDbl([value]) AS default_tax_rate
FROM settings
WHERE (((settings.key_name)="default_tax_rate"));

我尝试将文字字段的默认值设置为:

=[qrySettingsDefaultTaxRate]![default_tax_rate]

然而,这不起作用。当我返回到表单视图时,该框会以“ #Name?”作为默认值,而不是返回查询结果。

4 个答案:

答案 0 :(得分:4)

您可以将文本框的控件来源设置为DLookup,或者将值设置为代码中的DLookup。

DlookUp("default_tax_rate","qrySettingsDefaultTaxRate")

或者

DlookUp("default_tax_rate","settings","settings.key_name='default_tax_rate'") 

您甚至可以将DLookUp放在默认值下的属性表中。

Dlookup Default value

答案 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 }}。