我做了一个入库管理程序,是用VB+Access做的,现在有一个问题,我在Access里做了个报表,是用Access中的设计器做的,效果非常不错,但现在我想实现这样一个功能,就是在VB主程序里点一个按钮,然后触发Access数据库开发,而且调用这个报表,请问可以实现吗?如果可以的话怎么实现呢?我自己有个想法,不知道可以不可以在Access里生成一个Exe文件,直接就调用这个报表,然后在VB主程序里用Shell来调用这个Exe文件,但不清楚可以实现否,请高手指点一下,谢谢了!

解决方案 »

  1.   

    write a macro named MyAccessMacro that do whatever you want to do in AccessSub RunAccMacro()
       Dim oAccess as Object, oDB as Object
       Set oAccess = CreateObject("Access.Application")
       oAccess.Visible = True
       oAccess.OpenCurrentDatabase "C:\DB1.mdb"
       oAccess.Run "MyAccessMacro"
    End Sub 
      

  2.   

    我试了一下,开了数据库,但怎么运行那个报表呢?MyAccessMacro是不是要换成报表的名称,我换了一下好像不行,请麻烦高手帮忙讲清楚点好吗?谢谢了!
      

  3.   

    reports and macros are diffferent objects
    see access VBA reference in Office Help
      

  4.   

    高手,麻烦多讲一下好吗,我在Access里建立了一个宏,起名为MyAccessMacro,好像也不行,请问到底该怎么设置啊?是否要建立一个模块,然后里面写入sub()来运行?
      

  5.   

    1. 使用Microsoft Access建立数据库(如:novelty.mdb)的相关报表(如:rptEmployess)。 2. 创建引用    在VB中使用“Project References"菜单创建一个对Microsoft Access 8.0 Object Library的引用。 3. 程序清单 'References MS Access 8.0 Object Library (this 'code will work with any verson of Access that 'supports Automation) Dim MSAccess As Access.Application Private sub Command1_Click()    Set MSAccess=NEW Access.Application    MSAccess.OpenCurrentDatabase(App.Path & "\novelty.mdb")    MSAccess.DoCmd.OpenReport "rptEmployess",acViewNormal    MSAccess.CloseCurrentDatabase    Set MSAccess=Nothing end Sub
      

  6.   

    feiyun0112,你说的这个方法我试过,如果是在Access2000中就直接打印了,但我如果想在打印前先预览一下这个报表,还要设置一下默认的打印机怎么办呢?如果是在Access2003里会保存一个MDI文件,到是可以预览,但我现在是要在Access2000里用,而且不能直接都打印,因为用户有很多情况下要设置默认打印机,请文怎么实现?谢谢
      

  7.   

    feiyun0112,你说的这个方法我试过,如果是在Access2000中就直接打印了,但我如果想在打印前先预览一下这个报表,还要设置一下默认的打印机怎么办呢?如果是在Access2003里会保存一个MDI文件,到是可以预览,但我现在是要在Access2000里用,而且不能直接都打印,因为用户有很多情况下要设置默认打印机,请文怎么实现?谢谢
    ===============================
    改一改这句:
    MSAccess.DoCmd.OpenReport "rptEmployess",acViewNormal 
    改成:
    MSAccess.DoCmd.OpenReport "rptEmployess",acViewPreview
      

  8.   

    我想在VB中通过一个按钮直接打开预览在Access2000中报表,feiyun0112,你说的这个方法我试过
    ,为什么单击按钮就直接打印报表了啊,而没有打开报表
      

  9.   

    如果我数据库有密码,在代码中怎样把密码设置进去啊啊  Set MSAccess = New Access.Application
      Dim ss As String    
         MSAccess.OpenCurrentDatabase (App.Path + "\sy.mdb")     MSAccess.DoCmd.OpenReport "商品条码", acViewNormal     MSAccess.CloseCurrentDatabase     Set MSAccess = Nothing