如何将Access查询结果填入表单的Previous Solde文本字段?
Access表单填充上月余额字段的三种实用方法
方法1:直接绑定参数查询
先把你的计算逻辑保存为带参数的命名查询(比如qryPreviousSolde),将固定值替换为表单控件引用:
SELECT [sq Argenta Prep Vorig Saldo].Account, Sum([sq Argenta Prep Vorig Saldo].SomVanBedrag) AS SomVanSomVanBedrag FROM [sq Argenta Prep Vorig Saldo] WHERE (((Year([Boekdatum]) & "/" & Month([Boekdatum]))<Forms![你的表单名称]![txtCutoffDate])) GROUP BY [sq Argenta Prep Vorig Saldo].Account HAVING ((([sq Argenta Prep Vorig Saldo].Account)=Forms![你的表单名称]![txtAccount]));
打开表单设计视图,选中「Previous Solde」文本框,在数据选项卡的控件来源下拉列表中选择该查询的SomVanSomVanBedrag字段即可。表单加载或控件值变化时,文本框会自动同步余额结果。
方法2:VBA代码动态赋值
在表单的加载事件(或账号/日期控件的AfterUpdate事件)中编写代码,直接执行查询并赋值:
Private Sub Form_Load() Dim targetAccount As String Dim cutoffDate As String Dim querySQL As String Dim resultRS As Recordset ' 从表单控件获取变量值,替换成你实际的控件名称 targetAccount = Me.txtAccount.Value cutoffDate = Me.txtCutoffDate.Value ' 拼接SQL语句 querySQL = "SELECT Sum(SomVanBedrag) AS FinalBalance " & _ "FROM [sq Argenta Prep Vorig Saldo] " & _ "WHERE (Year(Boekdatum) & '/' & Month(Boekdatum)) < '" & cutoffDate & "' " & _ "AND Account = '" & targetAccount & "'" ' 执行查询并赋值 Set resultRS = CurrentDb.OpenRecordset(querySQL) If Not resultRS.EOF Then Me.[Previous Solde].Value = resultRS!FinalBalance Else Me.[Previous Solde].Value = 0 ' 无结果时显示0 End If ' 清理资源 resultRS.Close Set resultRS = Nothing End Sub
注意:如果账号包含单引号这类特殊字符,要先做转义(比如把'替换成''),避免SQL语法错误。
方法3:用DLookup快速赋值
无需单独建查询,直接在文本框的控件来源中写入DLookup表达式:
=Nz(DLookup("Sum(SomVanBedrag)", "[sq Argenta Prep Vorig Saldo]", "(Year(Boekdatum) & '/' & Month(Boekdatum)) < '" & Forms![你的表单名称]![txtCutoffDate] & "' AND Account = '" & Forms![你的表单名称]![txtAccount] & "'"), 0)
Nz函数用来把无结果时的Null转换成0,避免文本框显示空白。
内容的提问来源于stack exchange,提问作者hrmn
相关产品推荐
相关产品推荐

