Lấy Dữ liệu Qua Internet – Phương Thức SQL TCP/IP
1/ đây là bản Demo lấy dữ liệu qua Internet … Úp lên đây cho bạn nào dùng được thì dùng
2/ đọc file hướng dẫn kèm theo khi tải Files
3/ Nếu máy bạn nào cài Office 64 bít thì bắt buộc cài
Microsoft Access Database Engine 2010 Redistributable
của Ms link sau thì mới sử dụng được
www.microsoft.com/en-us/download/details.aspx?id=13255
4/ Nếu máy bạn nào Office 32 bit thì bỏ qua mục số 3
5/ Trong file có sử dụng code của nước ngoài ( một Coder quốc tịch Đức Viết )
6/ Yêu cầu máy tính có kết nối internet thì mới sử dụng được -0-0-0-
Tải Files
drive.google.com/file/d/126R0YvMgb6gjhC_zsmZk0AApajcgq8xG/view?usp=sharing
github.com/KieuManh366377?tab=repositories
File nào cái lên máy chủ (server), file nào cài lên máy con vậy bạn (client)?
1/ File ServerNetwork.exe = máy chủ
2/ File VB6Library.dll = Client
Máy mình Win10 64bit cài office 2016 32bit cài đặt theo các bước hướng dẫn trong file Text không phát sinh lỗi gì. Chỉ có thắc mắc mấy vấn đề sau:
1. Mỗi lần chỉnh sửa file mình phải tắt Endtask bằng Ctrl + Alt + Del. (nút Run StartUp và Disable Startup hình như không ngắt kết nối).
2. Kết nối bằng IP LAN thì được nhưng dùng IP Public thì không kết nối được (không biết trường hợp IP Public có phải cấu hình gì không)
1/ Mục số 1 là mình để nó như vậy mỗi khi windows khởi động là mặc định nó chạy theo … nếu bạn ko thích thì nhấn Button StartUp và Disable thì nó xóa cái khóa khởi động cùng windows trong Registry đi là hết
2/ mục số 2 nếu kết nối qua Internet thì bắt buộc bạn phải NAT Port modem theo quy định bất cứ cái phần mềm nào cũng thế muốn truy xuất từ ngoài vào sau bộ định tuyến phải thế …. trừ khi Hack nó
bạn xem chỉ dẫn bài số 18 … Or trên GPE này nhiều bài kiểu đó
3/ còn muốn mở file lên chỉnh sửa nó thì mình mô tả bài số 19 … còn vẩn cứ làm thì Endtask bằng Ctrl + Alt + Del.
tắt nó đi xong muốn làm gì thì làm … xong mở lại
hoặc bạn dùng ADODB mà chỉnh sửa nó …. tóm lại cái đó mình điều chỉnh trong tầm tay … nhưng để đấy đã như ý kiến mình nêu bài số 19
1632196900
đang test cho tín đồ Access còn lỗi chút …. sẻ điều chỉnh lại sau
Về cơ bản VBA Excel Or Access thì nó như nhau cả chỉ khác là Range Và Tableme thui à
Hình ảnh sơ bộ
2181
File sau cho Tín đồ Access sử dụng
1/ Khai báo sử dụng Như VBA trong file Excel
2/ Sẻ lỗi nếu bạn Call Form Client Show lên
1/ Áp dụng cho bạn nào sử dụng trên Access Copy toàn bộ code sau vào 1 Module y trang trên Excel ( Chỉ xóa đi 3 hàm có biến Range )
Option Compare Database
Rem ========== Luu Y su dung
Rem 1/ Dang ky File [ BLibraryLoad.exe ] de su dung
Rem 2/ Dang Ky File [ VB6Library.dll ] de su dung
Rem 3/ ToolsReferencesBrowse..VBLibraryLoad.exe ==> Su dung Cho RPC As New VBLibraryLoad.cCOM
Rem 4/ Microsoft ActiveX Data Objects 6.1 Library ==> Su dung cho Rs As ADODB.Recordset
Rem ========== Coded By Kieu Manh
Rem ========== Tel: 0929.278.279 - 0929.278.379
Rem ========== Email: kieumanh366377@gmail.com
Public RPC As New VBLibraryLoad.cCOM ''==> khai bao su dung thu Vien VBLibraryLoad.exe de load ham trong VB6Library.dll
Public Rs As ADODB.Recordset
Public LoadCOM As Object
Rem ==========
Public Ip As String
Public Const Port As Long = 8181 ''Port mac dinh
Rem VD: FileName = "QLBHPN.accdb" Or MyFile.xlsb ...vv
Rem ========== GetMyLocalIP = Ham lay IP LAN
Function GetMyLocalIP() As String
Rem Declaring the necessary variables.
Dim strComputer As String
Dim objWMIService As Object
Dim colItems As Object
Dim objItem As Object
Dim myIPAddress As String
Rem Set the computer.
strComputer = "."
Rem The rootcimv2 namespace is used to access the Win32_NetworkAdapterConfiguration class.
Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")
Rem A select query is used to get a collection of IP addresses from the network adapters that have the property IPEnabled equal to true.
Set colItems = objWMIService.ExecQuery("SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
Rem Loop through all the objects of the collection and return the first non-empty IP.
For Each objItem In colItems
If Not IsNull(objItem.IPAddress) Then myIPAddress = Trim(objItem.IPAddress(0))
Exit For
Next
Rem Return the IP string.
GetMyLocalIP = myIPAddress
End Function
Rem ========== ConnectDataName ham nay su dung nhu Rs As ADODB.Recordset
Function ConnectDataName(Ip As String, Port As Long, FileName As String, SQL As String) As ADODB.Recordset
Rem Ham ConnectDataName nay thay the cho ==> Conn As ADODB.connection = da ket noi toi CSDL
Rem Sau khi ket noi tra ve kieu du lieu la ADODB.Recordset
Set LoadCOM = RPC.NewInstance("VB6Library.cLoadCOM")
Set ConnectDataName = LoadCOM.ConnectDataName(Ip, Port, FileName, SQL)
If Not LoadCOM Is Nothing Then Set LoadCOM = Nothing
End Function
Rem ==========
Function GetRsSQL(Ip As String, Port As Long, FileName As String, SQL As String, Optional TieuDe As Boolean = False)
Rem Su dung: [A1] = GetRsSQL(Ip,Port,FileName,Sql,True) ''Lay tieu De
Rem Su dung: [A1] = GetRsSQL(Ip,Port,FileName,Sql,False)''Ko lay Tieu De
Rem VD: FileName = "QLBHPN.accdb" Or MyFile.xlsb ...vv
Dim Arr() As Variant
Set LoadCOM = RPC.NewInstance("VB6Library.cLoadCOM")
Arr = LoadCOM.GetRsSQL(Ip, Port, FileName, SQL, TieuDe)
GetRsSQL = ResizeArray(Arr)
If Not LoadCOM Is Nothing Then Set LoadCOM = Nothing
End Function
Rem ==========
Public Sub GetListTableName(Ip As String, Port As Long, FileName As String, aListBox As Object)
Rem ham nay lay List TableName Or SheetName cua 1 Files
Rem VD: FileName = "QLBHPN.accdb" Or MyFile.xlsb ...vv
Rem Su dung: Call GetListTableName(Ip, Port, "QLBHPN.accdb", ListBox1)
Set LoadCOM = RPC.NewInstance("VB6Library.cLoadCOM")
Call LoadCOM.GetListTableName(Ip, Port, FileName, aListBox)
If Not LoadCOM Is Nothing Then Set LoadCOM = Nothing
End Sub
Rem ==========
Public Sub GetListDatabaseName(Ip As String, Port As Long, aComboBox As Object)
Rem ham nay lay List FileName duoc chia Se o Folder Server Sharing
Rem Su dung: Call GetListDatabaseName(Ip, Port, ComboBox1)
Set LoadCOM = RPC.NewInstance("VB6Library.cLoadCOM")
Call LoadCOM.GetListDatabaseName(Ip, Port, aComboBox)
If Not LoadCOM Is Nothing Then Set LoadCOM = Nothing
End Sub
Rem ==========
Public Sub GetRsToListBox(Ip As String, Port As Long, FileName As String, SQL As String, aListBox As Object)
Rem ham nay su dung lay du lieu gan len ListBox
Rem VD: FileName = "QLBHPN.accdb" Or MyFile.xlsb ...vv
Rem su dung : Call GetRsToListBox(Ip, Port, FileName, SQL, ListBox2)
Set LoadCOM = RPC.NewInstance("VB6Library.cLoadCOM")
Call LoadCOM.GetRsToListBox(Ip, Port, ListFiles, SQL, aListBox)
If Not LoadCOM Is Nothing Then Set LoadCOM = Nothing
End Sub
Rem ==========
Public Sub GetListFieldToComboBox(Ip As String, Port As Long, FileName As String, SQL As String, aComboBox As Object)
Rem ham nay lay List Fields cua Files gan len CoboBox
Rem VD: FileName = "QLBHPN.accdb" Or MyFile.xlsb ...vv
Rem Su dung: Call GetListFieldToComboBox(Ip, Port, FileName, SQL, ComboBox2)
Set LoadCOM = RPC.NewInstance("VB6Library.cLoadCOM")
Call LoadCOM.GetListFieldToComboBox(Ip, Port, FileName, SQL, aComboBox)
If Not LoadCOM Is Nothing Then Set LoadCOM = Nothing
End Sub
Rem ==========
'Public Sub GetListFileNameServer(Ip As String, Port As Long, ListFiles(), SQL As String, Target As Range)
' Rem Ham nay Tong Hop List FileName Theo SQL Tu Server
' Set LoadCOM = RPC.NewInstance("VB6Library.cLoadCOM")
' Call LoadCOM.GetListFileNameServer(Ip, Port, ListFiles, SQL, Target)
' If Not LoadCOM Is Nothing Then Set LoadCOM = Nothing
'End Sub
Rem ==========
'Public Sub TongHopSheetFiles(Ip As String, Port As Long, FileName As String, Target As Range)
' Rem ham nay lay List TableName Or SheetName cua 1 Files
' Rem VD: FileName = "QLBHPN.accdb" Or MyFile.xlsb ...vv
' Rem Su dung: Call TongHopSheetFiles(Ip, Port, "QLBHPN.accdb", [A65536])
' On Error GoTo ErrNext ''Xu ly loi neu tran dong tren Sheet
' Set LoadCOM = RPC.NewInstance("VB6Library.cLoadCOM")
' Call LoadCOM.TongHopSheetFiles(Ip, Port, FileName, Target)
' If Not LoadCOM Is Nothing Then Set LoadCOM = Nothing
'ErrNext:
' If Err Then MsgBox Err.Description: Err.Clear: Exit Sub
'End Sub
Rem ========== SQL
'Public Sub GetSQLServer(Ip As String, Port As Long, FileName As String, SQL As String, Target As Range, _
' Optional TieuDe As Boolean = False)
' Rem Ham nay tuy cho lay du lieu theo SQL
' Rem TieuDe = True = lay tieu de
' Rem TieuDe = False = Ko lay tieu de
' Rem Su dung : Call GetSQLServer(Ip, Port, FileName, Sql, Target, TieuDe)
' Rem VD: FileName = "QLBHPN.accdb" Or MyFile.xlsb ...vv
' Set LoadCOM = RPC.NewInstance("VB6Library.cLoadCOM")
' Call LoadCOM.GetSQLServer(Ip, Port, FileName, SQL, Target, TieuDe)
' If Not LoadCOM Is Nothing Then Set LoadCOM = Nothing
'End Sub
Rem ==========
2/ Tạo 1 Module mới thử code
Private Sub ToListBox_Click()
Dim T!: T = Timer
Dim MaxCol As Long
Dim MaxRow As Long
Dim Ip As String
Dim Port As Long
Dim SQL As String
Dim FileName As String
Rem ==========
Port = 8181
FileName = "QLBHPN.accdb"
SQL = "select * from NhapXuatTon"
Ip = GetMyLocalIP() ''Luu Y thay doi IP nay cho may tinh khac can lay qua Internet
Rem ========== Cach Tuy bien viet theo so thich
If SQL <> Empty Then
Set Rs = ConnectDataName(Ip, Port, FileName, SQL)
If Err Then MsgBox Err.Description: Err.Clear: Exit Sub
' If Rs.EOF Then
' ListBox2.Clear
' Else
' Arr = Rs.GetRows()
' ListBox2.ColumnCount = Rs.Fields.Count
' ListBox2.Column = Arr
' End If
' Me.Caption = Format$((Timer - T) * 1000, "0.0 ms") & " for " & Rs.RecordCount & " Records (" & Rs.Fields.Count & " Columns)"
Rem ==========
MsgBox Rs.RecordCount
MsgBox Rs.Fields.Count
End If
Rem ========== Cach su dung ham
Rem Call GetRsToListBox(Ip, Port, FileName, SQL, ListBox2) ''Lay du lieu gan vao ListBox
Rem ==========
Rem Call GetListFieldToComboBox(Ip, Port, FileName, SQL, ComboBox2) ''Lay List FieldName gan Vao ComboBox
End Sub
Rem ==========
3/ Còn lại mọi cái như VBA trên Excel … Phần còn lại các bạn tự xử lý + viết lấy theo ý mình thích
4/ Lưu ý đắng ký và check Thư viện như Excel
2183
Tôi bày cho ai đó 1 cách sử dụng cho IP động … tạm keo là cách hơi cà chua 1 chút
1/ trên Google Driver Or Google Sheet Or OneDrive …+ vvvvvvvvvvvvvvvvvv
2/ Các bạn tạo 1 File *.txt hay gì đó tùy ý
3/ Khi mở Server lên lưu cái IP + Port vào File *.txt nêu trên
4/ Từ máy Client khi mở lên dùng code tải cái File mục số 3 về lấy thông số IP + Port gán vào là xong
….
Cách trên ngon bổ rẻ và 5 cái tiện thể học code + vọc vạch chút cho vui
Cái Server nó chạy liên tục ngay cả khi máy tính ngủ gật đấy -0-0-0- … mất điện thì tạm nghỉ chút … có điện khởi động lại là nó lại chạy khi Windows khởi động nếu ai đó thích bật chế độ đó …. không giới hạn máy Client kết nối tới Server đấy he
Bật mí cho ai tò mò thử chút cái SQL TCP/IP nè …nó ẩn trong đó là một tính năng đang thử nghiệm
1/ Lưu dữ liệu từ xa vào Data Server
2/ xóa dữ liệu từ xa tới Data Server
3/ cái hàm sau thay cho Cnn như trên VBA ==> Conn As ADODB.connection = đã kết nối tới CSDL
Function ConnectDataName(Ip As String, Port As Long, FileName As String, SQL As String) As ADODB.Recordset
Rem Ham ConnectDataName nay thay the cho ==> Conn As ADODB.connection = da ket noi toi CSDL
Rem Sau khi ket noi tra ve kieu du lieu la ADODB.Recordset
Set LoadCOM = RPC.NewInstance("VB6Library.cLoadCOM")
Set ConnectDataName = LoadCOM.ConnectDataName(Ip, Port, FileName, SQL)
If Not LoadCOM Is Nothing Then Set LoadCOM = Nothing
End Function
4/ Thử khai báo Public Rs As ADODB.Recordset mà ghi + xóa dữ liệu từ xa xem như thế nào
( Cách viết y trang trên VBA thôi )
5/ Lưu ý chức năng đó chưa hoàn thiện lắm nên tạm ẩn đó
Nếu bạn nào quan tâm chủ đề này thì qua link sau tải File Client về copy vào USB xong mang đi sử dụng ko cần thiết cài đặt hay đăng ký nó … chỉ cần thực hiện các thủ tục cần thiết của bài số 1 chủ đề này cho Server … còn Client sẻ đơn giản hóa nhiều thứ cần thiết …. chi tiết bài số #7 link sau
www.giaiphapexcel.com/diendan/threads/s%E1%BB%AD-d%E1%BB%A5ng-dll-com-delphi-cho-vb6-m%C3%A0-kh%C3%B4ng-c%E1%BA%A7n-%C4%91%C4%83ng-k%C3%BD-s%E1%BB%AD-d%E1%BB%A5ng-v%E1%BB%9Bi-windows.159213/#post-1059599
Xem video cách sử dụng
P_DUG5DbLM0
[URL='youtu.be/P_DUG5DbLM0']Liên kết: youtu.be/P_DUG5DbLM0
Chúc các bạn tự sáng tạo và viết tùy chỉnh theo ý mình thích
www.giaiphapexcel.com/diendan/threads/l%E1%BA%A5y-d%E1%BB%AF-li%E1%BB%87u-qua-internet-ph%C6%B0%C6%A1ng-th%E1%BB%A9c-sql-tcp-ip.157665/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học