Solved

Populate MS Access List box from button onClick

Posted on 2014-10-28
13
289 Views
Last Modified: 2014-11-02
I have forgotten how to do this.

Should the list box be defined with no control source?
What should I set as the list box data properties?

This is my button on click event:

Private Sub cmdTranslate_Click()

Me!lstTranslationResults.RowSource = "SELECT ln.Lang_Name, dc.Dict_Word FROM tblLanguage AS ln INNER JOIN tblDictionary AS dc ON ln.Lang_ID = dc.Lang_ID WHERE (((ln.Lang_ID) <> 1)) ORDER BY ln.Lang_Name "

End Sub

There is no error. The listbox does not populate.
The list box is set to display 2 columns. The SQL Statement returns 2 columns.

A quick example or reference will help.

Thanks,
0
Comment
Question by:Dovberman
13 Comments
 
LVL 7

Accepted Solution

by:
slubek earned 400 total points
ID: 40409405
Try this:
Private Sub cmdTranslate_Click()

Me!lstTranslationResults.RowSource = "SELECT ln.Lang_Name, dc.Dict_Word FROM tblLanguage AS ln INNER JOIN tblDictionary AS dc ON ln.Lang_ID = dc.Lang_ID WHERE (((ln.Lang_ID) <> 1)) ORDER BY ln.Lang_Name "
Me!lstTranslationResults.Requery

End Sub

Open in new window

0
 

Author Comment

by:Dovberman
ID: 40409426
Thanks,

I had forgotten the need to Requery.

Oops, That did not fix it.

BTY, What is the VB line continuation marker?
0
 
LVL 84
ID: 40409444
You don't need to Requery if you set the RowSource.

Are you sure your SELECT statement actually returns records?
0
 

Author Comment

by:Dovberman
ID: 40409551
Yes,

Col1                 Col2
French              Alors
Hebrew              אז

lstTranslationResults
ColumnCount=2
ColumnWidths 1",1"

cmdTranslate
onClick is the only event procedure.

This is confusing.
0
 

Author Comment

by:Dovberman
ID: 40409591
I used this as a test:

Private Sub cmdTranslate_Click()

Me!txtTest.Text = "abc"

Nothing happens.

The event procedure is not called.
0
 
LVL 49

Assisted Solution

by:Gustav Brock
Gustav Brock earned 100 total points
ID: 40410095
It should raise an error, as the correct syntax is:

    Me!txtTest.Value = "abc"

But for testing it is better to pop a message:

    MsgBox "cmdTranslate clicked."

/gustav
0
Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

 

Assisted Solution

by:Dovberman
Dovberman earned 0 total points
ID: 40410108
I commented out the list box statements.

Then I got the Set Focus error.

Applied the SetFocus method.
Me!lstTranslationResults.SetFocus

Now it works.

Thanks,
0
 
LVL 84
ID: 40410435
Sorry, but I'm not clear how the SetFocus method helped you to populate the Listbox. Could you please explain what the actual solution was to the problem you stated (i.e. populating the Listbox).
0
 

Author Comment

by:Dovberman
ID: 40411103
Error message received.  Cannot set a value for the control unless the control has the focus.

Once I set the focus, it worked. I remember this from years ago.  Try setting the controlsource of a listbox without setting focus.
0
 
LVL 84
ID: 40411359
Error message received.  Cannot set a value for the control unless the control has the focus.
No, you can set the RowSource of a Listbox without the Listbox having focus. I do it all the time (and just tried it on a test database, to be sure).

As far as ControlSource ... that's not what you asked, but still you can do that without the Listbox having the focus.

Not trying to be difficult, but your accepted solutions don't match up with what you asked ...
0
 

Author Comment

by:Dovberman
ID: 40411548
OK I will not argue. SetFocus works for me.
0
 
LVL 84
ID: 40411635
As I said, not trying to argue, just making sure that others who see this understand that SetFocus is not the solution. Simply put, you don't have to use SetFocus to modify the Rowsource (or Controlsource, for that matter) of your Listbox.
0
 

Author Closing Comment

by:Dovberman
ID: 40417984
Thanks
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction The Visual Basic for Applications (VBA) language is at the heart of every application that you write. It is your key to taking Access beyond the world of wizards into a world where anything is possible. This article introduces you to…
In a multiple monitor setup, if you don't want to use AutoCenter to position your popup forms, you have a problem: where will they appear?  Sometimes you may have an additional problem: where the devil did they go?  If you last had a popup form open…
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

932 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now