mrsiro > 04-06-18, 03:23 PM
MTNQ > 04-06-18, 11:00 PM
(04-06-18, 03:23 PM)mrsiro Đã viết: Hiện tại trong demo thì subform chỉ có 2 textbox, nhưng nếu subform có quá nhiều textbox thì tại event click của từng textbox đều phải cấu hình Me.Parent.sRequery. Có cách nào đơn giản vấn đề này ko MTNQ.
Trích dẫn:...bỏ hết các sự kiện của txtID_Click và txtHoTen_Click đi, chỉ cần code cho sự kiện Form_Current (của subform) thui:
(04-06-18, 03:23 PM)mrsiro Đã viết: Với lại recordsourec của main form có trường id là theo subform, vì thế dùng lệnh requery parent để mainform thay đổi theo subform. Nhưng mình muốn là recordsource của mainform vẫn là toàn bộ record, khi click vào subform thì gọi findrec để mainform nhảy đến record tương ứng chứ không cần phải requery mainform (bởi vì mình nghỉ nếu cứ requery hoài như thế có thể tốn hiệu năng của phần mềm, cứ load sẵn toàn bộ record, rồi nhảy đến record cần nhảy thôi), nếu vậy thì làm thế nào bạn.
mrsiro > 04-06-18, 11:50 PM
MTNQ > 05-06-18, 12:17 AM
MTNQ > 05-06-18, 12:57 AM
(04-06-18, 11:50 PM)mrsiro Đã viết: Đúng rồi, 2007 có cách split form, mình cũng có biết, có điều 2003 ko có bạn à. Bạn có cách làm tương tự cho 2003 thì giúp mình nha. Dữ liệu giữa main và subform là giống nhau nha, sub bao nhiêu record thì main cũng từng ấy record tương ứng.
Set Me.frmDanhSach_sub.Form.Recordset = Me.Recordset
mrsiro > 05-06-18, 10:32 AM
MTNQ > 05-06-18, 05:06 PM
Private Sub Command12_Click()
Me.Requery
Set Me.frmDanhSach_sub.Form.Recordset = Me.Recordset
End Sub
mrsiro > 07-06-18, 09:04 AM
(05-06-18, 05:06 PM)MTNQ Đã viết: Bạn sửa code của cmd lại như sau:
Mã:Private Sub Command12_Click()
Me.Requery
Set Me.frmDanhSach_sub.Form.Recordset = Me.Recordset
End Sub
MTNQ > 07-06-18, 11:39 AM
mrsiro > 07-06-18, 03:01 PM
(07-06-18, 11:39 AM)MTNQ Đã viết: Nếu viết được Unbound thì quá tốt rồiCode đây, sử dụng oldvalue với newvalue của screen.active
Cái vụ "ghi nhật kí chỉnh sửa" thì bạn phải đưa file mẫu hoặc cái hàm đó lên đây mình mới "có ý tưởng" được
Public Function WriteChanges()
Dim frm As Form
Dim ctl As Control
Dim frmname As String, user As String, sql As String, changes As String
Dim db As DAO.Database
Dim fdate As String
Dim ftime As String
Dim fcomputer As String
Set frm = Screen.ActiveForm
Set db = CurrentDb
frmname = Screen.ActiveForm.Name
user = Application.CurrentUser
fdate = Format(Date, "dd/mm/yyyy")
ftime = Format(Time, "hh:mm:ss")
fcomputer = Environ("computername")
changes = ""
sql = "INSERT INTO log " & _
"(NgayCapNhat,FormCapNhat,NguoiCapNhat,maycapnhat,noidung) " & _
"VALUES ('" & fdate & " " & ftime & "','" & frmname & "', '" & user & "', '" & fcomputer & "', "
For Each ctl In frm.Controls
Select Case ctl.ControlType
Case acTextBox, acComboBox, acListBox, acOptionGroup
If IsNull(ctl.OldValue) And Not IsNull(ctl.value) Then
changes = changes & _
ctl.Name & "--" & "BLANK" & "--" & ctl.value & _
" // "
ElseIf IsNull(ctl.value) And Not IsNull(ctl.OldValue) Then
changes = changes & _
ctl.Name & "--" & ctl.OldValue & "--" & "BLANK" & _
" // "
ElseIf ctl.value <> ctl.OldValue Then
changes = changes & _
ctl.Name & ": " & ctl.OldValue & "--> " & ctl.value & _
" // "
End If
End Select
Next ctl
sql = sql & "'(" & frm.txtid & ")" & "___" & changes & "');"
db.Execute sql, dbFailOnError
Set frm = Nothing
Set db = Nothing
End Function