Access Requery Or Not To Requery – That Is The Question

Access Requery Or Not To Requery – That Is The Question

The following four methods can be found in Microsoft Access and have different uses:

  1. Access Requery
  2. Access Refresh
  3. Access Repaint
  4. Access Recalc

They can be split into two parts where the first two points handles records (the data) and the latter two the objects and their components (no data). Therefore you can start by answering the first simple question to help navigate to which part is best to use:

“Do I want to update data or components in my Microsoft Access database?”

access requeryAccess Requery Or Not To Requery – That Is The Question: The Definitions

Access Requery

Using the Requery method you are calling a complete reloading of all records from the underlying table or query, This means for example when editing an existing record; say changing a first name to the current record as a simple example and you then call the Requery method, you actually update all records in the underlying data table or query which means if other records had either been updated, deleted and added they too will bind to the loading form (screen view of where you typically would edit data).

This is in effect a complete reload of the data (recordset to the form) and the cursor is repositioned to the first record of the updated recordset losing the current cursor’s position of the record just edit (if it were not the first record).

The Access Requery can be called not just for a form but for a control too like a ComboBox (drop-down box) which will reload the recordsource to that control.

For example, to reload a ComboBox control’s recordsource using VBA: Me.ComboBox1.Requery

Access Refresh

Using the Access Refresh method is a  more local version to Access Requery where it will not reload the entire recordset but only update and save the current record being edited.

This means no new additions or deletions will be seen as the underlying table or query is not reloaded. The other added benefit is that the current record’s cursor stays on the current record and doesn’t jump to the first record.

For example, to refresh the current form you use this simple VBA code Me.Refresh

Access Repaint

The Access Repaint method is another way to say the screen is being refreshed or repainted. If you have a control like a counter or timer in order for it to change and update you will keep repainting the form. This automatically happens when you switch views or minimize and then restore a window but to keep the same screen and just update it, you simply call the following VBA code: Me.Repaint.

Access Recalc

The Access Recalc method is used to recalculate expressions in controls (like a formula update).  However, I would be surprised if you need to call this method as expressions that I’ve used automatically update and show the new result. But if for any reason you want to enforce this then using the VBA code: Me.TextBox.Recalc will recalculate the TextBox control containing an expression like “[Qty]*[UnitPrice]“.

To Access Requery or Not To Access Query – that’s the question and hopefully you now have a clearer understanding of the different methods available to you.

I would love to hear of your experiences from the above methods in the reply comments box below or you can of course email me.

This entry was posted in Forms, Functions, Macros, Modules, MS Access and tagged , , , , . Bookmark the permalink.

One Response to Access Requery Or Not To Requery – That Is The Question

  1. Ben Beitler says:

    Using VBA code you can also call the DoCmd object which also uses the Requery method too. Additionally these methods can also be use in macros whether there are direct commands or called via a sub or function procedure in VBA.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Confirm you are human.