Public Type FIELD_DETAIL
    fieldLen As Long
    flags As Long
End Type
 
Sub SetEmployeesList()
    Dim i As Integer
    Dim fldData(3) As FIELD_DETAIL
 
    ' clear list
    lstEmployees.Clear
    If cmbSection.ListIndex = -1 Then
Exit Sub ' no department do nothing
    End If
 
    ' Select data
    iRet = LceSetSelectOptions(iSession, "*RECEIVEIMMED")
    ' set keys value  department/section
    If iRet = LceTrue Then _
       iRet = LceSetFieldValue(iSession, "DEPTMENT", _
                 DeptKey(cmbDepartment.ListIndex))
    If iRet = LceTrue Then _
       iRet = LceSetFieldValue(iSession, "SECTION", _
                 SectKey(cmbSection.ListIndex))
    ' Request data
    If iRet = LceFalse then exit sub ' Failed
 
    If txtSurname = "" Then ' no surname search
       iRet = LceRequestSelect(iSession, "EMPNO,SURNAME,GIVENAME", _
            "PSLMST1", "DEPTMENT,SECTION", False)
    Else
       iRet= LceRequestSelectWhere(iSession, _
          "EMPNO,SURNAME,GIVENAME", _
          "PSLMST1", "DEPTMENT,SECTION", _
          "DEPTMENT *EQ " & _
          DeptKey(cmbDepartment.ListIndex))
 
    End If
 
    If iRet = LceTrue Then
        sBuff = String(FIELD_DATA_SIZE * 3 , Chr(0)) ' plenty of space
        i = 0
        ReDim EmpKey(0)
        ' Read all records
        While (LceReceiveNextX(iSession, sBuff, FIELD_DATA_SIZE * 3, fldData(0), 3) _
               = LceTrue)
            ReDim Preserve EmpKey(i + 1)
            ' Only RDML fields retrieved so can assume starting positions are in fixed positions
            lstEmployees.AddItem (sTrim(Mid(sBuff, 28, 20)) _
                         & " " & sTrim(Mid(sBuff, 7, 20))) ' Full Name
            EmpKey(i) = sTrim(Left(sBuff, 5)) ' EmpNo
           i = i + 1
        Wend
        ' Select first on list
        If lstEmployees.ListCount > 0 Then lstEmployees.ListIndex = 0
   else
       ' failed
       …
    End If
End Sub