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

Liên hệ QC

Người dùng đang xem chủ đề này

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,133
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:
Giỏi cứ vậy mà phát huy he, từ từ rồi cũng vượt qua kíp nạn thành chánh quả :clap:
 
Upvote 0
Nhớ 20 Năm trước Mạnh đi dự cái hội nghị ở 90 Nguyễn Du - Hà Nội ( Góc ngã 3 trước Hồ Thiền Quang )

Ông giáo sư già bên ban tuyên giáo trung ương có nói 1 câu

Chân lý chỉ có 1 .... đường tới chân lý có muôn nẻo đường .... ai đến trước thì người đó là kẻ chiến thắng ???!!!

Ngẫn ra thấy

A nói tao đi máy bay
B nói tao đi tàu hỏa
c keo tao chạy 1 cái tới ngay
....
Mọi vấn đề ko quan trọng ai làm gì nói gì .... quan trọng là Mạnh đã ghi Danh trên GPE này ... Sau Atools của @Nguyễn Duy Tuân .... chỉ thế thôi -0-0-0-

Tiếp lửa đam mê rễ không trừng 10 năm sau sẻ có người tiếp Lửa
 
Upvote 0
Mình ghi nhận bạn KieuManh và Thuyyeu99 có những đam mê và quyết tâm trong lập trình với Excel. Đặc biệt cùng khá nghiền từ VB6 sang Delphi. Chỉ cần các bạn demo kết quả làm được cũng là tốt rồi, không cần share mã nguồn. Tấc nhiên sẽ cần nhiều thời gian nữa để từ bản demo đến phổ cập đại trà.
 
Upvote 0
Mình ghi nhận bạn KieuManh và Thuyyeu99 có những đam mê và quyết tâm trong lập trình với Excel. Đặc biệt cùng khá nghiền từ VB6 sang Delphi. Chỉ cần các bạn demo kết quả làm được cũng là tốt rồi, không cần share mã nguồn. Tấc nhiên sẽ cần nhiều thời gian nữa để từ bản demo đến phổ cập đại trà.
Thật ra Mạnh đã viết được từ lâu rồi
1/ bằng cách Server gửi từng dòng 1 qua Client cho tới khi hết ... kẹt là nó rất châm + nhiều vấn đề khác
2/ Gửi xml qua
3/ Gửi 1 Array qua Client mới biết cách đây mấy ngày
4/ Mạnh đã cài Atools ... mở file Excel lên xem cách kết nối của Atools hoài và suy nghĩ ... có lẻ đó là cách hay nhất tới thời điểm hiện tại
nó rất thân thiện với VBA ... 1 người có chút kiến thức ADO là có thể ứng dụng nó rất tốt

.....
....
vậy là ngày hôm kia tốt Ngày + rất đẹp Mạnh đã mò ra phương thức kiểu giống Atools
-0-0-0- -0-0-0- -0-0-0- -0-0-0- ........... rất đơn giản chỉ có thế
 
Upvote 0
Thật ra Mạnh đã viết được từ lâu rồi
1/ bằng cách Server gửi từng dòng 1 qua Client cho tới khi hết ... kẹt là nó rất châm + nhiều vấn đề khác
2/ Gửi xml qua
3/ Gửi 1 Array qua Client mới biết cách đây mấy ngày
4/ Mạnh đã cài Atools ... mở file Excel lên xem cách kết nối của Atools hoài và suy nghĩ ... có lẻ đó là cách hay nhất tới thời điểm hiện tại
nó rất thân thiện với VBA ... 1 người có chút kiến thức ADO là có thể ứng dụng nó rất tốt

.....
....
vậy là ngày hôm kia tốt Ngày + rất đẹp Mạnh đã mò ra phương thức kiểu giống Atools
-0-0-0- -0-0-0- -0-0-0- -0-0-0- ........... rất đơn giản chỉ có thế
Nói thật và góp ý bạn nhé, nhìn code và đọc cái comment tôi thấy 2 cái nói sai sai sao sao ý
 
Upvote 0
đó là cách gửi từng dòng 1 Từ Server qua Client ... xong nhận và xử lý nó

1603279908136.png
 
Upvote 0
Ah thì ra là vậy đó hả, chắc mình nhìn không kỹ.
Sory.
 
Upvote 0
Nhìn qua code minh họa, tôi có vài thắc mắc:
  1. Sau khi lấy dữ liệu xong từ thủ tục "Xnet.connect("192.168.1.9", 8181, SQL)" thì mọi thay đổi dữ liệu phía server cũng không được cập nhật vào recordset trên client? Chẳng hạn Anh A sinh năm 2000 lúc khi mới truy vấn từ client. Ngay sau đó trên server người ta cập nhật A sinh năm 1990, nhưng lúc này trên client, A vẫn sinh năm 2000 phải không?
  2. Các thủ tục hữu ích hay dùng như AddNew, Update, Refresh... của Recordset trên client dù có thực hiện được nhưng không có tác dụng lên dữ liệu phía server?
Liệu mấy thắc mắc của tôi có sai không nhỉ? Nếu thấy câu hỏi này ngu quá thì cũng đừng cười nhé :pray:
 
Upvote 0
Nhìn qua code minh họa, tôi có vài thắc mắc:
  1. Sau khi lấy dữ liệu xong từ thủ tục "Xnet.connect("192.168.1.9", 8181, SQL)" thì mọi thay đổi dữ liệu phía server cũng không được cập nhật vào recordset trên client? Chẳng hạn Anh A sinh năm 2000 lúc khi mới truy vấn từ client. Ngay sau đó trên server người ta cập nhật A sinh năm 1990, nhưng lúc này trên client, A vẫn sinh năm 2000 phải không?
  2. Các thủ tục hữu ích hay dùng như AddNew, Update, Refresh... của Recordset trên client dù có thực hiện được nhưng không có tác dụng lên dữ liệu phía server?
Liệu mấy thắc mắc của tôi có sai không nhỉ? Nếu thấy câu hỏi này ngu quá thì cũng đừng cười nhé :pray:
chính xác đó ... ko sai tí nào ... Bài 41 link sau là câu trả lời cho bạn :p

1603283006553.png
 
Upvote 0
chính xác đó ... ko sai tí nào ... Bài 41 link sau là câu trả lời cho bạn :p
Vấn đề này tôi đã dự đoán từ hồi chị Thủy giới thiệu Chương trình chia sẻ CSDL qua Internet rồi. Ngay trang 3 phần #45 tôi đã có đưa ra những băn khoăn vì cảm giác là cái sản phẩm này chưa đáp ứng được những yêu cầu kỹ thuật như cái tên gọi dành cho nó. Thực sự là tôi ngại hỏi thẳng chị Thủy vì ngại mang tiếng làm khó phụ nữ. Nay có anh Mạnh cũng là nam giới với nhau nên hỏi thiệt ai dè đúng như dự đoán trong đầu. Nhân tiện đây tôi mạnh dạn khẳng định luôn là vấn đề anh Mạnh gặp phải (tương ứng 2 cái thắc mắc của tôi ở trên) là không thể giải quyết. Nó không chỉ liên quan đến vấn đề kỹ thuật thuần túy mà còn liên quan nhiều vấn đề ngoài kỹ thuật khác. Chắc nhiều anh bác uyên thâm ở đây nắm rõ những khúc mắc nầy để giải thích với anh Mạnh chứ trình độ như tôi là không dám nói ra. Tôi nói lung tung ra thì cũng chỉ làm trò cười cho các bác có trình độ vạch chữ nghĩa bêu cái ngu mà thôi --=0
 
Lần chỉnh sửa cuối:
Upvote 0
Vấn đề này tôi đã dự đoán từ hồi chị Thủy giới thiệu Chương trình chia sẻ CSDL qua Internet rồi. Ngay trang 3 phần #45 tôi đã có đưa ra những băn khoăn vì cảm giác là cái sản phẩm này chưa đáp ứng được những yêu cầu kỹ thuật như cái tên gọi dành cho nó. Thực sự là tôi ngại hỏi thẳng chị Thủy vì ngại mang tiếng làm khó phụ nữ. Nay có anh Mạnh cũng là nam giới với nhau nên hỏi thiệt ai dè đúng như dự đoán trong đầu. Nhân tiện đây tôi mạnh dạn khẳng định luôn là vấn đề anh Mạnh gặp phải (tương ứng 2 cái thắc mắc của tôi ở trên) là không thể giải quyết. Nó không chỉ liên quan đến vấn đề kỹ thuật mà còn liên quan đến vấn đề kinh doanh. Chắc nhiều anh bác uyên thâm ở đây nắm rõ những khúc mắc nầy để giải thích với anh Mạnh chứ trình độ như tôi là không dám nói ra, có nói kiểu gì thì cũng làm trò cười mà thôi --=0
Mạnh hiểu mà ... có gì cứ nói ta là đàn Ông cả mà rất dễ thôi

để lưu dữ liệu từ Client To Server đơn giản thì làm ok đó ... còn phức tạp mà bao quát nhất cho nhiều vấn đề thì = Tịt toàn tâp
Ngay cả File còn trên máy mà Mạnh làm phức tạp nên còn ko có hiểu luôn chứ nói chi qua In tét nét

VD: Mạnh Share Full Foder file trong LAN 2 máy kết nối thử Mạnh 2 tay nháy chuột liên tục luôn xem sao .... thì cái cứ nghỉ ngon lắm mấy năm nay xài nó mới lòi ra như mô tả Link sau bài số 10


1603286876120.png
 
Upvote 0
cái Xnet.connect

xài trên cái gì cũng thế Access, Word vv... miễn cái nào cho xài ADO là Ok hết ... rất đơn giản cũng chỉ có thế
Còn người dùng muốn làm gì tùy thích ... chỉ với 1 dòng code duy nhất cho Em nó

1603325891597.png
 
Upvote 0
Mạnh mới thử lấy dữ liệu trên 2 máy khác nhau ... 2 tay nháy 2 chuột liên tục chạy quá ok không ảnh hường tới hòa bình của thế giới

Như vậy 10 máy hay 100 máy + n trên thế giới có thể lấy dữ liệu qua IP của máy Mạnh OK hết ... nhanh hay chậm thì chỉ có phụ thuộc vào In tét nét mà thôi

Vì trên máy nào
Set Rst = Xnet.connect("192.168.1.9", 8181, SQL)
...
code xử lý abcdxyz ..... xong
...
Thì :
Rst.Close : Set Rst = Nothing

như mô tả trên thì cái việc đóng mở liên tục trở nên vô nghĩa với Xnet.connect

đơn giản cũng chỉ có thế .... cho dù ai nói ngang dọc thì đó là sự thật mặc định rùi he -0-0-0- -0-0-0- -0-0-0- -0-0-0- -0-0-0- -0-0-0-
 
Upvote 0
Mới thử vầy nó cũng Ok hết nè ... vậy là Ứng dụng nó quá tốt luôn

1/ Trên máy Server tại C:\Kieumanh\ ........... trong Foler KieuManh có 10 File khác nhau
2/ Từ máy Khách 1 chỉ cần khai báo C:\Kieumanh\Data1.accdb là lấy dữ liệu File đó
3/ Từ máy Khách 2 chỉ cần khai báo C:\Kieumanh\Data2.accdb là lấy dữ liệu File đó
.....
Như vậy Có 100 máy khách kết nối Cùng 1 lúc tới 100 file khác nhau luôn và chỉ chạy chung 1 Server duy nhất
-0-0-0- -0-0-0- -0-0-0-

Như vậy viết lại hàm như sau nó sẻ rất tuyệt vời
Mã:
Public Sub GetDatabase_VB6()
    Dim Rst As ADODB.Recordset
    Dim Xnet As New Network
    Dim SQL As String
    Dim FileName As String
    FileName = "Demo - Copy.mdb"
    Rem SQL = "select * from NhapXuatTon"
    SQL = "select * from DataBaseNhap"
    
    Set Rst = Xnet.ConnectDataName("192.168.1.9", 8181, FileName, SQL)
    Cells.ClearContents
    Range("A1").CopyFromRecordset Rst
    Rst.Close: Set Rst = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Rất đơn giản cũng chỉ có thế ... muốn lấy bao nhiêu file trên cùng 1 Server cũng ok hết ... viết thêm cái Hàm phụ ngoài là xong .... rất dễ chịu
Tùy biến code các kiểu theo người dùng khi mở kết nối tới Server
Mã:
Dim Rst As ADODB.Recordset
Dim Xnet As New Network
Dim Sql As String
Dim FileName As String
Rem ==========
Private Sub GetListDataNameServer(ListFiles(), ByVal Sql As String, ByVal Target As Range)
    Dim x As Long, FileName As String
    For x = 1 To UBound(ListFiles)
        FileName = ListFiles(x)
        Set Rst = Xnet.ConnectDataName("192.168.1.9", 8181, FileName, Sql)
        Target.End(3)(2).CopyFromRecordset Rst       
    Next
   Rst.Close: Set Rst = Nothing
End Sub
Rem ==========
Public Sub Main_GetConnection()
        Dim MyFile(1 To 5) As Variant
     
        MyFile(1) = "Database_1.mdb"
        MyFile(2) = "Database_2.mdb"
        MyFile(3) = "Database_3.mdb"
        MyFile(4) = "Database_4.mdb"
        MyFile(5) = "Database_5.mdb"
     
        Sql = "select top 10 * from DataBaseNhap"
     
        Cells.ClearContents
     
        Call GetListDataNameServer(MyFile(), Sql, [A65536])    
End Sub

Xin mời Xem Phim Demo

 
Lần chỉnh sửa cuối:
Upvote 0
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
giờ lấy dữ liệu qua Internet ... Kiểu Server Mở lên xong chọn file ... xong Client mở lên xong kết nối Tới Server .... Mạnh thấy chán rồi mất công mất việc lắm
Nếu Server ko mở lên thì Sao ??? = Tịt luôn chứ gì -0-0-0-

Mới phát hiện ra 1 phương pháp mới của tây nó làm Mạnh chỉ copy viết thêm theo ý mình chút à

Mô tả như Sau:
tai Máy A ( Tạm keo máy chủ )
1/ Tại C:\ Data\Data.accdb ===> ta để file Data.accdb ở đó

2/ Tại C:\ Data\Vblirary.dll ===> ta để file Vblirary.dll ở đó

3/ trong file Vblirary.dll ta viết hàm các kiểu vào đó xong nó kết nối tới File Data.accdb lấy dữ liệu + tính toán linh tinh xong trả kết quả lại cho Máy kết nối vvv

4/ Khi máy A mở lên thì từ máy B ta chạy code thông qua IP + Port kết nối tới File Mục số 2 là lấy được dữ liệu từ File Data.accdb ở máy A rồi đấy

Vậy là bỏ luôn cái cung đoạn mở Server lên rồi đó ... Chán lắm mà mất công mất việc ra ...


Còn kiểu trên thì trên chỉ cần máy A mở lên + điều kiện mục số 1 và 2 là ok rồi ... thì từ máy B muốn lấy ghi gì lên Data.accdb máy A tùy thích

5/ đại ý kiểu như mô tả bài số #114 linh sau

Code trên VB6 huyền thoại thôi ... đồ cổ nhưng với Mạnh viết 1 File duy nhất xài Cho Officex32 và Officex64 như nhau thôi
 
Lần chỉnh sửa cuối:
Upvote 0
hihih trên nguyên tắc nó là vậy chứ sao khác được, kể cả ông MS cũng vậy, chúng ta chỉ làm theo cái nguyên tắc đó thôi
 
Upvote 0
ai mà ngờ được trên 10 năm trước code vb6 người ta đã làm như bài số # 41 rồi mà giờ mình mới biết ................ lạc hậu kinh -0-0-0-
 
Upvote 0
===\. Cứ tìm hiểu đi còn nhiều cái kinh ngạc nữa, Tại sao....tại sao...., tại sao hồi đó người ta lại làm được như vậy, nhưng bây giờ nó lại đơn giản hơn xưa rất nhiều hihihihi
 
Upvote 0

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

Back
Top Bottom