Đây không phải là câu hỏi về câu hỏi nào tốt hơn, mà là một câu hỏi liên quan đến lý do tại sao chúng khác nhau về mặt chức năng. Vấn đề tôi đang gặp phải đã được xử lý, nhưng tôi tò mò là tại sao hành vi này lại xảy ra.Sự khác biệt giữa ADO và DAO
Bối cảnh - sử dụng Excel vba để lấy dữ liệu từ cơ sở dữ liệu Access. Khi người dùng nhấp vào một nút, bản ghi sẽ được lấy từ Access và nó sẽ điền dữ liệu khác nhau vào bảng tính. Sau đó, một bản ghi khác được lấy từ một truy vấn khác để điền một phần khác của bảng tính.
ADO làm gì - ADO hoạt động tốt cho bản ghi đầu tiên của tôi. Tuy nhiên, bản ghi thứ hai của tôi đi đến truy vấn trong Access, chạy và không trả về hàng nào. Nếu tôi chạy truy vấn này trong Access, nó sẽ mở ra (sau khoảng 3 đến 4 giây). Truy vấn này có nhiều phép nối, các mục được tính, các giới hạn và các truy vấn có thể của Liên minh (tôi đã thử nhiều cách khác nhau, có/không có công đoàn, v.v.). Tôi đã thử đóng và mở lại kết nối ado. Tôi đã thử thay đổi giá trị thời gian chờ và thậm chí tôi đã thử nghiệm bằng cách sử dụng lệnh ADO để chạy Thực hiện truy vấn bảng cho dữ liệu này và sau đó kéo từ bảng đó (cách này hoạt động bằng cách này, nhưng không phải là trường hợp tốt nhất, vì dữ liệu thay đổi liên tục và tôi không muốn phải chạy truy vấn tạo bảng mỗi khi ai đó sử dụng công cụ này).
Vì vậy, tôi đã thay đổi lần kéo dữ liệu thứ hai thành DAO và lo lắng, nó hoạt động. Việc kéo dữ liệu đầu tiên vẫn là ADO (mà tôi thường thích sử dụng), nhưng bây giờ đang xem xét việc thay đổi nó thành DAO, bởi vì tôi muốn có một phương thức truy cập dữ liệu trong mã.
Vì vậy, ai đó có thể giải thích cho tôi tại sao ADO sẽ không lấy dữ liệu trong một trường hợp, nhưng DAO sẽ? Một lần nữa, điều này là hoàn toàn cho các mục đích thông tin.
Rất khó để nhận xét mà không nhìn thấy mã của bạn, nhưng nó có thể là một vấn đề loại cusrsor/recordset. Bạn có dựa vào các giá trị mặc định trong mã của mình không?Nếu bạn chỉ làm việc với Access, DAO là một lựa chọn tốt hơn vì nó có nguồn gốc từ Access và cung cấp nhiều quyền kiểm soát hơn ADO – SWa
Bạn sử dụng ký tự đại diện ở đâu? Đây là một vấn đề phổ biến, đối với ADO ký tự đại diện là%, trong khi DAO là (thường) *. – Fionnuala
@Remou, tôi quen thuộc với sự khác biệt trong ký tự đại diện giữa hai, nhưng tôi tiếc là không sử dụng chúng trong các truy vấn. – APrough