Lập trình VBA trong Excel kết nối CSDL trong mạng LAN và Internet (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,788
Được thích
10,298
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
Lập trình kết nối CSDL trong máy tính phần lớn chúng ta quen kết nối tới CSDL nằm tại máy có file chương trình chạy, hoặc trong mạng LAN, ít người biết tới kết nối qua Internet, có thể từ trước chúng ta không có giải pháp nào cho việc này...

Video này tôi hướng dẫn mọi người dùng ADO kết nối tới CSDL Access trong mạng LAN, với các CSDL khác như Excel, Foxpro, SQL Server.... cũng tương tự, chỉ khác phần khai báo ConnectionString. Đây là đoạn video hướng dẫn căn bản và đơn giản tối đa để những người mới học lập trình CSDL có thể thực hành và làm ngay được.

Các CSDL Access, Excel, Foxpro, Paradox,... chỉ có thể chia sẻ qua mạng LAN và có những hạn chế về bảo mật, không thể chia sẻ qua Internet. Trong video này tôi đưa ra một giải pháp mới với Add-in A-Tools cho phép chúng ta kết nối CSDL qua Internet với những loại CSDL mà bình thường không thể làm được.

Hy vọng video giúp ích được nhiều người bước đầu tiếp cận vào lập trinhg CSDL trong Excel và những người đã làm và tìm ra được giải pháp mới cho việc kết nối CSDL qua internet vào Excel.

[video=youtube;lSyoR1XFte8]https://www.youtube.com/watch?v=lSyoR1XFte8&feature=youtu.be&list=PLZi2tdQERHM09nzkoiavJO4pHcED1NmOQ[/video]​

[GPECODE=vb]
'Cách làm kết nối CSDL qua LAN bằng ADO
Sub GetDataFromADO_Recordset()
Dim cnn As New ADODB.Connection
Dim RST As ADODB.Recordset
Dim cFileName As String

cFileName = "\\192.168.1.115\Access Databases\Example.mdb"
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cFileName

Set RST = cnn.Execute("select * from dmkh")

Range("A5").CopyFromRecordset RST

RST.Close
Set RST = Nothing
cnn.Close
Set cnn = Nothing
End Sub

Sub ExxecuteCommandWithADO()
Dim cnn As New Connection
Dim RST As Recordset
Dim cFileName As String, X As Long

'Folder "\\192.168.1.115\Access Databases" is share full
cFileName = "\\192.168.1.115\Access Databases\Example.mdb"
'Connect to Access database
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cFileName

cnn.Execute "DELETE FROM dmkh WHERE MA_KH LIKE 'NEW%'", X
cnn.Execute "INSERT INTO dmkh (MA_KH,TINH_TP) VALUES ('NEW 102','HN')", X
Set RST = cnn.Execute("SELECT * FROM dmkh", X)

'Close connection and free memory
RST.Close
Set RST = Nothing
cnn.Close
Set cnn = Nothing
End Sub

'Cách làm kết nối CSDL qua internet bằng A-Tools
Sub GetRecordSetFromServer()
Dim Xnet As New BSNetwork
Dim cnn As BSConnection
Dim RST As ADODB.Recordset

If Not Xnet.Connected Then
If Not Xnet.Connect("bluesofts.dyndns.org", "user") Then Exit Sub
End If

Set cnn = Xnet.OpenConnection("MDB")
Set RST = cnn.ExecSql("SELECT * FROM DMKH")

Range("G6:M1000").ClearContents
Range("G6").CopyFromRecordset RST

RST.Close
Set RST = Nothing
cnn.Close
Set cnn = Nothing
Set Xnet = Nothing
End Sub

Sub DoExecuteCommandINSERT()
Dim Xnet As New BSNetwork
Dim cnn As BSConnection
Dim X As Long

If Not ConnectToServer Then Exit Sub
Set cnn = Xnet.OpenConnection("MDB")

X = cnn.ExecSqlCmd("INSERT INTO dmkh (MA_KH,TINH_TP) VALUES ('NEW 102','HN')")
MsgBoxW2 "Records affected: " & X, , "INSERT"

cnn.Close
Set cnn = Nothing
Set Xnet = Nothing
End Sub

[/GPECODE]

Download tài liệu hướng dẫn và mã nguồn ví dụ trong video
 
Lần chỉnh sửa cuối:
Bài của Anh rất hay và hữu ích. Hy vọng mình có thể ứng dụng vào công việc hiện tại. Cám ơn Anh
 
Upvote 0
Ở phút thứ "16:55" soạn thảo code bị nhầm RST.Clone, đúng phải là RST.Close
 
Upvote 0
Trong Win7 thì mình có thể thiết lập chia sẻ file qua mạng Lan là không cho xóa file.
 
Upvote 0
Anh đang update ít kiến thức ADO cơ bản nhất cho cuốn sách Lập trình VBA nhưng lười quá, làm mãi chưa xong :=\+
Còn dở dang cả nội dung Class Module nữa //////
 
Upvote 0
Upvote 0
Dùng ADO trong Excel với những phiên bản office cũ thì rất khoái. Tuy nhiên với Excel 2016 có thêm nhiều công cụ hữu dụng như Manage Data Model, Get and Transform, Query Editor... Thì với ADO ta chẳng muốn dùng nữa.
 
Upvote 0
Dùng ADO trong Excel với những phiên bản office cũ thì rất khoái. Tuy nhiên với Excel 2016 có thêm nhiều công cụ hữu dụng như Manage Data Model, Get and Transform, Query Editor... Thì với ADO ta chẳng muốn dùng nữa.

Hic, anh đã nghiên cứu Excel 2016 rồi à? Excel 2007 sử dụng Microsoft Query rất hiệu quả.
Tuy nhiên nội dung tôi đang đề cập là lập trình chứ kô phải là các thao tác từ các công cụ hỗ trợ. Dính tý DAO, ADO :)
 
Upvote 0
Hic, anh đã nghiên cứu Excel 2016 rồi à? Excel 2007 sử dụng Microsoft Query rất hiệu quả.
Tuy nhiên nội dung tôi đang đề cập là lập trình chứ kô phải là các thao tác từ các công cụ hỗ trợ. Dính tý DAO, ADO :)
Anh hãy thử 2016 1 lần xem sao nhé, đảm bảo cái Microsoft Query mà anh đề cập đó sẽ thua xa. Nó còn nhiều thứ khác nữa anh à. Hỗ trợ kết nối nhiều loại CSDL, Query Editor, tích hợp sẵn Power Pivot...
 
Upvote 0
Dùng ADO trong Excel với những phiên bản office cũ thì rất khoái. Tuy nhiên với Excel 2016 có thêm nhiều công cụ hữu dụng như Manage Data Model, Get and Transform, Query Editor... Thì với ADO ta chẳng muốn dùng nữa.

Các chức năng trong Excel thì gọi là công cụ, chủ yếu dành cho End User - Người dùng cuối. Còn ADO là đối tượng dùng để lập trình truy xuất CSDL, thực thi câu lệnh SQL - Dành cho người phát triển ứng dụng, nó được tùy biến uyển chuyển theo kịch bản, nghiệp vụ của nhà lập trình từ đó tạo ra các ứng dụng khác nhau. Vậy nên 2 cái này chúng ta để cho 2 nhóm đối tượng sử dụng khác nhau.
 
Lần chỉnh sửa cuối:
Upvote 0
Các chức năng trong Excel thì gọi là công cụ, chủ yếu dành cho End User - Người dùng cuối. Còn ADO là đối tượng dùng để lập trình truy xuất CSDL, thực thi câu lệnh SQL - Dành cho người phát triển ứng dụng, nó được tùy biến uyển chuyển theo kịch bản, nghiệp vụ của nhà lập trình từ đó tạo ra các ứng dụng khác nhau. Vậy nên 2 cái này chúng ta để cho 2 nhóm đối tượng sử dụng khác nhau.
Trong Excel 2016 cho phép mình làm điều mà mình tưởng chỉ có lập trình mới có thể làm được. Ví dụ như Append, merge...
 
Upvote 0
Hóng các chuyên gia họp bàn --=0
Nhưng tôi nghĩ ít người nghiên cứu các tính năng mới này của Excel vì kô dễ cập nhật, họ vẫn xu hướng dùng các phiên bản cũ hơn, và lập trình ADO như anh Tuân giới thiệu vẫn là mô hình kết nối khoa học, dạng chuyên nghiệp.
 
Upvote 0
Trong Excel 2016 cho phép mình làm điều mà mình tưởng chỉ có lập trình mới có thể làm được. Ví dụ như Append, merge...

Người lập trình trình họ tạo ra lệnh, chạy từ menu của ứng dụng họ làm, các kết nối tơí CSDL cũng có thể được lấy từ màn hình đăng nhập riêng... nên việc lập trình với ADO hay cái gì đó để kết xuất CSDL với ngôn ngữ SQL là độc lập với đối tượng End User - ứng dụng công cụ có sẵn của Excel (dù nó mạnh đến đâu) mà anh.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom