2011-07-04 21 views

Odpowiedz

15
Dim db As DAO.Database 
Dim qdf As DAO.QueryDef 
Dim strSql As String 
Set db = CurrentDb 
strSql = "UPDATE Month_Totals Set item_date = [which_date]" & _ 
    " WHERE id = [which_id];" 
Debug.Print strSql 
Set qdf = db.CreateQueryDef(vbNullString, strSql) 
With qdf 
    .Parameters("which_date").Value = Date() 
    .Parameters("which_id").Value = 1 
    .Execute dbFailOnError 
End With 

To przykład używany nowy, niezapisane QueryDef. Jeśli masz zapisaną kwerendę parametryczną, można go używać zamiast zastępując ten wiersz dla CreateQueryDef line:

Set qdf = db.QueryDefs("YourQueryName") 

Tak czy inaczej, będzie można odnieść się do poszczególnych parametrów poprzez ich nazwy, jak ja, lub przez swoich pozycjach w SQL ... więc to będzie działać tak samo jak powyżej:

.Parameters(0).Value = Date() 
.Parameters(1).Value = 1 

dodatkowych notach:

  1. .Value jest własnością domyślne dla Parameter, więc włączenie go tutaj nie jest ściśle wymagane. Z drugiej strony nie jest bolesne jawne.
  2. Jak zauważył Gord poniżej, można użyć „Bang zapis” z nazwy parametru jak !which_id, który jest bardziej zwięzły niż .Parameters("which_id")
+3

„notacji Bang” działa również na ustawienie wartości parametrów, na przykład, 'QDF! which_id = 1' –