Help: Hiển thị thông báo số phiếu sau khi cập nhật dữ liệu thành công

  • Thread starter tungnt_dk
  • Ngày gửi
T

tungnt_dk

Guest
8/5/15
9
0
1
39
Em có 1 Form nhập dữ liệu cho bảng TTBH
Em muốn sau khi thêm mới thành công sẽ hiển thị thông báo: "Cap nhat thanh cong so phieu: * "
Trong đó * là số phiếu vừa cập nhật thành công vào bảng dữ liệu
Lưu ý: trường số phiếu trong bảng TTBH là: Autonumber
Mong các anh, chị giúp đỡ.

Đây là file access em đang làm: http://www.mediafire.com/download/a6pzv71gjo9lo0x/TTBH.accdb

Em cám ơn!
 
Khóa học Quản trị dòng tiền
O

ongke0711

Sơ cấp
11/7/07
43
16
8
50
HCM
ví dụ:
- Field Số phiếu trong form đặt tên là [txtSoPhieu]
- Nút lưu record vừa nhập đặt tên là [cmdSave]

Private sub cmdSave_Click

Msgbox " Đã cập nhật thành công số phiếu: " & Me.txtSoPhieu , vbInformation, "Thông báo"

End sub
 
T

tungnt_dk

Guest
8/5/15
9
0
1
39
ví dụ:
- Field Số phiếu trong form đặt tên là [txtSoPhieu]
- Nút lưu record vừa nhập đặt tên là [cmdSave]

Private sub cmdSave_Click

Msgbox " Đã cập nhật thành công số phiếu: " & Me.txtSoPhieu , vbInformation, "Thông báo"

End sub

Anh ơi, trường số phiếu của em có kiểu: Autonumber nên không nhập dữ liệu vào đó được.
Anh xem lại hộ em nhé!
 
O

ongke0711

Sơ cấp
11/7/07
43
16
8
50
HCM
Cái hàm Msgbox này chỉ lấy tham số từ trường số phiếu thôi chứ có nhập liệu gì đâu.
 
T

tungnt_dk

Guest
8/5/15
9
0
1
39
Em chưa hiểu ý bác.
Nếu em để Control source của Field số phiếu trong Form AddNew là SOPHIEUBH và name là [txtSoPhieu] thì khi mở Form Addnew sẽ hiển thị số phiếu của bản ghi đầu tiên trong bảng (đây không phải số phiếu của bản ghi mới vừa được thêm vào bảng)
Nếu không để Control Source cho Field số phiếu thì lúc mở Form AddNew ô số phiếu chỉ là ô text trắng. Như vậy cũng không đúng.
Ý em là em muốn sau khi cập nhật thành công thì sẽ hiển thị thông báo số phiếu của bản ghi vừa thêm vào bảng ạ.

Bác xem thử file access của em sẽ rõ hơn, mong bác tiếp tục giúp đỡ em!
http://www.mediafire.com/download/381tlc12iz87yi2/TTBH.accdb
 
O

ongke0711

Sơ cấp
11/7/07
43
16
8
50
HCM
Có mấy điểm trong thiết kế form nhập liệu, em chú ý:
- Nếu sử dụng Unbound form để cập nhật dữ liệu thì tất cả là Unbound textbox.
- Nên khai báo DAO.Database, và DAO.Recorset để sau này khi split database (chia ra file .mdb lưu dữ liệu riêng, file mdb chương trình chạy riêng) dùng linked table vẫn chạy được.

Chỉnh sửa code chút xíu

Private Sub cmdThem_Click()

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("TTBH", dbOpenDynaset)

rs.AddNew
rs(1) = NGAYTIEPNHANTT
rs(2) = SANPHAM
rs(3) = IMEI
rs(4) = LOI
rs(5) = KETQUABH

rs.Update

MsgBox "Cap nhat thanh cong so phieu: " & Me.txtSoPhieuBH, vbInformation, "Thông báo"

End Sub

-----------------------------------------------
Private Sub Form_Current()

'Khi form load sẽ cập nhật số phiếu kế tiếp
Me.txtSoPhieuBH = DMax("SOPHIEUBH", "TTBH") + 1

End Sub
 

Đính kèm

  • TTBH-2.accdb.zip
    45 KB · Lượt xem: 90
T

tungnt_dk

Guest
8/5/15
9
0
1
39
Có mấy điểm trong thiết kế form nhập liệu, em chú ý:
- Nếu sử dụng Unbound form để cập nhật dữ liệu thì tất cả là Unbound textbox.
- Nên khai báo DAO.Database, và DAO.Recorset để sau này khi split database (chia ra file .mdb lưu dữ liệu riêng, file mdb chương trình chạy riêng) dùng linked table vẫn chạy được.

Chỉnh sửa code chút xíu

Private Sub cmdThem_Click()

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("TTBH", dbOpenDynaset)

rs.AddNew
rs(1) = NGAYTIEPNHANTT
rs(2) = SANPHAM
rs(3) = IMEI
rs(4) = LOI
rs(5) = KETQUABH

rs.Update

MsgBox "Cap nhat thanh cong so phieu: " & Me.txtSoPhieuBH, vbInformation, "Thông báo"

End Sub

-----------------------------------------------
Private Sub Form_Current()

'Khi form load sẽ cập nhật số phiếu kế tiếp
Me.txtSoPhieuBH = DMax("SOPHIEUBH", "TTBH") + 1

End Sub

Em đã làm theo hướng dẫn của anh và đã cho kết quả đúng khi cùng 1 thời điểm chỉ có 1 người nhập liệu vào database.
Nếu cùng 1 thời điểm có 2 người trở lên cùng mở form nhập nhiệu thì form sẽ hiển thị cùng 1 số phiếu, khi cập nhật thành công cũng sẽ báo cùng 1 số phiếu.
Thực tế khi mở bảng thì ai bấm cập nhật trước sẽ đúng số phiếu thông báo, ai bấm sau thì số phiếu đúng là số phiếu thông báo +1.
Hướng dẫn của anh là cho hiển thị trước số phiếu kế tiếp của số mới nhất trong bảng.
Em nghĩ mình cần phải lấy dữ liệu số phiếu sau khi đã cập nhật thành công vào bảng để hiển thị thông báo thì mới giải quyết được vấn đề khi có nhiều người nhập dữ liệu cùng 1 thời điểm.
Nhưng lại không biết code như thế nào cho đúng.
Nếu anh có giải pháp nào tối ưu hơn thì tư vấn thêm cho em nhé.
Cám ơn anh đã nhiệt tình giúp đỡ!
 
O

ongke0711

Sơ cấp
11/7/07
43
16
8
50
HCM
Nếu cùng nhập dữ liệu qua mạng LAN thì set phân quyền cho User nào chỉ được nhập phần nào thôi cho khỏi đụng hoặc set Record Lock của form là Edited record để sẽ hiện thông báo khi đang có người đang cập nhật cái form đó, chỉ để 1 người sử dụng thôi.
 
  • Like
Reactions: tungnt_dk
T

tungnt_dk

Guest
8/5/15
9
0
1
39
Nếu cùng nhập dữ liệu qua mạng LAN thì set phân quyền cho User nào chỉ được nhập phần nào thôi cho khỏi đụng hoặc set Record Lock của form là Edited record để sẽ hiện thông báo khi đang có người đang cập nhật cái form đó, chỉ để 1 người sử dụng thôi.
Cám ơn anh đã nhiệt tình giúp đỡ.
Em sẽ nghiên cứu giải pháp mà anh tư vấn để áp dụng vào chương trình của mình!
 

Xem nhiều