Kiều Mạnh
I don't program, I beat code into submission!!!
- Tham gia
- 9/6/12
- Bài viết
- 5,538
- Được thích
- 4,132
- Giới tính
- Nam
1/ Ý tưởng xuất phát từ chủ đề sau
www.giaiphapexcel.com
2/ Hôm nay tôi giới thiệu cho ai yêu thích thì sử dụng các hàm cơ bản nhất thông qua Web Server & Client truy xuất dữ liệu và tìm kiếm File Qua Internet
sử dụng các hàm API để thực hiện trên VBA hay các ngôn ngữ lập trình khác cho Windows
Phía Máy chủ sử dụng Hàm API như sau
1/ Khi sử dụng hàm StartServer thì máy chủ sẻ lắng nghe trên toàn bộ Máy tính bao gồm toàn bộ các ổ cứng hiện có trên PC
2/ Khi sử dụng hàm InitializeServer thì máy chủ sẻ lắng nghe trên Folder chia sẻ
3/ hiện chưa phân quyền cho 2 mục nêu trên
4/ Khi sử dụng hàm StartServer thì máy khác muốn truy xuất file nào trên PC máy chủ thì truyền tham số DBPath là đường dẫn tuyệt đối VD: D:\MyFolder\Data.accdb
5/ Khi sử dụng hàm InitializeServer thì phía máy khách truyền tham số DBPath tương đối là Data.accdb phía máy chủ tự gán Folder vào Data.accdb
6/ Chắc chắn nhất ta cứ truyền DBPath theo mục số 4 là D:\MyFolder\Data.accdb thì phía máy chủ lắng nghe kiểu gì cũng sử dụng tốt
Phía Máy Khách như sau:
1/ Hàm GetRs là hàm chính sử dụng cho truy xuất và lưu dữ liệu lên Server
hàm trả về là Rst As ADODB.Recordset với các tính năng và thuộc tính như ADODB khi ta check ADODB 2.8 to 6.1
2/ Đính kèm code mẫu trong File có thể tham khảo thêm
3/ Hàm hỗ trợ tìm kiếm file trên máy chủ như sau
1/ hàm GetFilesListArray lấy danh sách file ( không đệ quy Folder ) trên máy chủ gán xuống Sheet hay tùy ý sử dụng hộ trợ cho tìm DBpath truy xuất dữ liệu từ Xa
2/ Hàm GetFileByExtension như hàm trên với tùy chọn tìm kiếm theo Extension ( phần mở rộng của File ) và tùy chọn duyệt Folder đệ quy
3/ Cách sử dụng hàm GetFilesListArray
4/ Cách sử dụng hàm GetFileByExtension
Kế hoạch tiếp theo
1/ Thong thả tôi sẻ thêm hàm Downloads và Uploads từ máy khách lên máy chủ và tải file sau
2/ Thiết kế thêm nhiều hàm khác nữa và chạy đa luồng đa nhiệm trên Web Server
...
Đính kèm phía dưới là API và code mẫu ta có thể sử dụng Free không giới hạn ... viết Server và Client trên Excel hay bất cứ ngôn ngữ lập trình nào mà bạn có khả năng... sử dụng truy xuất dữ liệu và tìm kiếm file qua Internet
quá trình sử dụng có lỗi phát sinh ngoại lệ vui lòng mô tả chi tiết ... nếu phù hợp và khả năng có thể Tôi sẻ điều chỉnh lại
ai có mong muốn viết thêm gì cứ nêu nếu phù hợp và khả năng cho phép tôi sẻ viết
WebServer.dll này được trợ giúp By OpenAI - ChatGPT
dự án chuẩn chuyển lên kho lưu trữ trên github.com .. Ai quan tâm có thể xem và tải sử dụng Free không giới hạn
github.com

Server & Client - Máy chủ và Máy khách
1/ ý tưởng này hình thành và phát triển cơ bản với sự hổ trợ của AI - ChatGPT sau khoãng 5 ngày hỏi qua lại với nhau 2/ vài điều giới thiệu bắt đầu từ 1 loạt bài link sau từ bài số 179...

2/ Hôm nay tôi giới thiệu cho ai yêu thích thì sử dụng các hàm cơ bản nhất thông qua Web Server & Client truy xuất dữ liệu và tìm kiếm File Qua Internet
sử dụng các hàm API để thực hiện trên VBA hay các ngôn ngữ lập trình khác cho Windows
Phía Máy chủ sử dụng Hàm API như sau
Mã:
#If Win64 Then
Rem ########## Call StartServer(Ip,Port) Server lang nghe tren toan bo PC
Declare PtrSafe Sub StartServer Lib "WebServer64.dll" (ByRef IP As Variant, ByRef Port As Variant)
Rem ########## Call InitializeServer("127.0.0.1", 8080, "C:\DataBase_Server")
Rem Server lang nghe tren "C:\DataBase_Server"
Declare PtrSafe Sub InitializeServer Lib "WebServer64.dll" _
(ByRef IP As Variant, ByRef Port As Variant, ByRef ServerPath As Variant)
Rem ##########
Declare Sub StopServer Lib "WebServer64.dll" ()
#Else
Rem ##########
Declare Sub StartServer Lib "WebServer32.dll" (ByRef IP As Variant, ByRef Port As Variant)
Rem ##########
Declare Sub InitializeServer Lib "WebServer32.dll" _
(ByRef IP As Variant, ByRef Port As Variant, ByRef ServerPath As Variant)
Declare Sub StopServer Lib "WebServer32.dll" ()
Rem ##########
#End If
Rem ##########
Sub StartWebServer()
Dim IP As String, Port As Long
IP = GetMyLocalIP()
Port = 8080
Rem Call StartServer(IP, Port) ''Server Bat dau tren toan bo PC
Call InitializeServer(IP, Port, "C:\DataBase_Server") ''Server Bat dau voi ServerPath
End Sub
1/ Khi sử dụng hàm StartServer thì máy chủ sẻ lắng nghe trên toàn bộ Máy tính bao gồm toàn bộ các ổ cứng hiện có trên PC
2/ Khi sử dụng hàm InitializeServer thì máy chủ sẻ lắng nghe trên Folder chia sẻ
3/ hiện chưa phân quyền cho 2 mục nêu trên
4/ Khi sử dụng hàm StartServer thì máy khác muốn truy xuất file nào trên PC máy chủ thì truyền tham số DBPath là đường dẫn tuyệt đối VD: D:\MyFolder\Data.accdb
5/ Khi sử dụng hàm InitializeServer thì phía máy khách truyền tham số DBPath tương đối là Data.accdb phía máy chủ tự gán Folder vào Data.accdb
6/ Chắc chắn nhất ta cứ truyền DBPath theo mục số 4 là D:\MyFolder\Data.accdb thì phía máy chủ lắng nghe kiểu gì cũng sử dụng tốt
Phía Máy Khách như sau:
Mã:
Rem-----------------
#If Win64 Then
Declare PtrSafe Function GetRs Lib "WebServer64.dll" _
(ByRef IP As Variant, ByRef Port As Variant, _
ByRef FileName As Variant, ByRef SQL As Variant) As Variant
Rem-----------------
Declare PtrSafe Function GetTableNamesA Lib "WebServer64.dll" _
(ByRef IP As Variant, ByRef Port As Variant, _
ByRef FileName As Variant) As Variant
Rem-----------------
Declare PtrSafe Function GetFieldNamesA Lib "WebServer64.dll" _
(ByRef IP As Variant, ByRef Port As Variant, _
ByRef FileName As Variant, ByRef SQL As Variant) As Variant
Rem-----------------
Declare PtrSafe Function GetListDataBaseA Lib "WebServer64.dll" _
(ByRef IP As Variant, ByRef Port As Variant, _
ByRef FileName As Variant, ByRef SQL As Variant) As Variant
Rem-----------------
Declare PtrSafe Function GetLastIdTableNameA Lib "WebServer64.dll" _
(ByRef IP As Variant, ByRef Port As Variant, _
ByRef FileName As Variant, ByRef SQL As Variant) As Variant
#Else
Declare Function GetRs Lib "WebServer32.dll" _
(ByRef IP As Variant, ByRef Port As Variant, _
ByRef FileName As Variant, ByRef SQL As Variant) As Variant
Rem-----------------
Declare Function GetTableNamesA Lib "WebServer32.dll" _
(ByRef IP As Variant, ByRef Port As Variant, _
ByRef FileName As Variant) As Variant
Rem-----------------
Declare Function GetFieldNamesA Lib "WebServer32.dll" _
(ByRef IP As Variant, ByRef Port As Variant, _
ByRef FileName As Variant, ByRef SQL As Variant) As Variant
Rem-----------------
Declare Function GetListDataBaseA Lib "WebServer32.dll" _
(ByRef IP As Variant, ByRef Port As Variant, _
ByRef FileName As Variant, ByRef SQL As Variant) As Variant
Rem-----------------
Declare Function GetLastIdTableNameA Lib "WebServer32.dll" _
(ByRef IP As Variant, ByRef Port As Variant, _
ByRef FileName As Variant, ByRef SQL As Variant) As Variant
#End If
1/ Hàm GetRs là hàm chính sử dụng cho truy xuất và lưu dữ liệu lên Server
hàm trả về là Rst As ADODB.Recordset với các tính năng và thuộc tính như ADODB khi ta check ADODB 2.8 to 6.1
2/ Đính kèm code mẫu trong File có thể tham khảo thêm
3/ Hàm hỗ trợ tìm kiếm file trên máy chủ như sau
Mã:
#If Win64 Then
Rem ########## Call StartServer(Ip,Port) Server lang nghe tren toan bo PC
Declare PtrSafe Sub StartServer Lib "WebServer64.dll" (ByRef IP As Variant, ByRef Port As Variant)
Rem ########## Call InitializeServer("127.0.0.1", 8080, "C:\DataBase_Server")
Rem Server lang nghe tren "C:\DataBase_Server"
Declare PtrSafe Sub InitializeServer Lib "WebServer64.dll" _
(ByRef IP As Variant, ByRef Port As Variant, ByRef ServerPath As Variant)
Rem ##########
Declare Sub StopServer Lib "WebServer64.dll" ()
Rem ##########
Declare PtrSafe Function GetFilesListArray Lib "WebServer64.dll" _
(ByRef IP As Variant, ByRef Port As Variant, ByRef ServerPath As Variant) As Variant
Rem ##########
Declare PtrSafe Function GetFileByExtension Lib "WebServer64.dll" _
(ByRef IP As Variant, ByRef Port As Variant, ByRef ServerPath As Variant, _
ByRef Extension As Variant, ByRef InSubfolders As Boolean) As Variant
Rem ##########
#Else
Rem ##########
Declare Sub StartServer Lib "WebServer32.dll" (ByRef IP As Variant, ByRef Port As Variant)
Rem ##########
Declare Sub InitializeServer Lib "WebServer32.dll" _
(ByRef IP As Variant, ByRef Port As Variant, ByRef ServerPath As Variant)
Declare Sub StopServer Lib "WebServer32.dll" ()
Rem ##########
Declare Function GetFilesListArray Lib "WebServer32.dll" _
(ByRef IP As Variant, ByRef Port As Variant, ByRef ServerPath As Variant) As Variant
Rem ##########
Declare Function GetFileByExtension Lib "WebServer32.dll" _
(ByRef IP As Variant, ByRef Port As Variant, ByRef ServerPath As Variant, _
ByRef Extension As Variant, ByRef InSubfolders As Boolean) As Variant
Rem ##########
#End If
1/ hàm GetFilesListArray lấy danh sách file ( không đệ quy Folder ) trên máy chủ gán xuống Sheet hay tùy ý sử dụng hộ trợ cho tìm DBpath truy xuất dữ liệu từ Xa
2/ Hàm GetFileByExtension như hàm trên với tùy chọn tìm kiếm theo Extension ( phần mở rộng của File ) và tùy chọn duyệt Folder đệ quy
3/ Cách sử dụng hàm GetFilesListArray
Mã:
Sub PopulateSheetWithFileList()
Dim ServerIP As String
Dim ServerPort As Integer
Dim FolderPath As String
Dim FileList() As String
Dim i As Integer
ServerIP = GetMyLocalIP()
ServerPort = 8080
Rem FolderPath = "C:\DataBase_Server"
FolderPath = "D:\DataBase_Server"
Cells.Clear
' G?i hàm Delphi t? VBA d? nh?n danh sách tên t?p
FileList = GetFilesListArray(ServerIP, ServerPort, FolderPath)
Debug.Print UBound(FileList, 1)
' Xóa n?i dung cu trong t? tính
ThisWorkbook.Sheets("Sheet1").Cells.Clear
' Gán danh sách tên t?p lên các dòng c?a t? tính
For i = LBound(FileList) To UBound(FileList)
ThisWorkbook.Sheets("Sheet1").Cells(i + 1, 1).value = FileList(i)
Next i
End Sub
4/ Cách sử dụng hàm GetFileByExtension
Mã:
Sub Main_GetFileByExtension()
Dim IP As String
Dim Port As Integer
Dim FolderPath As String
Dim resultArray As Variant
Dim i As Long
IP = GetMyLocalIP()
Port = 8080
FolderPath = "C:\DataBase_Server"
' G?i hàm Delphi d? nh?n m?ng k?t qu?
resultArray = GetFileByExtension(IP, Port, FolderPath, "*.xls*", False)
Rem resultArray = GetFileByExtension(Ip, Port, FolderPath, "*.*", False) ''ko duyet de quy Folder
'resultArray = GetFileByExtension(Ip, Port, FolderPath, "*.*", True) ''de quy Folder
Debug.Print UBound(resultArray, 1)
Cells.Clear
' Gán k?t qu? lên b?ng tính
For i = LBound(resultArray) To UBound(resultArray)
' Gán giá tr? vào c?t A, t? dòng 1 tr? di
Worksheets("Sheet1").Cells(i + 1, 1).value = resultArray(i)
Next i
End Sub
Kế hoạch tiếp theo
1/ Thong thả tôi sẻ thêm hàm Downloads và Uploads từ máy khách lên máy chủ và tải file sau
2/ Thiết kế thêm nhiều hàm khác nữa và chạy đa luồng đa nhiệm trên Web Server
...
Đính kèm phía dưới là API và code mẫu ta có thể sử dụng Free không giới hạn ... viết Server và Client trên Excel hay bất cứ ngôn ngữ lập trình nào mà bạn có khả năng... sử dụng truy xuất dữ liệu và tìm kiếm file qua Internet
quá trình sử dụng có lỗi phát sinh ngoại lệ vui lòng mô tả chi tiết ... nếu phù hợp và khả năng có thể Tôi sẻ điều chỉnh lại
ai có mong muốn viết thêm gì cứ nêu nếu phù hợp và khả năng cho phép tôi sẻ viết
WebServer.dll này được trợ giúp By OpenAI - ChatGPT
dự án chuẩn chuyển lên kho lưu trữ trên github.com .. Ai quan tâm có thể xem và tải sử dụng Free không giới hạn
GitHub - KieuManh366377/WebServer-API: WebServer API
WebServer API. Contribute to KieuManh366377/WebServer-API development by creating an account on GitHub.
Lần chỉnh sửa cuối: