Rivercity Technology Services LTD Logo
HomeAbout Us
Technology Services
Icon showing a support technician
IT Support Services
Cybersecurity Risk Management at one predictable flat rate.
Icon of light bulbs on a laptop screen
IT Consulting
Business optimization through the smart use of technology.
Icon showing a hand holding a phone
Business Phone Services
VoIP Telephone solutions from RCT. 
Icon showing a database and a cloud
Backups & Recovery
Cloud & On Premise - ready to recover!
Icon showing computer code on a monitor
Software Development
Web & Mobile App development
Icon showing website wireframes
Website Development & Hosting
Web design and full hosting & maintenance packages!
Icon showing an envelope being opened
Modern Email Management
Microsoft 365 email provisioning, security & management.
“You’re giving me the ‘it’s not you, it’s me’ routine? I invented ‘it’s not you, it’s me.’ Nobody tells me it’s them not me; if it’s anybody, it’s me.”
- George Costanza
Learning CenterContact Us
Book A Consultation
Illustration of a person writing a blog post with a pencil

Listing Files From A Directory In An Access Form

wb2

How to create a box on a Microsoft Access form

A recent challenge i ran into was how to display files from a folder in an Access database form.  After a LOT of googling, I discovered there is not much out there on this topic, and what was there was overly complex and not what I wanted.  Hence my blog today.  The basic steps are this:

  1.  Create your form.
  2.  Insert a Web Control Object on the form.
  3.  Set the control source of the web control to the folder you are want to display.

Now, that sounds easy enough right!  noooo.  There are a few more changes I wanted to make:

  1.  Display the filenames in full list view, not icons horizontally across the screen
  2.  Make it so clicking a button would change the folder being displayed

To do this was tricky - you have to

  1. Create a button that sets the control source to the new path
  2. account for the = symbol and " symbols of the path being included
  3. turn on a timer for a few milliseconds so the webcontrol can load the data
  4. set the webcontrol to change the view to list (or other options) after the timer is expired, turn off the timer.

This is NOT well documented, in fact - I didn't find any references on line about using a timer for this to make it work, and had to do a lot of testing to make it do what I wanted.  And what's neat about this vs a listbox or other methods, is your browser properly shows the icons, allows sorting by clicking column headers, and generally behaves rather nicely!  I was impressed.  No special references needed, no complex module.

In this case, WB1 is my webcontrol box, and I used a button than gets a UNC to a server with a shared folder in this example.  You could easily replace it with something like "C:\Windows".  You can add more buttons, or make a dropdown that gives you a list of paths, etc...lots of options.  This example is just what will display the results for you.

YES, you need the goofy quotes in the beginning and end of the code,  and the "=".  Otherwise it will NOT work, you'll be missing required elements of the control source.

The options for currentviewmode are:

1 = Icons
2 = Small icons
3 = List
4 = Details
5 = Thumbnails
6 = Tile
7 = Thumbnail strip

I played around with adding an HourGlass timer, as sometimes the form loading content took more than a few seconds.  You don't need it though.

So here is the resulting form code (without all the fancy error handling and what have you):

' this is my button

Private Sub Command52_Click()
Me.lblOps.Caption = "THIS IS THE CONTENTS OF THE FOLDER:"
Me.WB1.ControlSource = "=""\\YOURSERVER\YOURSHARE\SAMPLEDIR"""
Me.WB1.Object.Document.currentviewmode = 3
Me.TimerInterval = 500
End Sub

'I do this so when the record is loaded it sets the view properly

Private Sub Form_Current()
DoCmd.Hourglass True
Me.lblOps.Caption = "THIS IS THE CONTENTS OF THE FOLDER:"
Me.WB1.ControlSource = "=""\\YOURSERVER\YOURSHARE\SAMPLEDIR"""
DoCmd.Hourglass False
Me.TimerInterval = 500
End Sub

'this is the timer code, which is actually VERY simple

Private Sub Form_Timer()
Me.WB1.Object.Document.currentviewmode = 3
Me.TimerInterval = 0
End Sub

Jeff Shirley
Article Written by Jeff Shirley
Related Articles
Featured image
Your Guide to Managed Website Hosting
Creating a website is only the first step. Keeping it online and accessible to visitors 24/7 involves a lot of additional work. Hosting your site means choosing...
2022 - Copyright, All Rights Reserved
crossmenu