PDA

View Full Version : extracting data from access based on the month



Dara
01-23-2012, 05:19 AM
Hi,

In ms access i created a table known as tab1.In the table there is a date field.The date is in the format of month/date/year eg. 4/21/2012. I need a query to export data into excel between two date.If the month is jan means it should extract oly jan data and should be exported to sheet1 in excel,likewise if the month is feb means,it should extract oly feb data and should be exported to sheet2,....


I have used the below mentioned macro in access to extract data from access to excel.
Now i need to insert a query in tat to extract datas according to the months.Plz help me out in doing tat.


Sub import()
Dim lngColumn As Long
Dim xlx As Object, xlw As Object, xls As Object, xlc As Object
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim blnEXCEL As Boolean, blnHeaderRow As Boolean
blnEXCEL = False
' Replace True with False if you do not want the first row of
' the worksheet to be a header row (the names of the fields
' from the recordset)
blnHeaderRow = True
' Establish an EXCEL application object
On Error Resume Next
Set xlx = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Set xlx = CreateObject("Excel.Application")
blnEXCEL = True
End If
Err.Clear
On Error GoTo 0
' Change True to False if you do not want the workbook to be
' visible when the code is running
xlx.Visible = True
' Replace C:\Filename.xls with the actual path and filename
' of the EXCEL file into which you will write the data
Set xlw = xlx.Workbooks.Open("C:\XB.xlsm")
' Replace WorksheetName with the actual name of the worksheet
' in the EXCEL file
' (note that the worksheet must already be in the EXCEL file)
Set xls = xlw.Worksheets("Sheet1")
' Replace A1 with the cell reference into which the first data value
' is to be written
Set xlc = xls.Range("A3") ' this is the first cell into which data go
Set dbs = CurrentDb()
' Replace QueryOrTableName with the real name of the table or query
' whose data are to be written into the worksheet
Set rst = dbs.OpenRecordset("TableName", dbOpenDynaset, dbReadOnly)
If rst.EOF = False And rst.BOF = False Then
rst.MoveFirst
If blnHeaderRow = True Then
For lngColumn = 0 To rst.Fields.Count - 1
xlc.Offset(0, lngColumn).Value = rst.Fields(lngColumn).Name
Next lngColumn
Set xlc = xlc.Offset(1, 0)
End If
' write data to worksheet
Do While rst.EOF = False
For lngColumn = 0 To rst.Fields.Count - 1
xlc.Offset(0, lngColumn).Value = rst.Fields(lngColumn).Value
Next lngColumn
rst.MoveNext
Set xlc = xlc.Offset(1, 0)
Loop
End If
rst.Close
Set rst = Nothing
dbs.Close
Set dbs = Nothing
' Close the EXCEL file while saving the file, and clean up the EXCEL objects
Set xlc = Nothing
Set xls = Nothing
xlw.Close True ' close the EXCEL file and save the new data
Set xlw = Nothing
If blnEXCEL = True Then xlx.Quit
Set xlx = Nothing
End Sub

hansup
01-23-2012, 09:06 AM
Are you able to create an Access query which returns rows for the month of interest?

If so, use that query in place of TableName in this section of your code.

' Replace QueryOrTableName with the real name of the table or query
' whose data are to be written into the worksheet
Set rst = dbs.OpenRecordset("TableName", dbOpenDynaset, dbReadOnly)

Instead of "TableName", the first argument to the OpenRecordset method could be the name of a saved query, the text of a SELECT statement, or the name of a string variable which contains a SELECT statement. See Access' help topic for OpenRecordset for more detailed information.

While you're reviewing the help topic, look at the other options for OpenRecordset. I'm unsure whether you really need dbOpenDynaset here. Perhaps a snapshot recordset type would be appropriate. However, I didn't review your code in enough detail to say more ... that was difficult to read. You should at least apply the VBA code tag to your code sample to make it easier for us to read.

Highlight the code, then click the VBA icon located above the editing text area. It is a square icon, outlined in green, with a white background, and the letters "VBA" in green.

mcaellis
01-30-2012, 07:38 AM
Dara, Format(Date(),"mm") will pull the month you want from the date field