Giải pháp: Lấy, Ghi và Xóa dữ liệu từ xa qua Internet

Liên hệ QC

Kiều Mạnh

I don't program, I beat code into submission!!!
Tham gia
9/6/12
Bài viết
5,421
Được thích
4,033
Giới tính
Nam
I/ Sơ lược qua 1 chút
1/ xuất phát từ chủ đề sau mô tả chi tiết bài số 1 cùng loạt bài sau đó

2/ Tôi viết thêm hàm Tạo TableName, xóa và ghi dữ liệu từ xa vào File *.accdb Or *.mdb ...

3/ lấy dữ liệu từ xa vvv ...

II/ để sử dụng App Server và truy xuất dữ liệu yêu cầu chi tiết như sau

1/ File ServerNetwork.exe + File MyLibrary32.dll luôn luôn đi kèm với nhau trong 1 Folder
2/ đi kèm là 2 DLL viết = Delphi 32 bit và 64 bit ... tùy thuộc vào bạn cài đặt Office x32 và x64 thì sử dụng nó
3/ xuất các hàm cơ bản nhất song song nhau là COM và API ... nếu sử dụng COM thì đăng ký sử dụng với Windows ( kèm theo *.vbs )
4/ Hình ảnh các hàm trong COM như sau ... khai báo theo chuẩn chung COM của Ms và sử dụng

1662283186789.png



5/ File Excel tôi úp lên đây là khai báo sử dụng API còn muốn sử dụng COM thì chức năng như nhau

III/ Cảnh báo Lỗi
1/ sẻ lỗi nếu chạy File ServerNetwork.exe trên Máy ảo hoặc hệ thống ảo hóa
2/ nếu máy cài Office x64 mà sử dụng File mục 1 chia sẻ dữ liệu sẻ lỗi ko lấy được dữ liệu File ( *.xlsm, xlsb, xlsx ) Excel từ 2010 to 2021 ( chỉ sử dụng tốt file *.xls )
3/ khắc phục lỗi trên cho Officex64 thì cài đặt Microsoft Access Database Engine 2010 Redistributable ... link trên trong mục số 3

IV / vài VD cơ bản sử dụng code
1/ Từ Server sau khi chia sẻ Folder xong bạn tạo 1 File tạm keo QLBHPN.accdb vào Folder chia sẻ
2/ Từ client tạo 1 Table + Fild như sau
Mã:
Public Sub CREATE_TableName()
    TableName = "CREATE TABLE my_ado(id int not null primary key, name varchar(200)," _
        & "txt text, dt date, tm time, ts timestamp)"
    Rem Se loi neu Table da ton tai
    On Error GoTo ErrorHandler
    Ip = GetIpTCP ''Luu Y thay doi IP nay cho may tinh khac can lay qua Internet
 
    Set Rst = ConnectionDBA(Ip, Port, "QLBHPN.accdb", TableName)
    Rst.Close: Set Rst = Nothing
    Exit Sub
ErrorHandler: If Err Then Err.Clear
End Sub

3/ ghi 1 dòng dữ liệu vào mục số 2
Mã:
Public Sub INSERT_INTO_TableName1()
    Ip = GetIpTCP ''Luu Y thay doi IP nay cho may tinh khac can lay qua Internet
 
    TableName = "my_ado"
    FileName = "QLBHPN.accdb"
    Rem ==========
    LastID = GetLastIdTableNameA(Ip, Port, FileName, TableName)
    Debug.Print LastID
    If LastID = vbNullString Then LastID = 0
    LastID = LastID + 1
    Rem ==========
    SQL = "INSERT INTO my_ado(id,name,txt) values(" & LastID & " ,22200,'MyQL')"
    Set Rst = ConnectionDBA(Ip, Port, "QLBHPN.accdb", SQL)
    Debug.Print SQL
    Rem ==========
    Rst.Close: Set Rst = Nothing
    Call CopyDataToRange
End Sub

4/ ghi n dòng dữ liệu vào mục số 2
Mã:
Public Sub INSERT_INTO_TableName2()
    Ip = GetIpTCP ''Luu Y thay doi IP nay cho may tinh khac can lay qua Internet
 
    TableName = "my_ado"
    FileName = "QLBHPN.accdb"
    start = Timer
    Rem ==========
    LastID = GetLastIdTableNameA(Ip, Port, FileName, TableName)
    Rem Debug.Print LastID
    If LastID = vbNullString Then LastID = 0
    Rem ==========
    For i = 1 To 100
        LastID = LastID + 1
        SQL = "INSERT INTO my_ado(id,name,txt) values(" & LastID & " ,22200,'MyQL')"
        Set Rst = ConnectionDBA(Ip, Port, "QLBHPN.accdb", SQL)
        ''Debug.Print SQL
    Next i
    Rem ==========
    Debug.Print "So dong INSERT " & vbTab & (i - 1), (Timer - start)
    Rst.Close: Set Rst = Nothing
    Call CopyDataToRange
    Debug.Print "Tong so dong : " & vbTab & LastID
End Sub

5/ xóa dữ liệu

Mã:
Public Sub DeLete_TableName()
    SQL = "DELETE FROM my_ado"
    Ip = GetIpTCP ''Luu Y thay doi IP nay cho may tinh khac can lay qua Internet
 
    Set Rst = ConnectionDBA(Ip, Port, "QLBHPN.accdb", SQL)
    Rst.Close: Set Rst = Nothing
    Call CopyDataToRange
End Sub

Kiến thức cơ bản sử dụng ADODB thuần

còn nhiều vấn đề khác thong thả viết tiếp ... chi tiết trong File Excel kèm theo
Vui lòng ko trích dẫn bài này vì còn chỉnh sửa + viết thêm chưa hoàn chỉnh

Chủ đề này chỉ hổ trợ ai đó sử dụng nó or tò mò muốn thử ....

Nếu phát sinh lỗi thì mô tả lỗi trong phạm vi điều chỉnh Tôi sẻ viết lại

Bạn nào có ý Bà Tám + Cô 9 vui lòng lập thới mới mà bàn ... xin cảm ơn


Demo có thể tải trên GitHub

 
Lần chỉnh sửa cuối:
Tôi mượn cái File bên Web thủ thuật Access của xx có nick bên GPE :p này viết vài Hàm mẫu vào đó ... cho Ai có nhu cầu tham khảo thêm

Code trong Module Access như sau ... đăng Ký DLL COM xong check nó thì mới sử dụng được

Mã:
Option Compare Database
Option Explicit
Rem ==========
Dim RPC As New MyLibrary.cNetworkTCP
Dim SQL As String, Ip As String
Dim Rst As ADODB.Recordset
Dim Temp As String
Dim aPath As String
Dim Arr As Variant
Dim sArr() As String
Dim lCount As Integer
Dim i As Long
Rem ==========
Public Sub Main_GetFieldNames()
    Dim i As Long, Fild As String
    Ip = GetMyLocalIP() ''Luu Y thay doi IP nay cho may tinh khac can lay qua Internet
    SQL = "select * from DataBaseNhap"
    sArr = RPC.GetFieldNames(Ip, Port, "QLBHPN.accdb", SQL)  ''Lay List Fild
    Dim name As Variant
    For Each name In sArr
        Debug.Print name
    Next
End Sub
Rem ==========
Public Sub Main2_GetFieldNames()
    Dim i As Long, Fild As String
    Ip = GetMyLocalIP() ''Luu Y thay doi IP nay cho may tinh khac can lay qua Internet
    SQL = "select * from DataBaseNhap"
    Set Rst = ConnectDataName(Ip, Port, "QLBHPN.accdb", SQL)
    For i = 0 To Rst.Fields.Count - 1
        Fild = Rst.Fields(i).name
        Debug.Print Fild
        Rem =========
        Rem List2.AddItem (Fild)                                ''Lay sai File CK% do List VB6 ko ho tro Unicode
        Rem Client.ListBox1.AddItem (Fild)                      ''List cua VBA C:\Windows\SystemWOW64\FM20.DLL
    Next
End Sub
Rem ==========
Public Sub Main_GetTableName()
    Ip = GetMyLocalIP() ''Luu Y thay doi IP nay cho may tinh khac can lay qua Internet
    Rem sArr = RPC.GetTableNames(Ip, Port, "QLBHPN.accdb")      ''lay TableName Access
    sArr = RPC.GetTableNames(Ip, Port, "Data.xls")              ''Lay SheetName
    Dim name As Variant
    For Each name In sArr
        Debug.Print name
    Next
End Sub

Lấy dữ liệu lên Form Access có hình như sau

1662382489486.png

Tải file mẫu sau về tùy chỉnh lại các tham số và sử dụng + tùy biến theo sở thích
Chúc vui văn vẻ
 

File đính kèm

  • Client_demo.rar
    134.8 KB · Đọc: 17
chủ đề bên này dùng cho các Bạn biết lập trình viết code .... còn bạn nào chưa biết lập trình viết code mà chỉ biết bấm nút và tích chọn xin mời theo dõi link sau


File server dùng chung cho tất cả ... Lưu ý file Server củ của bài này tôi cho nhiều hàm load khi mở Form quá nên bị lỗi sẻ chìm Form và đơ vui lòng tải File mới trên GitHub

Downloads
 
Web KT
Back
Top Bottom