Sự khác nhau giữa cập nhật bằng ADO và SQL trong CSDL

Liên hệ QC

taichinhnganhang

Thành viên mới
Tham gia
8/11/08
Bài viết
7
Được thích
0
Trong lúc thực hiện viết một chương trình quản lý nhỏ phục vụ công việc, tôi sử dụng CSDL là Access , kết nối bằng phương thức ADO thì có vấn đề sau:
+ Tại sao cập nhật mẫu tin mới bằng phương thức Recordset.Update thì dữ liệu chưa được cập nhật liền vào CSDL ? khi nào thì ADO mới cập nhật vào ?

Ví dụ :
..................
bang_NhapSo1.AddNew
bang_NhapSo1("maid").Value = "001"
bang_NhapSo1.Update
bang_NhapSo1.Requery
MsgBox DLookup("maid", "DS", "maid='001'")
............................
Rõ ràng, tôi đã cập nhật maid=001 vào table tôi cần "DS", nhưng sao tôi dùng phương thức của Access gọi giá trị này ra thì chưa xuất hiện tại table của Access (báo lỗi) mặc dù ADO báo cập nhật thành công ?

Kính nhờ các anh/chị có cách giải quyết giúp tôi với.
Trân trọng và cảm ơn
 
Trong lúc thực hiện viết một chương trình quản lý nhỏ phục vụ công việc, tôi sử dụng CSDL là Access , kết nối bằng phương thức ADO thì có vấn đề sau:
+ Tại sao cập nhật mẫu tin mới bằng phương thức Recordset.Update thì dữ liệu chưa được cập nhật liền vào CSDL ? khi nào thì ADO mới cập nhật vào ?

Ví dụ :
..................
bang_NhapSo1.AddNew
bang_NhapSo1("maid").Value = "001"
bang_NhapSo1.Update
bang_NhapSo1.Requery
MsgBox DLookup("maid", "DS", "maid='001'")
............................
Rõ ràng, tôi đã cập nhật maid=001 vào table tôi cần "DS", nhưng sao tôi dùng phương thức của Access gọi giá trị này ra thì chưa xuất hiện tại table của Access (báo lỗi) mặc dù ADO báo cập nhật thành công ?

Kính nhờ các anh/chị có cách giải quyết giúp tôi với.
Trân trọng và cảm ơn

Bạn xem lại câu này :
Mã:
bang_NhapSo1("maid").Value = "001"

và câu này :
Mã:
MsgBox DLookup("maid", "DS", "maid='001'")

và xem lại cấu trúc của hàm DLookup
Thân
 
Chào Minh Nguyệt

Tôi đã test lại câu bang_NhapSo1("maid") = "001" tới bang_NhapSo1.Update không thấy báo lỗi gì. Mục đích có hàm Dlookup( ...) là tôi muốn biết tại sao tôi đã cập nhập thành công, nhưng khi tôi dùng hàm Dlookup() của Access để gọi giá trị "001" lên, nhưng hàm này lại báo không có giá trị nà trong table ? Tuy nhiên, khi cho chạy từng bước hoặc tắt đi mở lại thì gọi lại hàm Dlookp() thì có giá trị này rồi!
Vì thế, tôi thắc mắc là cơ chế lưu mẫu tin của ADO thực chất là tác động tới cơ sở dữ liệu là khi nào ?

Trân trọng
 
Chào Minh Nguyệt

Tôi đã test lại câu bang_NhapSo1("maid") = "001" tới bang_NhapSo1.Update không thấy báo lỗi gì. Mục đích có hàm Dlookup( ...) là tôi muốn biết tại sao tôi đã cập nhập thành công, nhưng khi tôi dùng hàm Dlookup() của Access để gọi giá trị "001" lên, nhưng hàm này lại báo không có giá trị nà trong table ? Tuy nhiên, khi cho chạy từng bước hoặc tắt đi mở lại thì gọi lại hàm Dlookp() thì có giá trị này rồi!
Vì thế, tôi thắc mắc là cơ chế lưu mẫu tin của ADO thực chất là tác động tới cơ sở dữ liệu là khi nào ?

Trân trọng

Bạn đã bị lầm vì chưa hiểu cấu trúc của hàm Dlookup chứ không phải là bạn dùng hàm để làm gì. Khi không hiểu được cấu trúc của hàm thì khi bạn sử dụng hàm ở bất cứ nơi nào cũng gây ra lỗi
Thân
 
Chạy từng bước là chạy như thế nào? Theo tôi hiểu thì trong quá trình (1 sesion) 1 phiên làm việc, đoạn lệnh trên chỉ lưu giá trị vào trong vùng nhớ tạm (recordset) chứ chưa thực thi ghi vào trong file (sheet của excel) cho nên khi bạn tắt đi máy kết thúc 1 phiên làm việc và giá trị biến mới thực sự ghi vào file. Hàm Dlookup chỉ tìm giá trị đã có trong file.
 
Tôi đồng ý là kết thúc quá trình làm việc thì ADO mới lưu vào, vấn đề là có thể dùng lệnh để nó lưu vào trước khi kết thúc phiên làm việc không ?
 
ồ để lưu vào sh thì đâu có khó, ví dụ: shéet1.a1=bien, .....
 
Web KT

Bài viết mới nhất

Back
Top Bottom