Gustav Brock
gustav at cactus.dk
Mon Sep 15 02:17:46 CDT 2003
Hi Sander Henry is right (Subject: Where False, was listbox with rowsource type). I did a test but with small tables only. However, assuming each table has a normal autonumber primary key, modify the query like this: SELECT tblOne.*, tblTwo.*, tblThree.* FROM tblOne, tblTwo, tblThree WHERE tblOne.ID Is Null And tblTwo.ID Is Null And tblThree.ID Is Null; That should reveal the field names in a split second. /gustav > Hi Sander > Maybe I'm missing something, but why all this trouble to get a field > list? > 1. Create a select query like this: > SELECT > tblOne.*, > tblTwo.*, > tblThree.* > FROM > tblOne, > tblTwo, > tblThree > WHERE > False; > and save it as, say, qdyFieldList. > This will retrieve all fields from the tables but no records. > 2. In your form, adjust the combobox to have FieldList as > RowSourceType and specify qdyFieldList as the RowSource. > This should load in a fraction of a section. > /gustav >>>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