Ðề: Kết nối SQL server với Access
Bạn đã từng làm:
Hiển nhiên là cũng có thể tiếp:
1 Connection dùng để 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ệ như là SQL server, MySQL, Foxpro, Excel ...).
Vấn đề nữa, bạn đã từng:
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 đã cắt đường connect ngay sau khi đã 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ì hoặc trên server nhỏ thì chắc không 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 tôi thử trên máy của tôi 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.
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 để 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à không tạo thêm 1 table, query hay form khác không (Chỉ có duy nhất 1 form và trong nó có 1 ô subform còn không có bất kỳ 1 đối tượng nào khác)
Bạn đã từng làm:
Dim conn As ADODB.Connection
... open conn ....
Rồi sau đó:... open conn ....
Dim rs As ADODB.Recordset
rs = New ADODB.Recordset
rs.open srtSQL, conn ...
rs = New ADODB.Recordset
rs.open srtSQL, conn ...
Hiển nhiên là cũng có thể tiếp:
Dim rs1 As ADODB.Recordset
rs1 = New ADODB.Recordset
rs1.open srtSQL, conn ...
Dim rs2, rs3, rs4 ...
Tóm lại: rs1 = New ADODB.Recordset
rs1.open srtSQL, conn ...
Dim rs2, rs3, rs4 ...
1 Connection dùng để 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ệ như là SQL server, MySQL, Foxpro, Excel ...).
Vấn đề nữa, bạn đã từng:
Set conn = Nothing
Set rs = Nothing
Điều đó nghĩa là gì?Set rs = Nothing
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 đã cắt đường connect ngay sau khi đã 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ì hoặc trên server nhỏ thì chắc không 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 tôi thử trên máy của tôi 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.