Lập trình và truy vấn dữ liệu Qua Internet cùng với ExcelTools Network TCPIP

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,541
Được thích
4,125
Giới tính
Nam
Sau gần 2 năm mò code nghiên cứu cuối cùng Mạnh cũng đã thực hiện thành công Lấy dữ liệu qua Internet theo Phương Thức TCPIP
Mọi sự bắt đầu từ thớt sau


1/ Code hiện tại đang viết mọi cái trên VB6 để làm quen cách thức hoạt động của nó Khi nào mạnh chuyển Qua Delphi thành công sẻ úp tặng cho ai đó cần mà sử dụng không giới hạn

2/ Xem qua Video Demo


3/ Code mở kết nối ADODB Từ Client tới Server rất gần gủi Y trang trên VBA ... ta chỉ cần khai báo kết nối tới Server là xong

Cách 1
Mã:
Public Sub GetDatabase_VB6()
    Dim Rst As ADODB.Recordset
    Dim Xnet As New Network
    Dim SQL As String
    Rem SQL = "select * from NhapXuatTon"
    SQL = "select * from DataBaseNhap"
    Rem SQL = Range("A8").Value
    Set Rst = Xnet.connect("192.168.1.9", 8181, SQL)
    Cells.ClearContents
    Range("A1").CopyFromRecordset Rst
    Rst.Close: Set Rst = Nothing
End Sub

Cách 2
Mã:
Public Sub GetDatabase2_VB6()
    Dim Rst As ADODB.Recordset
    Dim Xnet As New Network
    Dim SQL As String, i As Long
    SQL = "select * from DataBaseNhap"
    Rem SQL = Range("A8").Value
    Set Rst = Xnet.connect("192.168.1.9", 8181, SQL)
    
    For i = 0 To Rst.Fields.Count - 1
        Cells(1, 1 + i).Value = Rst.Fields(i).Name
    Next i

    Cells.ClearContents
    Range("A2").CopyFromRecordset Rst
    Rst.Close: Set Rst = Nothing
End Sub

Cách 3

Mã:
Private Sub GetDatabase3_VB6()
    Dim Rst As ADODB.Recordset
    Dim Xnet As New Network
    Dim SQL As String
    Dim dArr() As Variant
    Dim Arr() As Variant
    Dim i As Long, j As Long, k As Long
    SQL = "select * from DataBaseNhap"

    Set Rst = Xnet.connect("192.168.1.9", 8181, SQL)
    Arr = Rst.GetRows()

    ReDim dArr(1 To UBound(Arr, 2) + 1, 1 To UBound(Arr, 1) + 1)
    For i = 0 To UBound(Arr, 2)
        k = k + 1
        For j = 0 To UBound(Arr, 1)
            dArr(k, j + 1) = Arr(j, i)
        Next j
    Next i

    Cells.ClearContents
    Range("A1").Resize(UBound(dArr, 1), UBound(dArr, 2)) = dArr
    Rst.Close
    Set Rst = Nothing
End Sub

Cách 4
ta có thể viết Hàm mảng trên Cells hay gì đó tùy thích cũng được như mô tả trên Link sau qua Thớt đó sẻ hiểu thêm
Bài số #39
 
Lần chỉnh sửa cuối:
Sau gần 2 năm mò code nghiên cứu cuối cùng Mạnh cũng đã thực hiện thành công Lấy dữ liệu qua Internet theo Phương Thức TCPIP
Mọi sự bắt đầu từ thớt sau


1/ Code hiện tại đang viết mọi cái trên VB6 để làm quen cách thức hoạt động của nó Khi nào mạnh chuyển Qua Delphi thành công sẻ úp tặng cho ai đó cần mà sử dụng không giới hạn

2/ Xem qua Video Demo


3/ Code mở kết nối ADODB Từ Client tới Server rất gần gủi Y trang trên VBA ... ta chỉ cần khai báo kết nối tới Server là xong

Cách 1
Mã:
Public Sub GetDatabase_VB6()
    Dim Rst As ADODB.Recordset
    Dim Xnet As New Network
    Dim SQL As String
    Rem SQL = "select * from NhapXuatTon"
    SQL = "select * from DataBaseNhap"
    Rem SQL = Range("A8").Value
    Set Rst = Xnet.connect("192.168.1.9", 8181, SQL)
    Cells.ClearContents
    Range("A1").CopyFromRecordset Rst
    Rst.Close: Set Rst = Nothing
End Sub

Cách 2
Mã:
Public Sub GetDatabase2_VB6()
    Dim Rst As ADODB.Recordset
    Dim Xnet As New Network
    Dim SQL As String, i As Long
    SQL = "select * from DataBaseNhap"
    Rem SQL = Range("A8").Value
    Set Rst = Xnet.connect("192.168.1.9", 8181, SQL)
  
    For i = 0 To Rst.Fields.Count - 1
        Cells(1, 1 + i).Value = Rst.Fields(i).Name
    Next i

    Cells.ClearContents
    Range("A2").CopyFromRecordset Rst
    Rst.Close: Set Rst = Nothing
End Sub

Cách 3

Mã:
Private Sub GetDatabase3_VB6()
    Dim Rst As ADODB.Recordset
    Dim Xnet As New Network
    Dim SQL As String
    Dim dArr() As Variant
    Dim Arr() As Variant
    Dim i As Long, j As Long, k As Long
    SQL = "select * from DataBaseNhap"

    Set Rst = Xnet.connect("192.168.1.9", 8181, SQL)
    Arr = Rst.GetRows()

    ReDim dArr(1 To UBound(Arr, 2) + 1, 1 To UBound(Arr, 1) + 1)
    For i = 0 To UBound(Arr, 2)
        k = k + 1
        For j = 0 To UBound(Arr, 1)
            dArr(k, j + 1) = Arr(j, i)
        Next j
    Next i

    Cells.ClearContents
    Range("A1").Resize(UBound(dArr, 1), UBound(dArr, 2)) = dArr
    Rst.Close
    Set Rst = Nothing
End Sub

Cách 4
ta có thể viết Hàm mảng trên Cells hay gì đó tùy thích cũng được như mô tả trên Link sau qua Thớt đó sẻ hiểu thêm
Bài số #39
Chia sẻ file Excel với nhiều người dùng cùng lúc. Có thể cập nhật qua mạng internet = nhiều loại thiết bị khác nhau không còn là vấn đề mới mẽ rồi. Ta có thể dùng các công cụ sẵn có của các hãng như Microsoft, Google... Còn nếu muốn tự tạo thì có nhiều cách, dưới đây là 1 cách trong nhiều cách.

 
Lần chỉnh sửa cuối:
Upvote 0
Chia sẻ file Excel với nhiều người dùng cùng lúc. Có thể cập nhật qua mạng internet = nhiều loại thiết bị khác nhau không còn là vấn đề mới mẽ rồi. Ta có thể dùng các công cụ sẵn có của các Microsoft, Google... Còn nếu muốn tự tạo thì có nhiều cách, dưới đây là 1 cách trong nhiều cách.

hay đó ... thong thả có thời gian + có 1 chút gì đó manh mối Mạnh lại mò thử chơi xem sao ... rảnh mò chơi thôi có làm cái trò chi mô mà sợ mất

Còn mạnh lấy được dữ liệu vô số File trên 1 lần kết nối tới Server ok đấy
Ghi thì cũng làm ok thôi ... đơn giản thì được còn phức tạp = Tịt
nhiều người ghi vào 1 file ko phải là vấn đề nữa ... quan trọng là xử lý xung đột nhiều người ghi cùng 1 thời điểm ấy
 
Lần chỉnh sửa cuối:
Upvote 0
ý tưởng là mạnh sẻ làm như sau
1/ Viết cái Server cho nó chạy Start up ( Khởi động cùng windows )
2/ các máy khách trong LAN Or Internet có thể truy xuất dữ liệu bất kỳ ( lấy thì cho vô tư )
3/ Ghi dữ liệu phân quyền cho User ... tùy ai ghi cái gì vào đâu vvv
....
...
Ứng dụng bán hàng làm báo giá cho khách hàng ... cho họ cái Add-ins trên Excel ... vậy là họ cần xem cái gì cứ có kết nối Internert là xong
Viết thành SQL có các Tablename cho họ chọn ===> thế là xong
vân vân và mây mây ................ trong tầm tay rồi đó
 
Upvote 0
và cái quan trọng rất dễ thương nhất ở đây là cái SQL TCPIP ấy ... chỉ việc tích chọn ===> thế là xong
 
Upvote 0
Cách bài số #21

Cách này nếu Mạnh cắt Cáp Mạng đi là hình như nó = tịt toàn tập đấy
Ý nói chỉ còn Mạng LAN ấy ... nếu ko tin thử rút cáp mạng ra xem thử xong quay phim úp lại xem
Mới biết xong ... Video úp ngày 26/10/2020 to ngày 05/11/2020 = mấy ngày thì Mạnh đã tìm ra hướng đi he :p
 
Lần chỉnh sửa cuối:
Upvote 0
Cách này nếu Mạnh cắt Cáp Mạng đi là hình như nó = tịt toàn tập đấy
Mới biết xong ... Video úp ngày 26/10/2020 to ngày 05/11/2020 = mấy ngày thì Mạnh đã tìm ra hướng đi he :p
Dĩ nhiên là thế rồi, vậy anh thử dùng google sheet rồi cắt cáp thử xem sao nhé.
 
Upvote 0
Upvote 0
vậy là chính xác he ... nói thế thôi là ta hiểu nhau ròi mà :p
Còn mạnh biết tới thời điểm hiện tại là 4 cách đấy ... kể cả cắt cáp vẫn xài OK ... chỉ cònLAN
Trong mạng LAN thì chạy trên mạng LAN, đâu ảnh hưởng gì. Chỉ là cắt đứt với bên ngoài thôi.
 
Upvote 0
Các client khi có yêu cầu ghi vào DB thì gửi đăng ký đến server, server sẽ tạo một hàng đợi rồi xử lý dần theo kiểu FIFO chẳng hạn.
Mạnh vẫn chưa hình dung ra bạn nói và thực hiện như thế nào
1/ VD: C:\Manh\Data.accdb
2/ vậy 2 máy Trong LAN Share Full Folder
3/ 2 tay Mạnh cần 2 chuột nháy lưu vào Data.accdb liên tục ... thì sẻ rối tung hết dữ liệu lên vvv
4/ Cách xử lý chi tiết như thế nào ??? code trên VBA ra làm sao ??? với Mạnh là ko biết gì luôn
...
nếu được mong Bạn chỉ cụ thể cho 1 code ngay trên VBA xong Mạnh thử quậy các kiểu xem như thế nào xong trả lời lại cho Bạn kết quả !?
 
Upvote 0
Mạnh vẫn chưa hình dung ra bạn nói và thực hiện như thế nào
1/ VD: C:\Manh\Data.accdb
2/ vậy 2 máy Trong LAN Share Full Folder
3/ 2 tay Mạnh cần 2 chuột nháy lưu vào Data.accdb liên tục ... thì sẻ rối tung hết dữ liệu lên vvv
4/ Cách xử lý chi tiết như thế nào ??? code trên VBA ra làm sao ??? với Mạnh là ko biết gì luôn
...
nếu được mong Bạn chỉ cụ thể cho 1 code ngay trên VBA xong Mạnh thử quậy các kiểu xem như thế nào xong trả lời lại cho Bạn kết quả !?
Đó là do anh hỏng ở khâu phân tích và thiết kế CSDL, lỗi không toàn vẹn dữ liệu do xung đột dữ liệu, tương tác người dùng... Đã làm việc với CSDL liên hệ thì nó phải ràng buộc với nhau thông qua các khóa.
 
Upvote 0
Đó là do anh hỏng ở khâu phân tích và thiết kế CSDL, lỗi không toàn vẹn dữ liệu do xung đột dữ liệu, tương tác người dùng... Đã làm việc với CSDL liên hệ thì nó phải ràng buộc với nhau thông qua các khóa.
chịu nói vậy thì cũng = tịt à
Thì có làm CSDL bao giờ đâu... chỉ viết cái phần mềm QLBH xài Data.accdb làm nơi lưu dữ liệu xong có 2 cái máy xài nhiều năm nay
mà có khi nào 2 máy lưu cùng thời điểm mô mà biết ... 1 ngày thử quậy thì mới biết đó chứ ...
Nếu không nhờ cái quậy đó thì giờ này cứ nghỉ Mình viết là hoàn hảo lắm đấy ai dè còn dở ẹc
 
Upvote 0
chịu nói vậy thì cũng = tịt à
Thì có làm CSDL bao giờ đâu... chỉ viết cái phần mềm QLBH xài Data.accdb làm nơi lưu dữ liệu xong có 2 cái máy xài nhiều năm nay
mà có khi nào 2 máy lưu cùng thời điểm mô mà biết ... 1 ngày thử quậy thì mới biết đó chứ ...
Nếu không nhờ cái quậy đó thì giờ này cứ nghỉ Mình viết là hoàn hảo lắm đấy ai dè còn dở ẹc
Chưa kể nếu là link dữ liệu CSDL access thì khi người dùng truy cập cùng thời điểm vào cùng 1 dòng dữ liệu thì sẽ phát sinh lỗi.
 
Upvote 0
Chưa kể nếu là link dữ liệu CSDL access thì khi người dùng truy cập cùng thời điểm vào cùng 1 dòng dữ liệu thì sẽ phát sinh lỗi.
HLMT cái món CSDL này thì quá giỏi rồi ... Nếu được chỉ cho Mạnh học với đi
Code + Files chi tiết ấy .... khả năng của Mạnh xem vài lần là học ok ngay và luôn
Còn gợi ý kiểu bay bay trên 9 tầng mây thì xin thua -0-0-0- đi cho lẹ
 
Upvote 0
Mạnh vẫn chưa hình dung ra bạn nói và thực hiện như thế nào
1/ VD: C:\Manh\Data.accdb
2/ vậy 2 máy Trong LAN Share Full Folder
3/ 2 tay Mạnh cần 2 chuột nháy lưu vào Data.accdb liên tục ... thì sẻ rối tung hết dữ liệu lên vvv
4/ Cách xử lý chi tiết như thế nào ??? code trên VBA ra làm sao ??? với Mạnh là ko biết gì luôn
...
nếu được mong Bạn chỉ cụ thể cho 1 code ngay trên VBA xong Mạnh thử quậy các kiểu xem như thế nào xong trả lời lại cho Bạn kết quả !?
Các client khi có nhu cầu cập nhật máy chủ (ví dụ UPDATE) thì không thực hiện ngay mà gửi đăng ký về server. Server sẽ lưu yêu cầu này vào một hàng đợi rồi xử lý lần lượt. Đến lượt của client nào thì chuyển xác nhận cho client đó thực hiện lệnh.
Bài đã được tự động gộp:

Các client khi có nhu cầu cập nhật máy chủ (ví dụ UPDATE) thì không thực hiện ngay mà gửi đăng ký về server. Server sẽ lưu yêu cầu này vào một hàng đợi rồi xử lý lần lượt. Đến lượt của client nào thì chuyển xác nhận cho phép client đó thực hiện lệnh.
 
Upvote 0
Chưa kể nếu là link dữ liệu CSDL access thì khi người dùng truy cập cùng thời điểm vào cùng 1 dòng dữ liệu thì sẽ phát sinh lỗi.
Lỗi phát sinh trong trường hợp nào anh nhỉ? Phát sinh trong ứng dụng phát triển ngay trong nền Access không kết nối bằng ConnectionString (chẳng hạn link table) hay là ứng dụng có kết nối CSDL bằng ConnectionString? Tôi nghĩ MS đã cho phép tối đa 255 kết nối đồng thời tới Access Database thì nó phải có giải pháp cho tình huống này chứ? Máy tôi không cài Office nửa năm nay rồi nên bây giờ tò mò muốn biết chuyện gì mà không biết làm thế nào nên phiền hỏi bác tý. --=0
 
Upvote 0
Lỗi phát sinh trong trường hợp nào anh nhỉ? Phát sinh trong ứng dụng phát triển ngay trong nền Access không kết nối bằng ConnectionString (chẳng hạn link table) hay là ứng dụng có kết nối CSDL bằng ConnectionString? Tôi nghĩ MS đã cho phép tối đa 255 kết nối đồng thời tới Access Database thì nó phải có giải pháp cho tình huống này chứ? Máy tôi không cài Office nửa năm nay rồi nên bây giờ tò mò muốn biết chuyện gì mà không biết làm thế nào nên phiền hỏi bác tý. --=0
Chương trình em viết xong 90% cơ bản rồi đợi máy anh viết chương trình để em poss lên đây
 
Upvote 0
Lỗi phát sinh trong trường hợp nào anh nhỉ? Phát sinh trong ứng dụng phát triển ngay trong nền Access không kết nối bằng ConnectionString (chẳng hạn link table) hay là ứng dụng có kết nối CSDL bằng ConnectionString? Tôi nghĩ MS đã cho phép tối đa 255 kết nối đồng thời tới Access Database thì nó phải có giải pháp cho tình huống này chứ? Máy tôi không cài Office nửa năm nay rồi nên bây giờ tò mò muốn biết chuyện gì mà không biết làm thế nào nên phiền hỏi bác tý. --=0
Link Table đó bạn. Bạn hãy thử với link table bằng 2 máy khác nhau, trên 2 máy này bạn hãy trỏ chuột đến cùng 1 dòng dữ liệu trên cùng 1 bảng xem coi như thế nào nhé.
 
Upvote 0
Nếu được chỉ cho Mạnh học với đi
Code + Files chi tiết ấy .... khả năng của Mạnh xem vài lần là học ok ngay và luôn
Còn gợi ý kiểu bay bay trên 9 tầng mây thì xin thua -0-0-0- đi cho lẹ
Đã bỏ không dùng nó lâu rồi, em nghĩ anh nên bước từng bước một. Chậm mà chắc, như xây nhà ấy, nền móng chưa chắc chắn thì chưa thể xây nhà cao tầng được.
 
Upvote 0
Các client khi có nhu cầu cập nhật máy chủ (ví dụ UPDATE) thì không thực hiện ngay mà gửi đăng ký về server. Server sẽ lưu yêu cầu này vào một hàng đợi rồi xử lý lần lượt. Đến lượt của client nào thì chuyển xác nhận cho client đó thực hiện lệnh.
Bài đã được tự động gộp:
Kiểu này là ta đang bay bay trên 9 tầng mây đó mà ... nếu Rảnh ta hạ cánh xuống bài số #34 một chút được ko bạn nhỉ
Nói thật lòng là ngay trên VBA Mạnh còn chưa biết làm luôn ấy chứ qua in tét nét thì = tịt à
 
Upvote 0
Web KT

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

Back
Top Bottom