Home All Groups Group Topic Archive Search About

Run an Access report in a VB .Net application

Author
11 Aug 2006 9:31 PM
Tony A.
I'm in the process of migrating a MS Access 2003 application to VB .Net
(2005).  How can I run the reports in Access from the VB application?
--
Tony

Author
12 Aug 2006 4:53 AM
Cor Ligthert [MVP]
Tony,

Probably with Office integration, be aware that the end users needs all full
licence of MS office access for that.

Cor

Show quoteHide quote
"Tony A." <To***@discussions.microsoft.com> schreef in bericht
news:0E2404F2-5FDF-45CA-94CC-8009152D0B3B@microsoft.com...
> I'm in the process of migrating a MS Access 2003 application to VB .Net
> (2005).  How can I run the reports in Access from the VB application?
> --
> Tony
Author
12 Aug 2006 5:30 PM
George Shubin
> I'm in the process of migrating a MS Access 2003 application to VB .Net
> (2005).  How can I run the reports in Access from the VB application?

Try the following.  It requires Microsoft's Access to be installed on the
user's system.  (Watch out for wordwrap.)



Public Sub PrintAccessReport(ByVal sReportName As String, Optional ByVal
sQryName As String = "", Optional ByVal sSQL As String = "")

Dim oAccess As New Access.ApplicationClass

oAccess.Visible = True

oAccess.OpenCurrentDatabase(gsCurLocation & gsCurDatabase)

oAccess.DoCmd.Minimize()

'Create new query if needed

If sQryName.Length > 0 And sSQL.Length > 0 Then

Try

'oAccess.CurrentDb.QueryDefs.Delete(sQryName)

oAccess.DoCmd.DeleteObject(Access.AcObjectType.acQuery, sQryName)

Catch

'Close and reopen the Access object if above statement failed

oAccess.Visible = False

oAccess.Quit(Access.AcQuitOption.acQuitSaveNone)

System.Runtime.InteropServices.Marshal.ReleaseComObject(oAccess)

oAccess.Visible = True

oAccess.OpenCurrentDatabase(gsCurLocation & gsCurDatabase)

oAccess.DoCmd.Minimize()

End Try

oAccess.CurrentDb.CreateQueryDef(sQryName, sSQL)

End If

'Preview the report

oAccess.DoCmd.OpenReport(sReportName, Access.AcView.acViewPreview, , ,
Access.AcWindowMode.acDialog)

'Close the Access Instance

If Not oAccess Is Nothing Then

' Call Access Quit method without saving any changes.

oAccess.Quit(Access.AcQuitOption.acQuitSaveNone)

' Use Marshal class' ReleaseComObject to release the Access instance.

System.Runtime.InteropServices.Marshal.ReleaseComObject(oAccess)

' Dereference the oAccess variable.

oAccess = Nothing

End If

End Sub

------------------------------------------------------------------------
George Shubin       Custom Software Development
dX Software Systems          Database Applications
Ph: 503-981-6806                     Fax: 503-982-0120
www.dxonline.com              geo***@dxonline.com
------------------------------------------------------------------------

"Despite efforts by government to prevent concentration in industry, the
regulators are bringing us to the point where only the largest companies can
survive."  --  Henry Ford
Author
3 Dec 2006 2:19 AM
Soddy
Just interested in knowing where there might be more info/articles/tutorials
on 'Access Automation' using VBE (i.e., other aspects of this - not just
reports)??

--
Thanks!
Soddy


Show quoteHide quote
"George Shubin" wrote:

> > I'm in the process of migrating a MS Access 2003 application to VB .Net
> > (2005).  How can I run the reports in Access from the VB application?
>
> Try the following.  It requires Microsoft's Access to be installed on the
> user's system.  (Watch out for wordwrap.)
>
>
>
> Public Sub PrintAccessReport(ByVal sReportName As String, Optional ByVal
> sQryName As String = "", Optional ByVal sSQL As String = "")
>
> Dim oAccess As New Access.ApplicationClass
>
> oAccess.Visible = True
>
> oAccess.OpenCurrentDatabase(gsCurLocation & gsCurDatabase)
>
> oAccess.DoCmd.Minimize()
>
> 'Create new query if needed
>
> If sQryName.Length > 0 And sSQL.Length > 0 Then
>
> Try
>
> 'oAccess.CurrentDb.QueryDefs.Delete(sQryName)
>
> oAccess.DoCmd.DeleteObject(Access.AcObjectType.acQuery, sQryName)
>
> Catch
>
> 'Close and reopen the Access object if above statement failed
>
> oAccess.Visible = False
>
> oAccess.Quit(Access.AcQuitOption.acQuitSaveNone)
>
> System.Runtime.InteropServices.Marshal.ReleaseComObject(oAccess)
>
> oAccess.Visible = True
>
> oAccess.OpenCurrentDatabase(gsCurLocation & gsCurDatabase)
>
> oAccess.DoCmd.Minimize()
>
> End Try
>
> oAccess.CurrentDb.CreateQueryDef(sQryName, sSQL)
>
> End If
>
> 'Preview the report
>
> oAccess.DoCmd.OpenReport(sReportName, Access.AcView.acViewPreview, , ,
> Access.AcWindowMode.acDialog)
>
> 'Close the Access Instance
>
> If Not oAccess Is Nothing Then
>
> ' Call Access Quit method without saving any changes.
>
> oAccess.Quit(Access.AcQuitOption.acQuitSaveNone)
>
> ' Use Marshal class' ReleaseComObject to release the Access instance.
>
> System.Runtime.InteropServices.Marshal.ReleaseComObject(oAccess)
>
> ' Dereference the oAccess variable.
>
> oAccess = Nothing
>
> End If
>
> End Sub
>
> ------------------------------------------------------------------------
> George Shubin       Custom Software Development
> dX Software Systems          Database Applications
> Ph: 503-981-6806                     Fax: 503-982-0120
> www.dxonline.com              geo***@dxonline.com
> ------------------------------------------------------------------------
>
> "Despite efforts by government to prevent concentration in industry, the
> regulators are bringing us to the point where only the largest companies can
> survive."  --  Henry Ford
>
>
>