我为团队构建了一个表单,用于记录对客户的呼叫。他们可能与同一个客户有多个呼叫,这些客户都分配了一个唯一的 ID。我已经构建了一个表单,以便团队成员可以在组合框中选择一个客户 ID,然后使用 VBA,未绑定的文本框将显示客户的姓名、电话号码和地址(存储在客户人口统计表中)。到目前为止,所有这部分都运行良好。
我的问题是我的表单上有一个文本框,团队成员可以在其中插入有关呼叫的注释。团队负责人要求我这样做,以便在选择 customerID 时,该备注框会自动填充上次通话的备注,并且团队成员可以输入添加更多备注。例如,在 4/1 的最后一次通话中,备注是“4/1 - 与客户交谈,订单正在路上”,现在是 4/8,他们正在给客户打电话,想查看最后的备注,该框应显示 4/1 中的注释。有没有办法做到这一点?我曾尝试使用组合框选项将其与客户 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
为了填充基于 Customer 表的其他文本框,您可能需要查看将列添加到组合框,并将它们的 ColumnWidth 设置为 0(因此用户看不到它们),然后将这些文本框设置为使用隐藏列。
问候,
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句