查看 Acumatica 的 API 示例,我编写了代码以基于单个过滤器从客户屏幕导出一些数据。过滤器应强制客户的电子邮件地址等于特定值(一旦起作用,我还将检查带有加密密码的自定义字段)。然而,出于某种原因,Export 函数返回的似乎是我们数据库中的每条客户记录。谁能告诉我我的过滤器做错了什么,或者其他什么?调试器的代码和屏幕截图如下。
谢谢!
Public Function ValidateUser(ByVal emailAddress As String, ByVal password As String, ByRef customerFirstName As String, ByRef customerLastName As String, ByRef customerCountry As String, ByRef customerPhone As String, ByRef customerCell As String) As String
Dim customer As AR303000Content = m_context.AR303000GetSchema()
m_context.AR303000Clear()
Dim emailFilter As Filter = New Filter()
emailFilter.Field = customer.GeneralInfoMainContact.Email
emailFilter.Condition = FilterCondition.Equals
emailFilter.Value = emailAddress
Dim searchfilters() As Filter = {emailFilter}
Dim searchCommands() As Command = {customer.CustomerSummary.CustomerID, customer.CustomerSummary.CustomerName, customer.GeneralInfoMainContact.Phone1, customer.GeneralInfoMainContact.Phone2, customer.GeneralInfoMainAddress.Country}
Dim searchResult As String()() = m_context.AR303000Export(searchCommands, searchfilters, 0, False, False)
Dim numRecords = searchResult.Length
Dim customerID As String = ""
Dim customerName As String = ""
If numRecords > 0 Then
' we found a user with that email address
Dim i As Integer = 0
For i = 1 To numRecords
customerID = searchResult(i - 1)(0)
customerName = searchResult(i - 1)(1)
customerPhone = searchResult(i - 1)(2)
customerCell = searchResult(i - 1)(3)
customerCountry = searchResult(i - 1)(4)
Next
End If
Dim spaceInName = customerName.IndexOf(" ")
If spaceInName >= 0 Then
customerFirstName = customerName.Substring(0, spaceInName)
customerLastName = customerName.Substring(spaceInName + 1)
End If
Return customerID
End Function