Trích:
Nguyên văn bởi behattieu Ah, Bác cho em hỏi 1 cái. Em đang định dùng 1 table để lưu trữ các câu lệnh SQL . Làm thế nào để làm ra (tạo) 1 Function kết nối dạng Public để dùng chung cho toàn bộ các kết nối. Ví dụ Private Sub Form1_Load() sql="Câu lệnh đựoc lấy từ table SQL" Call ketnoi End sub -' + '-' + '-' + '-' + '-' + '-' + '-' + '- Private Sub Form2_Load() sql="Câu lệnh đựoc lấy từ table SQL" Call ketnoi End sub -' + '-' + '-' + '-' + '-' + '-' + '-' + '- Module kết nối giờ phải khai báo như thế nào ? -Tiện thể: Có cách nào để gán source object cho 1 subform (dạng datasheet) 1 recordset mà bất tạo thêm 1 table, query hay form khác bất (Chỉ có duy nhất 1 form và trong nó có 1 ô subform còn bất có bất kỳ 1 đối tượng nào khác) |
Bạn vừa từng làm:
Dim conn As ADODB.Connection
... open conn ....
Rồi sau đó:
Dim rs As ADODB.Recordset
rs = New ADODB.Recordset
rs.open srtSQL, conn ...
Hiển nhiên là cũng có thể tiếp
im rs1 As ADODB.Recordset
rs1 = New ADODB.Recordset
rs1.open srtSQL, conn ...
Dim rs2, rs3, rs4 ...
Tóm lại:
1 Connection dùng để làm ra (tạo) 1 kết nối đến 1 data.
Các Recordset dùng để chứa các kết quả query.
Khai báo public để các form khác có thể nhìn thấy.
Như vậy ta chỉ cần dùng nhiều conn khi cần connect đến nhiều data cùng lúc (các data có thể là khác nhau, thậm chí khác hệcoi nhưSQL server, MySQL, Foxpro, Excel ...).
Vấn đề nữa, bạn vừa từng:Set conn = Nothing
Set rs = Nothing
Điều đó nghĩa là gì?
Bởi vì trong môi trường server-cleint thì cùng lúc có nhiều connect từ phía cleint vào cùng 1 data trên server, do đó, nếu lưu giữ handle của data đó quá lâu hơn mức cần thiết sẽ làm server nhồi máu cơ tim...
Vì thế, bạn vừa cắt đường connect ngay sau khi vừa lấy đủ dữ liệu về máy.
Hãy suy nghĩ khi quyết định: giữ connection để có ngay khi cần; hay là mỗi lần cần thì mỗi lần connect?
Chỉ 1 mình mình dùng trên máy đơn thì hay trên server nhỏ thì chắc bất có hiện tượng quá nhiều connection cùng lúc vào 1 data. Nhưng cần nhớ xoá handle khỏi bộ nhớ khi đóng project. VÌ lúc đó ODBC vẫn còn đang mở data. Phải báo đóng lại bằng Set conn= Nothing
Với Access nghe nói có thể chịu cùng lúc 31 connection.
Nhưng khi tui thử trên máy của tui thì chưa bao giờ nó nối nổi cùng lúc 12 connection.
Nghe nói SQL server có thể chịu nổi cùng lúc hàng ngàn connection.