Charlotte Foust
cfoust at infostatsystems.com
Fri Sep 12 10:05:44 CDT 2003
IMO 4 seconds is too long to load each tab page as well. Your callback routine is repeatedly opening and closing what looks like the same recordset or else you pasted the same acLBInitialize case code in 3 times. A field list as the rowsourcetype would be a faster way to get a list of fields for a single table. Charlotte Foust -----Original Message----- From: Sad Der [mailto:accessd666 at yahoo.com] Sent: Friday, September 12, 2003 2:01 AM To: Acces User Group Subject: [AccessD] listbox with rowsource type (ala MS) 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 _______________________________________________ AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com