2011-07-04 48 views
10

Có thể thực hiện một tuyên bố chuẩn bị trong MS Access trên bàn địa phương trong VBA như thế này:MS Access chuẩn bị báo cáo

UPDATE part SET part_description=? WHERE part_id=? 

Nếu vậy làm thế nào nó được thực hiện?

Trả lời

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 

Đó dụ sử dụng một mới, chưa được lưu QueryDef. Nếu bạn có một truy vấn tham số lưu, bạn có thể sử dụng nó thay vì bằng cách thay thế dòng này cho CreateQueryDef dòng:

Set qdf = db.QueryDefs("YourQueryName") 

Dù bằng cách nào, sau đó bạn có thể tham khảo các thông số cá nhân bằng tên của họ như tôi đã làm, hoặc bởi vị trí của họ trong câu lệnh SQL ... vì vậy đây sẽ làm việc tương tự như trên:

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

ghi chú thêm:

  1. .Value là tài sản mặc định cho một Parameter, do đó, bao gồm nó ở đây là không đúng yêu cầu. Mặt khác, nó không làm tổn thương để được rõ ràng.
  2. Như Gord lưu ý dưới đây, bạn có thể sử dụng "Bằng ký hiệu" với tên của tham số như !which_id, nhiều súc tích hơn .Parameters("which_id")
+3

"ký hiệu Bang" cũng làm việc cho thiết lập các giá trị tham số, ví dụ, 'QDF! which_id = 1' –

Các vấn đề liên quan