maidinhdan > 09-03-20, 11:45 AM
Function TestBatchUpdate()
Dim i As Integer 'Tạo biến đếm
Dim a, b, c As String
Dim rs As New ADODB.Recordset
rs.CursorLocation = adUseServer 'Tham số adUseServer: Kết nối kiểu con trỏ ở phía Server: Tức là kết nối liên tục
rs.Open "tblTest", CurrentProject.AccessConnection, adOpenStatic, adLockBatchOptimistic, adCmdTableDirect
a = "Tien trinh 1: " & Time 'Dòng này để đếm thời gian thực hiện đoạn lệnh: Bắt đầu tính thời gian
' Duyệt để thêm mới vào table tblTest 5000 mẫu tin cột [b]<=> rs.Fields(1) ; Cột [A] là AutoNumber
For i = 1 To 5000
rs.AddNew 'Ra lệnh thêm
rs.Fields(1) = i 'Thêm vào cột [b]tức là cột thứ 2 với nội dụng từ 1 đến 5000 cứ thế lặp lại
Next i
b = "Tien trinh 2: " & Time 'Dòng này để đếm thời gian thực hiện đoạn lệnh: Thời gian sau khi cập nhật 5000 mẫu tin
' Câu hỏi xác nhận cập nhập 5000 mẫu tin trên:
If MsgBox("Bạn có muốn lưu 5000 mẫu tin trên không?", vbYesNo) = vbYes Then
rs.UpdateBatch 'Chấp nhận cập nhật
c = "Tien trinh 1: " & Time 'Dòng này để đếm thời gian thực hiện đoạn lệnh: Tính thời gian kết thúc cập nhật 5000 mẫu tin
MsgBox "Thoi gian UpdateBatch:" & vbCrLf & a & vbCrLf & b & vbCrLf & c
Else
rs.CancelBatch ' Hủy bỏ cập nhật
End If
' Đóng Recordset và giải phóng bộ nhớ
rs.Close
Set rs = Nothing
End Function
Function TestBatchUpdateSua()
Dim i As Integer
Dim a, b, c As String
Dim rs As New ADODB.Recordset
rs.CursorLocation = adUseServer
rs.Open "tblTest", CurrentProject.AccessConnection, _
adOpenStatic, adLockBatchOptimistic, adCmdTableDirect
a = "Tien trinh 1: " & Time 'Dong nay de dem thoi gian thuc hien doan lenh: Bat dau tinh thoi gian
rs.MoveFirst
Do Until rs.EOF
rs.Fields(1) = "Sua" & rs.Fields(0)
rs.MoveNext
Loop
b = "Tien trinh 2: " & Time 'Dong nay de dem thoi gian thuc hien doan lenh: Thoi gian sau khi cap nhat 5000 mau tin
' Cau hoi xac nhan cap nhap 5000 mau tin tren:
If MsgBox("Ban co muon luu 5000 mau tin tren khong?", vbYesNo) = vbYes Then
rs.UpdateBatch 'Chap nhan cap nhat
c = "Tien trinh 1: " & Time
MsgBox "Thoi gian UpdateBatch:" & vbCrLf & a & vbCrLf & b & vbCrLf & c 'Dong nay de dem thoi gian thuc hien doan lenh: Tinh thoi gian ket thuc cap nhat 5000 mau tin
Else
rs.CancelBatch ' Huy bo cap nhat
End If
' Dong Recordset va giai phong bo nho
rs.Close
Set rs = Nothing
End Function
thuyyeu99 > 09-03-20, 02:02 PM
ongke0711 > 09-03-20, 03:14 PM
(09-03-20, 11:45 AM)maidinhdan Đã viết: [Demo thứ nhất] Hướng dẫn sử dụng phương thức UpdateBatch của ADO
Mục đích:
1. Thêm hoặc sửa đổi nhiều mẩu tin cùng lúc.
2. Nếu có lỗi khi kết nối với máy chủ (Database là: SQL Server/Access/Excel....) dữ liệu sẽ khôi phục trạng thái ban đầu như chưa thêm hoặc sửa.
3. Duyệt và lầy dữ liệu từ máy chủ về máy con và ngược lại
4. Thích hợp sử dụng trong mạng LAN(Local) hoặc qua Internet(Public)
thuyyeu99 > 09-03-20, 04:55 PM
(09-03-20, 03:14 PM)ongke0711 Đã viết:Em đang mò cái dụ sử dụng MySQL cho Excel đây. hình như có người kết nối được rồi đó anh(09-03-20, 11:45 AM)maidinhdan Đã viết: [Demo thứ nhất] Hướng dẫn sử dụng phương thức UpdateBatch của ADO
Mục đích:
1. Thêm hoặc sửa đổi nhiều mẩu tin cùng lúc.
2. Nếu có lỗi khi kết nối với máy chủ (Database là: SQL Server/Access/Excel....) dữ liệu sẽ khôi phục trạng thái ban đầu như chưa thêm hoặc sửa.
3. Duyệt và lầy dữ liệu từ máy chủ về máy con và ngược lại
4. Thích hợp sử dụng trong mạng LAN(Local) hoặc qua Internet(Public)
ADO UpdateBatch rất hay chỉ có cái nhược điểm là tốc độ xử lý chậm. Cái này chắc là do bộ máy JET Engine của Access nó chỉ tối ưu tới đó. Nếu có bạn nào viết trên VB.Net test thử tốc độ UpdateBatch xem thử có nhanh hơn không.
Hiện tại tôi test kết nối với SQL Server luôn cũng mất khoảng 5s cho 5000 dòng như demo của maidinhdan. Dùng AddNew ở đây nhanh hơn dùng "Insert Into...".
Do vậy nếu chỉ dùng cùng CSDL Access và trong LAN thì dùng DAO cho nhanh (dĩ nhiên là không xài được phương thức UpdateBatch ).
maidinhdan > 09-03-20, 05:39 PM
(09-03-20, 04:55 PM)thuyyeu99 Đã viết: Em đang mò cái dụ sử dụng MySQL cho Excel đây. hình như có người kết nối được rồi đó anh
thuyyeu99 > 09-03-20, 11:16 PM
maidinhdan > 10-03-20, 02:39 AM
(09-03-20, 11:16 PM)thuyyeu99 Đã viết: Tuy nhiên tới giờ này vẫn dậm chân tại chỗ do em yếu cái phần thiết kế database và phần tạo giao diện chương trình nhìn nó lúa lúa không có chỉn chu bắt mắt như các anh các bạn trên diễn đàn.
Nay em gợi ý của anh em thấy cũng hợp lý áh chắc em tập tành mò lại qué hihihih .
thuyyeu99 > 10-03-20, 10:59 AM
(10-03-20, 02:39 AM)maidinhdan Đã viết: Để biết và chia sẽ kinh nghiệm nhiều hơn, nếu được thì giới thiệu về bạn nhất là nghề nghiệp. Ở trên đây, có nhiều cao thủ kinh nghiệm trên 40, 50 năm cũng có ( ông nào có username tên in Đậm+ Màu sắc đó => càng đậm công lực càng cao ) có anh lớn hơn mình 2-3 con giáp.Em đã từng làm nhân viên, giáo viên giờ hiện tại đang ở nhà chuẩn bị đi làm công nhân hihi.
(10-03-20, 02:39 AM)maidinhdan Đã viết: Học tập và xây dựng ứng dụng không khó, cái khó là hay mất phương hướng và giảm sút nghị lực theo thời gian...theo đuổi cái mà ta ấp ủ. Trở ngại rồi lại bỏ lại. Và không ngoảnh lại mà đi luôn....Thời nay em nghĩ công nghệ thông tin phát triển nên em thấy đa số phần mềm nghành nghề nào cũng có (chỉ khác nhau cách quản lý). Riêng cái Client Sever (không phải SQL....) em tìm hiểu thì thấy người ta viết nhiều ứng dụng vô công việc lắm, mà em không biết công việc cụ thể thôi (hình như làm cho công ty hay sao ý không thấy Share trên mạng).
Thôi cũng khuya chắc có 1 điều nhắn nhủ để sau này trao đổi tiếp:
* Trước khi muốn viết phần mềm hay ứng dụng hãy suy nghĩ 3 việc sau:
1. Ứng dụng ta viết đã có ai viết chưa?
--> Nếu chưa. hãy tự hỏi ? Nó thật sự cần thiết không?
--> Nếu có. hãy hỏi? Những gì ta sắp viết có hay hơn cái cũ không?
2. Có bao nhiêu người và đối tượng sẽ thụ hưởng từ nó?
3. Tác động của nó đến năng suất lao động được bao nhiêu?
(10-03-20, 02:39 AM)maidinhdan Đã viết: (Chưa nghĩ đến chuyện code sạch{}, code bẫn{một class/modules nhét vào một chỗ như cái nhà kho có thứ gì vứt tứ lung tung trong đó, đặt tên biến, tên hàm theo ý thích, không một chữ chú thích...rồi một ngày kia khi nắng đã tắt, bầu trời ảm đạm thì })Code em thì rất sạch không có x, chỉ hơi lung tung, không chú thích thôi (đâu phải chuyên nghiệp, được học hành bài bản hichic ).
(10-03-20, 02:39 AM)maidinhdan Đã viết: P/s: Một ngày nọ tôi nhận ra rằng, núi cao thì có núi cao hơn nên code không bao giờ dấu giếm.....rồi dần dần bạn sẽ hiểu. đôi khi code bạn đi sẽ có người phát hiện chỗ hay/dở để code lại cho mình.Cái này em biết chứ anh. Em thấy kiến thức em thua xa mọi người trên đây, về văn vẻ, kiến thức xã hội, kiến thức lập trình (em chỉ được 1 cái là cần cù bù thông minh ). 1 đoạn code có thể các anh nhìn sơ qua các anh viết chắc chưa tới 1 tiếng mà đối với em có khi cả mấy ngày thậm chí mấy tuần chưa kể Code lượm thượm nữa. Đa số các bài các anh đưa lên nó nằm ngoài kiến thức của em, nên em đâu biết gì về nó để tham gia trao đổi, nên có nhiều câu hỏi nó hơi sai sai gì đó hihihi (giống như kiếm hiệp người ta hay có cái câu là Lượm được bí kíp ấy, đa số những người không biết gì hay luyện được Tuyệt kỷ lắm như anh Ongke nói em luyện thành tuyệt kỷ Ám Nhiên Tiêu Hồn Chưởng kkkk )
Xuân Thanh > 10-03-20, 11:33 AM
(10-03-20, 10:59 AM)thuyyeu99 Đã viết: Mà hình như đa số các anh làm trong nghành Giáo dục phải không?. Em thấy cách nói chuyện, trình bày logic, chỉn chu quá.
ongke0711 > 10-03-20, 05:05 PM
(09-03-20, 11:16 PM)thuyyeu99 Đã viết: Từ SQL sever em mới nghĩ nếu không cài SQL Sever có sài được không ta rồi mò từ từ mò tới cái chương trình chia sẻ file qua mạng Internet mà không cần phải cài SQL server hay Access, miễn sao có Database để nó lưu dữ liệu.
Tuy nhiên tới giờ này vẫn dậm chân tại chỗ do em yếu cái phần thiết kế database và phần tạo giao diện chương trình nhìn nó lúa lúa không có chỉn chu bắt mắt như các anh các bạn trên diễn đàn.