Microsoft KB Archive/112195

= How to Read Database Fields Into and Out of a List Box =

Article ID: 112195

Article Last Modified on 10/20/2003

-

APPLIES TO


 * Microsoft Visual Basic 3.0 Professional Edition

-



This article was previously published under Q112195



SUMMARY
The list box that comes with Visual Basic is not bound, but you can simulate a bound list box in a Visual Basic program. Visual Basic can read records from a database placing the values from each individual field within the record into columns in a list box, which can then be extracted by the Visual Basic program.



MORE INFORMATION
By reading each field into the list box and separating each field from the next with a TAB character, you can create the illusion of columns.

NOTE: By using the SendMessage Windows API function and the LB_SETTABSTOPS constant, you can set the size of your tab stops within your listbox to create custom spacing between fields.

Here's an example:

List1.AddItem Data1.Recordset(Field1) & Chr$(9) & Data1.Recordset(Field2)

This makes two columns in the list box. Field1 is separated from Field2 by the TAB character. You can use the TAB character to parse the columns back into separate fields. For example:

Dim X As Integer X = InStr(List1.Text, Chr$(9)) Text1 = Mid$(List1.Text, 1, X - 1) ' Will Contain Field1 Text2 = Mid$(List1.Text, X + 1, (Len(List1.Text) - X)) ' Contains Field2

For more information, please see the following article in the Microsoft Knowledge Base:

71067 : How to Set Tab Stops in a List Box in Visual Basic

Step-by-Step Example
 Start Visual Basic or from the File menu, choose New Project (ALT, F, N) if Visual Basic is already running. Form1 is created by default. Place two Text Boxes (Text1 and Text2), a List Box (List1), and a data control (Data1) on Form1.  Set the following properties of the Data Control:   Property       Setting      Comment ---  DatabaseName   BIBLIO.MDB   The sample db in the Visual Basic directory Recordsource  Authors      The Authors table is in BIBLIO.MDB

  Add the following code to the Form_Load event: Sub Form_Load Data1.Refresh ' Loop until you reach the last record: Do Until Data1.Recordset.EOF ' Load the list box with fields separated with a tab: ' Enter the following two lines as one, single line: List1.AddItem Data1.Recordset("Au_Id") & Chr$(9) & Data1.Recordset("Author") Data1.Recordset.MoveNext Loop ' Initialize list box and text boxes to first item: List1.ListIndex = 0 End Sub

  Add the following code to the Click event of List1: Sub List1_Click Dim X As Integer ' Find first tab character: X = InStr(List1.Text, Chr$(9)) ' Put all characters before tab into Text1: Text1 = Mid$(List1.Text, 1, X - 1) ' Put all characters after tab into Text2: Text2 = Mid$(List1.Text, X + 1, (Len(List1.Text) - X)) End Sub

 Press the F5 key to run the program. Select an item in the List Box. The Author ID should be in Text1 and Author name should be in Text2.</li></ol>

Additional query words: 3.00

Keywords: KB112195

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.