Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Gửi message đóng ứng dụng tới end user
#1
Hi cả nhà. mình muốn tạo 1 tin nhắn tới người dùng để tắt ứng dụng phục vụ cho việc compact or repair. Mình có tìm trên diễn đàn nhưng không có nên muốn mở chủ đề này để cùng mọi người xây dựng. Nếu bạn nào đã làm đc thì chia sẻ giúp.
Chữ ký của tvn_hut Xin chào, mình là Dameaccess, Tham gia http://thuthuataccess.com/forum từ ngày 06-06 -13.
Reply
Những người đã cảm ơn
#2
(24-08-16, 10:56 PM)tvn_hut Đã viết: Hi cả nhà. mình muốn tạo 1 tin nhắn tới người dùng để tắt ứng dụng phục vụ cho việc compact or repair. Mình có tìm trên diễn đàn nhưng không có nên muốn mở chủ đề này để cùng mọi người xây dựng. Nếu bạn nào đã làm đc thì chia sẻ giúp.

Bạn này chả chịu tìm kiếm gì cả....
http://thuthuataccess.com/forum/thread-9450.html
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Noname
#3
Về việc gửi tin nhắn cho người dùng để thông báo thoát ứng dụng để bạn Compact & Repair thì cũng không khó.
1. Để compact thì bạn theo cách của bác pausteigel để cập ở trên.
2. Để gửi Message thì cách tôi làm như sau:
- Cách làm giống như việc mở form Login rồi cho chạy ngầm (ẩn đi) để lấy thông tin User, phân quyền cho các form mở sau này.
- Cho một form chạy ngầm ngay từ khi mở ứng dụng (file Front-end). Form này sẽ set Timer cứ 10s sẽ kiểm tra "Table thông báo" 1 lần xem có thông báo gì không, nếu có sẽ hiện pop up message cho nó. Bạn chỉ việc ngồi nhập thông báo vô table ở file back-end khi cần thì tất cả các file FE sẽ pop up thông báo.

Nói rõ hơn:
- Ở file BE bạn tạo 1 table. Ví dụ: tblCanhBaoRepair có 1 trường duy nhất [Activate] - dạng Yes/No. Mặc định sẽ là 0 (no). Khi cần thông báo, bạn click chọn nó (-1=yes). Bạn thêm 1 record với hiện trạng là: No
- Ở FE: 
+ Link table với tblCanhBaoRepair ở BE.
+ Bạn tạo 1 form không có control gì cả và kích thước nhỏ thôi. Vd: đặt tên form là frmCanhBao
+ Thuộc tính Time Interval=10.000. Sự kiện On Timer thì thêm code sau:
Mã PHP:
Private Sub Form_Timer()
 
   Dim rs As DAO.Recordset
   Set rs 
CurrentDb.OpenRecordset("SELECT tblCanhBaoRepair.* FROM tblCanhBaoRepair;"dbOpenSnapshot)
   If rs!Activate = -1 Then
       CanhBao
   End 
If
   rs.Close
End Sub 

+ Tạo 1 module và copy code của hàm "CanhBao":
Mã PHP:
Public Function CanhBao()
 
   Beep
   MsgBoxUni 
"B" ChrW(7841) & "n vui lòng thoát " ChrW(7913) & "ng d" ChrW(7909) & "ng trong vòng 1 phút " ChrW(273) & ChrW(7875) & " Admin c" ChrW(7853) & "p nh" ChrW(7853) & "t d" ChrW(7919) & " li" ChrW(7879) & "u kh" ChrW(7849) & "n! "vbCritical"C" ChrW(7843) & "nh báo!"
End Function 

+ Form frmCanhBao sẽ chạy ẩn.
Mã PHP:
DoCmd.OpenForm "frmCanhBao", , , , , acHidden 

Link file demo: http://www.mediafire.com/download/64r81e...EUsers.zip
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn caytregiavn77 , Minh Tiên , huuduy.duy , Noname , paulsteigel , tvn_hut
#4
(24-08-16, 11:38 PM)paulsteigel Đã viết:
(24-08-16, 10:56 PM)tvn_hut Đã viết: Hi cả nhà. mình muốn tạo 1 tin nhắn tới người dùng để tắt ứng dụng phục vụ cho việc compact or repair. Mình có tìm trên diễn đàn nhưng không có nên muốn mở chủ đề này để cùng mọi người xây dựng. Nếu bạn nào đã làm đc thì chia sẻ giúp.

Bạn này chả chịu tìm kiếm gì cả....
http://thuthuataccess.com/forum/thread-9450.html
Thank bạn. ý mình là thông báo tới enduser để chương trình  tự đóng. lúc đó admin có thể modify mọi thứ mà không sợ ảnh hưởng. Giống như thời gian bảo trì hệ thống đó
Chữ ký của tvn_hut Xin chào, mình là Dameaccess, Tham gia http://thuthuataccess.com/forum từ ngày 06-06 -13.
Reply
Những người đã cảm ơn
#5
Với câu hỏi của bạn thì vấn đề lại khác rồi...
Đặt vấn đề:::
Bạn có 1 CSDL dùng chung cho nhiều máy!
Yêu cầu:
+ Bạn muốn thực hiện Nén/Dọn CSDL này!
+ Ngắt các kết nối CSDL khi việc này được thực hiện...

Vậy sẽ khác, bạn phải làm rõ: Compact sẽ do ông có quyền Admin thực hiện tại máy chủ/ do phần mềm tại máy chủ hay do người dùng tiến hành tại ngay máy trạm?
Việc đưa ra thông báo như vậy sẽ không thể gửi trực tiếp thời gian thực cho các máy trạm được vì các ứng dụng ở máy trạm đâu có kết nối với nhau.

Cách giải quyết như thế này:
1. Trên cơ sở dữ liệu cần có 1 bảng với 1 bản ghi hẹn giờ compact và trước thời điểm compact đó, các ứng dụng ở máy trạm sẽ tự kết thúc phiên truy cập;
2. Các máy trạm phải đồng bộ giờ hoàn toàn.

Việc đó có thể mô tả như sau:
1. Ông Admin ghi vào bảng là 10:00 sẽ thực hiện Compact
2. Các phần mềm máy trạm cứ 1 phút lại kiểm tra cái thông tin này một lần, nếu thấy gần đến giờ compact rồi thì thông báo và thoát ứng dụng.
3. Cứ đúng 10h ông Admin sẽ thực hiện lệnh Compact.

Túm lại là bạn cứ mô tả các bước như vậy thì sẽ biết cách tìm công cụ để sử dụng
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn maidinhdan , Che_Guevara
#6
(25-08-16, 12:47 AM)ongke0711 Đã viết: Về việc gửi tin nhắn cho người dùng để thông báo thoát ứng dụng để bạn Compact & Repair thì cũng không khó.
1. Để compact thì bạn theo cách của bác pausteigel để cập ở trên.
2. Để gửi Message thì cách tôi làm như sau:
- Cách làm giống như việc mở form Login rồi cho chạy ngầm (ẩn đi) để lấy thông tin User, phân quyền cho các form mở sau này.
- Cho một form chạy ngầm ngay từ khi mở ứng dụng (file Front-end). Form này sẽ set Timer cứ 10s sẽ kiểm tra "Table thông báo" 1 lần xem có thông báo gì không, nếu có sẽ hiện pop up message cho nó. Bạn chỉ việc ngồi nhập thông báo vô table ở file back-end khi cần thì tất cả các file FE sẽ pop up thông báo.

Nói rõ hơn:
- Ở file BE bạn tạo 1 table. Ví dụ: tblCanhBaoRepair có 1 trường duy nhất [Activate] - dạng Yes/No. Mặc định sẽ là 0 (no). Khi cần thông báo, bạn click chọn nó (-1=yes). Bạn thêm 1 record với hiện trạng là: No
- Ở FE: 
+ Link table với tblCanhBaoRepair ở BE.
+ Bạn tạo 1 form không có control gì cả và kích thước nhỏ thôi. Vd: đặt tên form là frmCanhBao
+ Thuộc tính Time Interval=10.000. Sự kiện On Timer thì thêm code sau:
Mã PHP:
Private Sub Form_Timer()
   Dim rs As DAO.Recordset
   Set rs 
CurrentDb.OpenRecordset("SELECT tblCanhBaoRepair.* FROM tblCanhBaoRepair;"dbOpenSnapshot)
   If rs!Activate = -1 Then
       CanhBao
   End 
If
   rs.Close
End Sub 

+ Tạo 1 module và copy code của hàm "CanhBao":
Mã PHP:
Public Function CanhBao()
   Beep
   MsgBoxUni 
"B" ChrW(7841) & "n vui lòng thoát " ChrW(7913) & "ng d" ChrW(7909) & "ng trong vòng 1 phút " ChrW(273) & ChrW(7875) & " Admin c" ChrW(7853) & "p nh" ChrW(7853) & "t d" ChrW(7919) & " li" ChrW(7879) & "u kh" ChrW(7849) & "n! "vbCritical"C" ChrW(7843) & "nh báo!"
End Function 

+ Form frmCanhBao sẽ chạy ẩn.
Mã PHP:
DoCmd.OpenForm "frmCanhBao", , , , , acHidden 

Link file demo: http://www.mediafire.com/download/64r81e...EUsers.zip

Thank bạn rất nhiều. 1 băn khoăn của mình nếu enduser mở chương trình nhưng để máy lock off mà chưa tắt thì mình muốn chương trình sẽ tự tắt sau 1 phút hiện thông báo thì thêm điều kiện nào. Cái timer sẽ setting ra sao?
Chữ ký của tvn_hut Xin chào, mình là Dameaccess, Tham gia http://thuthuataccess.com/forum từ ngày 06-06 -13.
Reply
Những người đã cảm ơn
#7
tvn_hut Đã viết:Thank bạn rất nhiều. 1 băn khoăn của mình nếu enduser mở chương trình nhưng để máy lock off mà chưa tắt thì mình muốn chương trình sẽ tự tắt sau 1 phút hiện thông báo thì thêm điều kiện nào. Cái timer sẽ setting ra sao?

Cái này cũng không khó. Bạn vô trang của MS nó cũng có hướng dẫn cho bạn cách Logoff Users đang chạy ứng dụng FE. 
- Khi kích hoạt thông báo, sẽ bắt đầu điếm ngược đến khoảng thời gian bạn muốn đóng ứng dụng.
- Thông báo người dùng còn bao nhiêu phút nữa sẽ đóng. Thông báo này sẽ không sử dụng MsgBox mà dùng Form.
- Nếu họ không ở trên máy thì code cũng sẽ tự động đóng lần lượt các form đang mở rồi đến thoát ứng dụng.
Bạn nghiên cứu các hàm về tính thời gian như DateDiff() hoặc hàm API timeGetTime() của Win...để tính khoảng cách thời gian (Elapsed Time), cách sử dụng Timer...
Ngay mai rảnh tôi sẽ làm demo cho bạn.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tvn_hut
#8
Trường hợp tự động đóng ứng dụng cũng thiết kế tương tự. Gồm:
- 1 Form chạy ngầm có chạy Timer để check Adim có đặt lệnh Activate hay không. Trong vd này tôi đặt Time Interval: 60000 (=1phút) và sử dụng Main form luôn chứ không cho Ẩn form.
- 1 Form thay thế Msgbox làm nhiệm vụ thông báo. Tại sao không dùng Msgbox của Access cho nhanh? Vì nếu sử dụng Msgbox, nó sẽ chờ hành động Click của người dùng, nếu không click chọn OK (hay Yes) thì Msgbox sẽ treo ở đó và Access sẽ không xử lý tiếp các dòng code kế tiếp (không đếm ngược tiếp -> không đóng ứng dụng).

Link file demo: http://www.mediafire.com/download/yj68fh...35/FSD.rar
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tvn_hut
#9
(27-08-16, 11:02 PM)ongke0711 Đã viết: Trường hợp tự động đóng ứng dụng cũng thiết kế tương tự. Gồm:
- 1 Form chạy ngầm có chạy Timer để check Adim có đặt lệnh Activate hay không. Trong vd này tôi đặt Time Interval: 60000 (=1phút) và sử dụng Main form luôn chứ không cho Ẩn form.
- 1 Form thay thế Msgbox làm nhiệm vụ thông báo. Tại sao không dùng Msgbox của Access cho nhanh? Vì nếu sử dụng Msgbox, nó sẽ chờ hành động Click của người dùng, nếu không click chọn OK (hay Yes) thì Msgbox sẽ treo ở đó và Access sẽ không xử lý tiếp các dòng code kế tiếp (không đếm ngược tiếp -> không đóng ứng dụng).

Link file demo: http://www.mediafire.com/download/yj68fh...35/FSD.rar

Hi bạn. khi mình load về kiểm tra, mình thấy massage không tự động hiện lên sau khi chọn active tại tblcanhbaorepair. Chương trình không tự đóng mà chỉ khi mở mainform và click Ok mới đóng. bạn kiểm tra giúp nhé, thank in advance
Chữ ký của tvn_hut Xin chào, mình là Dameaccess, Tham gia http://thuthuataccess.com/forum từ ngày 06-06 -13.
Reply
Những người đã cảm ơn
#10
(27-08-16, 11:34 PM)tvn_hut Đã viết: ....

Hi bạn. khi mình load về kiểm tra, mình thấy massage không tự động hiện lên sau khi chọn active tại tblcanhbaorepair. Chương trình không tự đóng mà chỉ khi mở mainform và click Ok mới đóng. bạn kiểm tra giúp nhé, thank in advance

Bạn có thể sửa một chút đoạn code trong form timer thành
Mã:
HienFormCanhBao:
        DoCmd.OpenForm "frmCanhBao", acNormal, , , , acWindowNormal ' Mở ở chế độ thông thường và thực hiện ngay lệnh tiếp theo
        Forms!frmCanhBao!txtPhut = intDemNguocPhut
        Me.Visible = False ' giấu form_main

Khi chạy bạn cần Link lại table vì bảng của bạn không còn ở vị trí cũ nên nó không chạy nữa!
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn tvn_hut , ongke0711


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Sựa khác nhau giữa Module và Class Module, phạm vi áp dụng của từng loại. MinhnHang 6 299 29-11-16, 09:11 PM
Bài mới nhất: ongke0711
  [Hỏi] Viết code có điều kiện " lệnh Chạy tiếp khi đóng tbl cho sẵn" Trần Linh 3 138 21-10-16, 11:11 AM
Bài mới nhất: Minh Tiên
  Viết phần quyền sử dụng tt1212 9 491 01-10-16, 12:26 AM
Bài mới nhất: maidinhdan
  Sử dụng Class Module và Kết nối dữ liệu SQL SERVER trong Access VBA lehongduc 42 17,024 12-06-16, 12:28 PM
Bài mới nhất: lehongduc
  [Hỏi] Sử dụng ngày trong truy vấn qua VBA tại sao không đúng? luonguct 5 321 09-06-16, 06:24 PM
Bài mới nhất: maidinhdan

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ