Lấy Dữ liệu Qua Internet – Phương Thức SQL TCP/IP

Chia sẻ bởi:hands
★★★★★
Quảng cáo

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ự
Khóa học SprinGO phù hợp

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
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm