2014-12-05 71 views
0

我在我的tblT1中有超过5000条记录 我在Access 2010中执行查询,并在MS Sql server数据库上为我的报告提供链接表。已过滤MS Pass中的查询

  1. 穿越查询:

    PTQuery1 = “SELECT * tblT1从tblT1。”

但我需要执行上面的传递查询基于条件(tempQuotationNo)。

我的朋友建议我下面的查询:

基于
  • 选择查询上穿越查询:

    查询1 =“SELECT PTQuery1 * FROM PTQuery1 WHERE PTQuery1。 QuotationNo = tempQuotationNO;“

  • tempQuotationNO可以是表单中的变量或字段。

    据我所知,两个查询都会将tblT1的所有记录加载到客户端(加载后的第二个查询过滤器结果为PTQuery1)。 这两个工作正常,但我需要减少加载到我的客户记录的时间。

    有没有人为我推荐解决方案?

    目标是(首先)筛选SQL Server上的记录,然后根据表单或用户定义变量中的字段将结果加载到FE,以减少从SQL Server向客户端加载数据的时间。

    +1

    因为您没有VBA标签;你可以使用VBA吗?如果是,您可以创建一个函数,根据您的需要使用自定义SQL重新创建/修改传递查询。 – 2014-12-05 09:44:49

    +0

    是的。让我知道我是否了解您的建议。你的意思是我使用变量定义一个函数并将其放置在条件中? – Seyyed 2014-12-05 17:45:48

    回答

    1

    只需修改PT这样的查询:

    Dim strSQL As String 
    strSQL = "select * from table where QuotationNo = " & lngQuoteNum 
    CurrentDb.QueryDefs("MyPass").SQL = strSQL 
    

    在这一点上,你可以启动你的表格等,将虽然使用这个新的SQL为合格。上面假设longQuoteNum是一个VBA var。如果报价编号是文字,那么您需要:

    strSQL = "select * from table where QuotationNo = '" & lngQuoteNum & "'"