Learn Microsoft Access Advanced Programming Techniques, Tips and Tricks.

RUNSQL Action in MACRO and VBA

Beginners of Microsoft Access can get confused with the usage of RUNSQL Action in Macro and DoCmd.RUNSQL method of Visual Basic for Applications (VBA). Whether you run this Action in Macro or in VBA you must provide SQL Statement of an Action-Query or Data-Definition Query Types only. If you are not sure which are these types of queries then refer the following list:

Action Query Types
Query Type Statement
Append INSERT INTO
Delete DELETE
Make-Table SELECT ... INTO
Update UPDATE

Data-Definition Query Types
Query Type Statement
Create a table CREATE TABLE
Alter a table ALTER TABLE
Delete a table DROP TABLE
Create an Index CREATE INDEX
Delete an Index DROP INDEX

Using SQL Statement of any other Query type in RUNSQL Action will end up in errors. In Macro the length of an SQL statement can be maximum 256 characters or less.

The DoCmd.RUNSQL method of VBA can execute an SQL statement with a maximum length of 32768 characters or less.

Note: You are not allowed to give an existing Query Name as parameter to this command. But, in VBA you can load the SQL Statement of a predefined query into a String Variable and use it as parameter to the DoCmd.RUNSQL command. 

Example-1:

Public Function DelRecs()
'Existing Delete Query’s SQL is used in this example
Dim db As Database, qryDef As QueryDef
Dim strSQL As String

'Read and save the SQL statement from 'Query48'
'and load into strSQL string variable
Set db = CurrentDb
Set qryDef = db.QueryDefs("Query48")
strSQL = qryDef.SQL

'Execute the SQL statement after
'disabling warning messages
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True

'Using DoCmd.OpenQuery Command to run a Delete Query
DoCmd.SetWarnings False
DoCmd.OpenQuery "Query48", acViewNormal
DoCmd.SetWarnings True

End Function

The RUNSQL Action of Macro Modifies/Deletes information of several records in one go. Before executing the Action Query Microsoft Access gives out a warning message, appropriate to the action specified, and waits for the User's response. The User must respond to proceed/cancel the action specified.

Once the procedure is perfected, by test running the Action Query several times, we can ask Microsoft Access to turn OFF the Warning Messages during execution of RUNSQL Action. After the Query running step, give control back to MS-Access by turning ON the Warning Message detection. From that point onward MS-Access will be watching for the unexpected errors in the System and warns the User, as and when it happens.

The SetWarnings Action in Macro and DoCmd.SetWarnings Method in VBA are used for this purpose, when data processing for report involves one or more action query steps are placed in a Macro. Check the image of a Macro, given below in design view, with the SetWarnings settings, before and after the RUNSQL Action in the Macro. The first Action in the Macro is Setwarnings with the Parameter value NO to turn off the Warning Messages, when the RUNSQL Action executes in the next step. The SetWarnings Action with the Parameter value YES turns ON the Warning Messages in step three, so that MS-Access can take care of future unexpected System Errors of any kind, as and when it happens.

Example-2: Create a Table with the Data-definition SQL

Warning:Double-check that you are not using any existing table-name for this sample run.

Public Function DataDefQuery()
Dim strSQL As String

strSQL = "CREATE TABLE Books  (Title TEXT(50) NOT NULL, Author TEXT(50) NOT NULL, PublishDate DATE, Price CURRENCY)"

DoCmd.RunSQL strSQL

End Function

The OpenQuery Action in Macro and DoCmd.OpenQuery Method of VBA uses the name of a predefined Query (of any type) to open them in any of the following Views:

  • Design View
  • Datasheet View
  • Print Preview
  • Pivot Table
  • Pivot Chart

 

Share:

No comments:

Post a Comment

Translate



PageRank
Your email address:

Delivered by FeedBurner

Search

Infolinks Text Ads


Blogs Directory

Popular Posts

Search This Blog

Blog Archive

Powered by Blogger.

Labels

Forms How Tos Functions MS-Access Security Reports Animations msaccess animation msaccess forms Utilities msaccess controls Access and Internet MS-Access Scurity MS-Access and Internet Queries External Links msaccess reports msaccess tips Menus and Toolbars Accesstips MsaccessLinks Process Controls Art Work Downloads msaccess How Tos Graph Charts msaccessQuery List Boxes Command Buttons Emails and Alerts Query Combo Boxes Custom Wizards ms-access functions msaccess graphs msaccess reporttricks msaccessprocess security advanced Access Security DOS Commands Data Macros Menus Property Report Top Values VBA msaccess email msaccess menus progressmeter Access2007 Array Auto-Number Command Button Custom Functions Join Microsoft Numbering System Records Security Split SubForm Table Utility Workgroup database msaccess functions msaccess wizards Access2003 Accounting Year Action Animation Attachment Binary Numbers Budgeting Calculation ChDir Color Palette Conditional Formatting Controls Copy Data Filtering Data Type Defining Pages Diagram Disk Dynamic Lookup Error Handler Excel Export Expression External Field Type Fields Filter Form Form Instances Formatting Groups Hexadecimal Numbers Import Labels List Logo Macro Mail Merge Main Form Memo Methods Monitoring Object Reference Objects Octal Numbers Operating System Paste Primary-Key Product Rank Reading Rich Text Sequence SetFocus Summary Tab-Page Time Difference Union Query User Users Variables Water-Mark Word automatically commands function hyperlinks iSeries Date iif ms-access msaccess msaccess alerts pdf files reference restore switch text toolbar tutorial updating upload vba code

Featured Post

DIR Getting File Names From Folder

We all know Dir() Function from the time of Windows DOS Operating System.  This is the first Command introduced to those who sit on a Perso...

Labels

Blog Archive

Recent Posts