Freigeben über


QueryDef.Prepare-Eigenschaft (DAO)

Gilt für: Access 2013, Office 2013

Syntax

Ausdruck . Zubereiten

Ausdruck Eine Variable, die ein QueryDef-Objekt darstellt.

Bemerkungen

Sie können mit der Prepare-Eigenschaft festlegen, dass der Server anhand Ihrer Abfrage eine temporäre gespeicherte Prozedur erstellt und sie dann ausführt, oder die Abfrage direkt ausführen. Standardmäßig hat die Prepare-Eigenschaft den Wert dbQPrepare. Sie können für diese Eigenschaft jedoch dbQUnprepare festlegen, um zu verhindern, dass die Abfrage vorbereitet wird. In diesem Fall wird die Abfrage unter Verwendung der SQLExecDirect-API ausgeführt.

Das Erstellen einer gespeicherten Prozedur kann den anfänglichen Vorgang verlangsamen, aber die Leistung aller nachfolgenden Verweise auf die Abfrage erhöht. Einige Abfragen können jedoch nicht in Form von gespeicherten Prozeduren ausgeführt werden. In diesen Fällen müssen Sie die Prepare-Eigenschaft auf dbQUnprepare festlegen.

Wenn Prepare auf dbQPrepare festgelegt ist, kann dies überschrieben werden, wenn die Abfrage ausgeführt wird, indem das Optionsargument der Execute-Methode auf dbExecDirect festgelegt wird.

Hinweis

[!HINWEIS] Die ODBC-API SQLPrepare wird aufgerufen, sobald die DAO- SQL -Eigenschaft festgelegt wird. Sie müssen daher zur Steigerung der Leistung mithilfe der dbQUnprepare-Option die Prepare-Eigenschaft festlegen, bevor Sie die SQL-Eigenschaft festlegen.

Beispiel

In diesem Beispiel wird mit der Prepare-Eigenschaft festgelegt, dass eine Abfrage direkt ausgeführt wird, anstatt zuvor eine temporäre gespeicherte Prozedur auf dem Server zu erstellen.

Sub PrepareX() 
 
 Dim wrkODBC As Workspace 
 Dim conPubs As Connection 
 Dim qdfTemp As QueryDef 
 Dim rstTemp As Recordset 
 
 ' Create ODBCDirect Workspace object and open Connection 
 ' object. 
 Set wrkODBC = CreateWorkspace("", _ 
 "admin", "", dbUseODBC) 
 
 ' Note: The DSN referenced below must be configured to 
 ' use Microsoft Windows NT Authentication Mode to 
 ' authorize user access to the Microsoft SQL Server. 
 Set conPubs = wrkODBC.OpenConnection("Publishers", , , _ 
 "ODBC;DATABASE=pubs;DSN=Publishers") 
 
 Set qdfTemp = conPubs.CreateQueryDef("") 
 
 With qdfTemp 
 ' Because you will only run this query once, specify 
 ' the ODBC SQLExecDirect API function. If you do 
 ' not set this property before you set the SQL 
 ' property, the ODBC SQLPrepare API function will 
 ' be called anyway which will nullify any 
 ' performance gain. 
 .Prepare = dbQUnprepare 
 .SQL = "UPDATE roysched " & _ 
 "SET royalty = royalty * 2 " & _ 
 "WHERE title_id LIKE 'BU____' OR " & _ 
 "title_id LIKE 'PC____'" 
 .Execute 
 End With 
 
 Debug.Print "Query results:" 
 
 ' Open recordset containing modified records. 
 Set rstTemp = conPubs.OpenRecordset( _ 
 "SELECT * FROM roysched " & _ 
 "WHERE title_id LIKE 'BU____' OR " & _ 
 "title_id LIKE 'PC____'") 
 
 ' Enumerate recordset. 
 With rstTemp 
 Do While Not .EOF 
 Debug.Print , !title_id, !lorange, _ 
 !hirange, !royalty 
 .MoveNext 
 Loop 
 .Close 
 End With 
 
 conPubs.Close 
 wrkODBC.Close