我为团队建立了一个表单,用于记录与客户的通话。 他们可能有多个电话,同一个客户都有一个独特的ID分配。 我建立了一个表单,使团队成员可以在组合框中选择一个客户ID,然后使用VBA,未绑定的文本框将显示客户的姓名、电话号码和地址(存储在客户人口统计表上)。 到目前为止,所有这部分工作都很顺利。
我的问题是,在我的表单上有一个文本框,团队成员可以在其中插入有关呼叫的注释。 团队负责人要求我把它改成当选择customerID时,备注框会自动弹出上一次通话的备注,团队成员可以输入添加更多的备注。 所以,比如在41号的最后一次通话中,备注是 "41号--与客户通话,订单在路上",现在是48号,他们在给客户打电话,想看最后的备注,框里应该显示41号的那个备注。 有什么办法可以做到这一点吗? 我试过使用组合框选项将此与客户ID组合框绑定,但不能完全让它工作。谢谢你!我有一个为团队建立的表单。
SELECT Notes,
CustID FROM (SELECT Call1.CustID,
Count(*) AS Rank,
Call1.DateCalled, Call1.Notes FROM Call AS Call1
INNER JOIN Call AS Call2 ON Call1.CustID = Call2.CustID
WHERE ((Call2.DateCalled>=Call1.DateCalled))
GROUP BY Call1.CustID, Call1.DateCalled ORDER BY 1, 2) WHERE Rank=1) AS Call ON CustTable.CustID=Call.[CustID]
下面是一些VBA代码,获得最后一组笔记(通过使用 TOP
ORDER BY DateCalled DESC
)为当前客户选择的组合框,其中DateCalled不等于当前呼叫日期(显示在 txtDateCalled
):
Private Sub Combo0_AfterUpdate()
On Error GoTo E_Handle
Dim db As DAO.Database
Dim rsData As DAO.Recordset
Dim strSQL As String
Set db = DBEngine(0)(0)
strSQL = "SELECT TOP 1 Notes " _
& " FROM Call " _
& " WHERE CustID=" & Me!Combo0 _
& " AND DateCalled<>" & Format(txtDateCalled, "\#mm\/dd\/yyyy\#") _
& " ORDER BY DateCalled DESC;"
Set rsData = db.OpenRecordset(strSQL)
If Not (rsData.BOF And rsData.EOF) Then
Me!txtLastNotes = rsData!Notes
Else
Me!txtLastNotes = ""
End If
sExit:
On Error Resume Next
rsData.Close
Set rsData = Nothing
Set db = Nothing
Exit Sub
E_Handle:
MsgBox Err.Description & vbCrLf & vbCrLf & "frmCall!Combo0_AfterUpdate", vbOKOnly + vbCritical, "Error: " & Err.Number
Resume sExit
End Sub
为了填充其他基于客户表的文本框,您可能需要考虑在组合框中添加列,并将其ColumnWidth设置为0(这样用户就看不到它们),然后将这些文本框设置为使用隐藏列。
祝贺你。