[AccessD] listbox with rowsource type (ala MS)

Sad Der accessd666 at yahoo.com
Fri Sep 12 05:01:17 CDT 2003


Hi group,

i've got a problem. I'm using a tab control. On all
tabs i've got listboxes wich are filled with field
names of a couple of tables. These listboxes are
filled using the rowsource type thingy. This seems to
be the original MS-way-of-programming.

Below I pasted the code. In the property RowSourceType
of the listbox I fill in the function name. 

When I programmed it it worked fine. The client is on
the desktop of the user and the BE is on our test
network. It took about 4 seconds to load each
tab-page.

Now it's in production (on another network) and if a
switch between tab pages now takes almost 2 MINUTES!!!

Any ideas how this is possible??
 
tia

Sander
Private Function ListMeetVelden(fld As Control, id As
Variant, row As Variant, col As Variant, code As
Variant) As Variant
  
  Static strVelden()  As String
  Static lngRows      As Long
  Dim varRetVal       As Variant
  Dim oMeetTable      As DAO.Recordset
  Dim i               As Integer
  
  On Error GoTo ListMeetVelden_Error
  
  Select Case code
    Case acLBInitialize
      ReDim strVelden(0)
      'fill array with fields.
      Set oMeetTable =
CurrentDb().OpenRecordset(Name:="tblxxxx",
Type:=dbOpenSnapshot, Options:=dbOpenForwardOnly)
      With oMeetTable
        For i = 0 To .Fields.Count - 1
          strVelden(UBound(strFields)) = "C_" &
.Fields(i).Name
          ReDim Preserve strVelden(0 To
UBound(strVelden) + 1)
        Next i
      End With
      
      Set oMeetTable = Nothing
      'fill array with fields.
      Set oMeetTable =
CurrentDb().OpenRecordset(Name:="tblxxx",
Type:=dbOpenSnapshot, Options:=dbOpenForwardOnly)
      With oMeetTable
        For i = 0 To .Fields.Count - 1
          strVelden(UBound(strFields)) = "D_" &
.Fields(i).Name
          ReDim Preserve strVelden(0 To
UBound(strFields) + 1)
        Next i
      End With
      
      Set oMeetTable = Nothing
      'fill array with fields.
      Set oMeetTable =
CurrentDb().OpenRecordset(Name:="tblxxx",
Type:=dbOpenSnapshot, Options:=dbOpenForwardOnly)
      With oMeetTable
        For i = 0 To .Fields.Count - 1
          strVelden(UBound(strVelden)) = "E_" &
.Fields(i).Name
          ReDim Preserve strVelden(0 To
UBound(strVelden) + 1)
        Next i
      End With
      
      ReDim Preserve strVelden(0 To UBound(strVelden)
- 1)
      
      lngRows = UBound(strVelden) + 1       ' array is
0-based
      varRetVal = lngRows
    Case acLBOpen
      varRetVal = Timer       'Unique ID for control
    Case acLBGetRowCount
      varRetVal = lngRows
    Case acLBGetColumnCount
      varRetVal = 1
    Case acLBGetColumnWidth
      varRetVal = -1      'Default of -1 uses default
column width
    Case acLBGetValue
      varRetVal = strVelden(row)
    Case acLBEnd
      Erase strVelden
  End Select

  ListMeetVelden = varRetVal

ListMeetVelden_Exit:
  Set oMeetTable = Nothing
  Exit Function
ListMeetVelden_Error:
  Set oMeetTable = Nothing
  Call g_oGenErr.Throw("xxx.frmxxx", "tblxxxx")
End Function



__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com


More information about the AccessD mailing list