2012-06-26 52 views
11

Trong những ý kiến ​​trên this answer, Remou viết rằngsự khác biệt giữa DoCmd.SetWarnings và CurrentDB.Execute là gì

CurrentDB.Execute "insert sql here"

là tốt hơn so với

DoCmd.SetWarnings = 0
DoCmd.RunSQL "insert sql here"

do built-in cảnh báo mà Access tạo ra. Tôi đang cố gắng để hiểu sự khác biệt.

Nếu cả hai mặt nạ đều bị lỗi, thì tại sao thẻ đầu tiên lại thích hợp hơn lần thứ hai? Có thực hành tốt nhất nào ở đây không?

Trả lời

17

Chúng không phải cả hai lỗi mặt nạ. DoCmd.SetWarnings che dấu các lỗi và là hệ thống rộng, không giới hạn trong một ứng dụng duy nhất mà bạn đang sử dụng. DoCmd.SetWarnings False không có DoCmd.SetWarnings True tương ứng sẽ có nghĩa là các truy vấn hành động sẽ chạy mà không có bất kỳ lời nhắc nào trong bất kỳ ứng dụng Access nào trên PC.

Thực thi không ném cảnh báo, cảnh báo bạn cần, chẳng hạn như truy vấn không thực thi được, nhưng không đưa ra cảnh báo bạn có thể không cần, chẳng hạn như "Bạn có chắc chắn muốn chạy truy vấn này không".

In this thread Allen Browne, Access MVP, cho biết anh không sử dụng Đặt cảnh báo.

Là một sang một bên, tôi sẽ thường khuyên bạn nên sử dụng một thể hiện của CurrentDB, vì điều này sẽ cho phép bạn quay trở lại một số kỷ lục, trong số những thứ khác, vì vậy:

Set db = CurrentDB 
db.Execute sSQL, dbFailOnError 
+0

Từ nhận xét của bạn: 'Để chạy mà không có sự được xây dựng trong cảnh báo, sử dụng một thể hiện của CurrentDB và Exceute chuỗi SQL' dẫn tôi tin rằng '.Execute' không ném cảnh báo? – JimmyPena

+0

Xem chỉnh sửa ở trên. – Fionnuala

+3

Một cách khác để tiếp cận điều này là bắt đầu từ 'RunSql'. Trước tiên, yêu cầu người dùng xác nhận rằng cô ấy muốn thực hiện truy vấn hành động, sau đó hiển thị thông báo về số lượng hồ sơ bị ảnh hưởng sau đó. Mọi người sử dụng 'SetWarnings = False' để chặn những tin nhắn đó. Nhưng '[database] .Execute' không hiển thị một trong các thông điệp đó, vì vậy không có động lực để tắt' SetWarnings'. Remou đã nói hết rồi. Tôi đang sử dụng những từ ngữ khác nhau trong cơ hội có thể giúp đỡ ai đó, và cũng để cho bản thân mình một cơ hội khác để nói KHÔNG BAO GIỜ biến 'SetWarnings' ra! – HansUp

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