Solved

macro to run from cmd button to include extra field

Posted on 2013-12-04
7
274 Views
Last Modified: 2013-12-04
Hi Experts

Need a macro when the command button cmdarea is clicked..it insert  into the select qry the field "region" to the far right and sort by groupby and add the criteria "core"and run..To show the output.

Qry name:-
qry salesbyarea
0
Comment
Question by:route217
  • 4
  • 2
7 Comments
 
LVL 61

Accepted Solution

by:
mbizup earned 500 total points
ID: 39695309
Probably simpler to just create the whole query in code.  See the following for info/sample code using querydefs:
http://msdn.microsoft.com/en-us/library/office/bb177500(v=office.12).aspx


Your code might look something like this:


Sub CreateQuery()
     dim strSQL as string
     dim qdf as QueryDef

     strSQL = "SELECT Field1, Field2, Region FROM YourTable WHERE core = '" & me.txtCore & "' ORDER BY [GroupBy]"
      
     set qdf = Currentdb.CreateQueryDef("qryMyQuery", strSQL)
     docmd,OpenQuery "qryMyQuery"
end sub

Open in new window



but better... create a form in datasheet view, including any needed fields,  and change the recordsource dynamically like this:

Sub CreateQuery()
     dim strSQL as string
     dim qdf as QueryDef

     strSQL = "SELECT Field1, Field2, Region FROM YourTable WHERE core = '" & me.txtCore & "' ORDER BY [GroupBy]"
      

     docmd.OpenForm "frmMyFormName"
     forms!MyformName.Recordsource = strSQL
end sub

Open in new window

0
 

Author Comment

by:route217
ID: 39695381
Mbizup...

excellent feedback....as always...

just one last point if I was to revert the query back to its original state I.e. remove the region field....what would the vba be?
0
 
LVL 61

Expert Comment

by:mbizup
ID: 39695397
Are there some conditions where you want the field and other conditions where you dont?  If so, just include them in the code and add the field accordingly:

Sub CreateQuery()
     dim strSQL as string
     dim qdf as QueryDef

    ' For example, if you have a 'Use region' checkbox:
     If chkUseRegion = true then

            strSQL = "SELECT Field1, Field2, Region FROM YourTable WHERE core = '" & me.txtCore & "' ORDER BY [GroupBy]"
      else
            strSQL = "SELECT Field1, Field2 FROM YourTable WHERE core = '" & me.txtCore & "' ORDER BY [GroupBy]"
     End if

    ' etcetera
      

Open in new window

0
Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

 

Author Comment

by:route217
ID: 39695408
Sorry other condition was if I wanted to remove the field region..via vba
0
 
LVL 61

Expert Comment

by:mbizup
ID: 39695504
Not 100%clear what you are asking for, but try this:


' To create a query including region
Sub CreateQuery()
     dim strSQL as string
     dim qdf as QueryDef

     strSQL = "SELECT Field1, Field2, Region FROM YourTable WHERE core = '" & me.txtCore & "' ORDER BY [GroupBy]"
      
     set qdf = Currentdb.CreateQueryDef("qryMyQuery", strSQL)
     docmd.OpenQuery "qryMyQuery"
end sub

Open in new window


To go back to not including region
Sub RevertQuery()

     dim strSQL as string
     dim qdf as QueryDef

      ' Delete the query
      currentdb.QueryDefs.Delete  "qryMyQuery"

     ' Recreate it without Region
     strSQL = "SELECT Field1, Field2 FROM YourTable WHERE core = '" & me.txtCore & "' ORDER BY [GroupBy]"
      
     set qdf = Currentdb.CreateQueryDef("qryMyQuery", strSQL)
     docmd.OpenQuery "qryMyQuery"
end sub

Open in new window

0
 
LVL 61

Expert Comment

by:mbizup
ID: 39695510
Finally, I'm not sure how you intend to use this... and it is a good academic exercise... but I am almost certain that this is NOT the optimal way to build your database,
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 39695518
to preserve the original sql statement you have to store it in a variable and used it back when your done with adding/altering the original sql statement


dim oSql as string, qd as dao.querydef, db as dao.database
set db=currentdb
set qd=db.querydefs("qry salesbyarea")

oSql=qd.sql

'do your thing here
strSql="select..... <with added> fields ..etc.."
qd.sql=strSQl




'now return the original sql statement
qd.sql=oSql
0

Featured Post

Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

Question has a verified solution.

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

The first two articles in this short series — Using a Criteria Form to Filter Records (http://www.experts-exchange.com/A_6069.html) and Building a Custom Filter (http://www.experts-exchange.com/A_6070.html) — discuss in some detail how a form can be…
A simple tool to export all objects of two Access files as text and compare it with Meld, a free diff tool.
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

810 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