Compartilhar via


Coleção QueryDefs (DAO)

Aplica-se ao: Access 2013, Office 2013

Uma coleção QueryDefs contém todos objetos QueryDef de um objeto de Banco de dados em um banco de dados do mecanismo de banco de dados do Microsoft Access.

Comentários

Para criar um novo objeto QueryDef, use o método CreateQueryDef. No espaço de trabalho do Microsoft Access, se você fornecer uma cadeia de caracteres para o argumento nome ou se você definir explicitamente a propriedade Nome do novo objeto QueryDef a uma cadeia de caracteres de comprimento não zero, você criará um QueryDef permanente que será acrescentado automaticamente à coleção QueryDefs e salvo no disco. Fornecer uma cadeia de caracteres de comprimento zero, como o argumento nome ou definir explicitamente a propriedadeNome como uma cadeia de caracteres de comprimento zero resultará em um objeto QueryDef temporário.

Para fazer referência a um objeto QueryDef em uma coleção por seu número ordinal ou por sua configuração de propriedade Name, use uma das seguintes formas de sintaxe:

QueryDefs(0)

QueryDefs("nome")

QueryDefs! [nome]

Você pode consultar objetos QueryDef temporários apenas pelas variáveis de objeto atribuído a eles.

Exemplo

Este exemplo cria um novo objeto QueryDef e acrescenta-o à coleção QueryDefs do objeto Database Northwind. Em seguida, são enumeradas a coleção QueryDefs e a coleção Properties do novo QueryDef.

    Sub QueryDefX() 
     
       Dim dbsNorthwind As Database 
       Dim qdfNew As QueryDef 
       Dim qdfLoop As QueryDef 
       Dim prpLoop As Property 
     
       Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     
       ' Create new QueryDef object. Because it has a  
       ' name, it is automatically appended to the  
       ' QueryDefs collection. 
       Set qdfNew = dbsNorthwind.CreateQueryDef("NewQueryDef", _ 
             "SELECT * FROM Categories") 
     
       With dbsNorthwind 
          Debug.Print .QueryDefs.Count & _ 
             " QueryDefs in " & .Name 
     
          ' Enumerate QueryDefs collection. 
          For Each qdfLoop In .QueryDefs 
             Debug.Print "  " & qdfLoop.Name 
          Next qdfLoop 
     
          With qdfNew 
             Debug.Print "Properties of " & .Name 
     
             ' Enumerate Properties collection of new  
             ' QueryDef object. 
             For Each prpLoop In .Properties 
                On Error Resume Next 
                Debug.Print "  " & prpLoop.Name & " - " & _ 
                   IIf(prpLoop = "", "[empty]", prpLoop) 
                On Error Goto 0 
             Next prpLoop 
          End With 
     
          ' Delete new QueryDef because this is a  
          ' demonstration. 
          .QueryDefs.Delete qdfNew.Name 
          .Close 
       End With 
     
    End Sub 

Este exemplo usa o método CreateQueryDef para criar e executar um QueryDef temporário e um permanente. A função GetrstTemp é exigida para a execução deste procedimento.

    Sub CreateQueryDefX() 
     
       Dim dbsNorthwind As Database 
       Dim qdfTemp As QueryDef 
       Dim qdfNew As QueryDef 
     
       Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     
       With dbsNorthwind 
          ' Create temporary QueryDef. 
          Set qdfTemp = .CreateQueryDef("", _ 
             "SELECT * FROM Employees") 
          ' Open Recordset and print report. 
          GetrstTemp qdfTemp 
          ' Create permanent QueryDef. 
          Set qdfNew = .CreateQueryDef("NewQueryDef", _ 
             "SELECT * FROM Categories") 
          ' Open Recordset and print report. 
          GetrstTemp qdfNew 
          ' Delete new QueryDef because this is a demonstration. 
          .QueryDefs.Delete qdfNew.Name 
          .Close 
       End With 
     
    End Sub 
     
    Function GetrstTemp(qdfTemp As QueryDef) 
     
       Dim rstTemp As Recordset 
     
       With qdfTemp 
          Debug.Print .Name 
          Debug.Print "  " & .SQL 
          ' Open Recordset from QueryDef. 
          Set rstTemp = .OpenRecordset(dbOpenSnapshot) 
     
          With rstTemp 
             ' Populate Recordset and print number of records. 
             .MoveLast 
             Debug.Print "  Number of records = " & _ 
                .RecordCount 
             Debug.Print 
             .Close 
          End With 
     
       End With 
     
    End Function 

O exemplo a seguir mostra como executar uma consulta parâmetro. A coleção de Parâmetros é usada para configurar o parâmetro de Organização da consulta myActionQuery antes da execução da consulta.

Código de exemplo fornecido pelaReferência do programador do Microsoft Access 2010.

    Public Sub ExecParameterQuery()
    
        Dim dbs As DAO.Database
        Dim qdf As DAO.QueryDef
    
        Set dbs = CurrentDb
        Set qdf = dbs.QueryDefs("myActionQuery")
    
        'Set the value of the QueryDef's parameter
        qdf.Parameters("Organization").Value = "Microsoft"
    
        'Execute the query
        qdf.Execute dbFailOnError
    
        'Clean up
        qdf.Close
        Set qdf = Nothing
        Set dbs = Nothing
    
    End Sub

O exemplo a seguir mostra como abrir um Conjunto de registros baseado em uma consulta parâmetro.

    Dim dbs As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim rst As DAO.Recordset
    
    Set dbs = CurrentDb
    
    'Get the parameter query
    Set qfd = dbs.QueryDefs("qryMyParameterQuery")
    
    'Supply the parameter value
    qdf.Parameters("EnterStartDate") = Date
    qdf.Parameters("EnterEndDate") = Date + 7
    
    'Open a Recordset based on the parameter query
    Set rst = qdf.OpenRecordset()