Cmd Next record (6 người xem)

  • Thread starter Thread starter hoaipnb
  • Ngày gửi Ngày gửi
Liên hệ QC

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

hoaipnb

Thành viên mới
Tham gia
19/12/09
Bài viết
27
Được thích
1
Thường là sau khi tới record cuối cùng nếu ta vẫn tiếp tục ân cmd next record thì chương trình sẽ tự động mở 1 new record. Mình muốn khi tới record cuối cùng thì cmd đó ở trạng thái disable hoặc hiện một msg thông báo, tóm lại là ko mở sang đc record mới.
Làm ơn hướng dẫn dùm mình
Thanks
 
Thường là sau khi tới record cuối cùng nếu ta vẫn tiếp tục ân cmd next record thì chương trình sẽ tự động mở 1 new record. Mình muốn khi tới record cuối cùng thì cmd đó ở trạng thái disable hoặc hiện một msg thông báo, tóm lại là ko mở sang đc record mới.
Làm ơn hướng dẫn dùm mình
Thanks

Bạn thử code sau cho nút next:

Mã:
Private Sub cmdNext_Click()
    If CurrentRecord > RecordsetClone.RecordCount Then
        MsgBox "Khong the di chuyen duoc nua"
        cmdNext.Enabled = False
    
        Exit Sub
    Else
        DoCmd.GoToRecord , , acNext
        cmdNext.Enabled = True
    End If
    
End Sub

Code sau cho record hiện hành, nếu số record hiện hành lớn hơn tổng số record thì chạy code

Mã:
Private Sub Form_Current()
    If CurrentRecord < RecordsetClone.RecordCount Then
        cmdNext.Enabled = True
    End If
End Sub
 
Cám ơn bạn đã giúp đỡ, mình làm theo cách trên nhưng k thấy khả thi, nghĩa là vẫn mở thêm 1 record mới, sau khi click tiếp mới hiện ra thông báo
 
Cám ơn bạn đã giúp đỡ, mình làm theo cách trên nhưng k thấy khả thi, nghĩa là vẫn mở thêm 1 record mới, sau khi click tiếp mới hiện ra thông báo
Thì bạn tùy biến mà chỉnh sửa và sử dụng theo ý muốn của mình, nếu bạn muốn thế thì thay cái dấu > thành >= là được.
 
Mình làm được rồi, cám ơn bạn nhiều lắm, mình ko rành về lập trình lắm nên chỉ biết làm theo kiểu amateur thôi.
Tiện đây mình hỏi luôn,mình muốn set defaul record duy nhất mà mình nhập vào thì dùng code gì vậy bạn ????, hiện tại mỗi lần muốn thay đổi mình lại phải chỉnh sửa = cách đánh tên vào defaul value
 
Mình làm được rồi, cám ơn bạn nhiều lắm, mình ko rành về lập trình lắm nên chỉ biết làm theo kiểu amateur thôi.
Tiện đây mình hỏi luôn,mình muốn set defaul record duy nhất mà mình nhập vào thì dùng code gì vậy bạn ????, hiện tại mỗi lần muốn thay đổi mình lại phải chỉnh sửa = cách đánh tên vào defaul value
Chưa hiểu hết ý của bạn, có phải ý của bạn là đánh dấu cái record nào đó bạn muốn để khi thêm cái record mới thì nó tự thêm vào ?
 
ko phải bạn ah, chắc tại mình ko rành nên diễn đạt hơi khó hiểu và dùng từ ko chính xác.
Ý mình là ntn, mình muốn tạo 1 form trong đó có 1 combo box chứa các tên nhân viên , mình muốn tạo 1 cmd button để khi click vào đó thì ct sẽ chọn tên ng mình chọn làm mặc định. nếu add thêm record mới thì mặc định sẽ là tên ng mình chọn.
Không bít có dễ hỉu hơn chút nào ko :p
 
ko phải bạn ah, chắc tại mình ko rành nên diễn đạt hơi khó hiểu và dùng từ ko chính xác.
Ý mình là ntn, mình muốn tạo 1 form trong đó có 1 combo box chứa các tên nhân viên , mình muốn tạo 1 cmd button để khi click vào đó thì ct sẽ chọn tên ng mình chọn làm mặc định. nếu add thêm record mới thì mặc định sẽ là tên ng mình chọn.
Không bít có dễ hỉu hơn chút nào ko :p
Chép code sau vào module:

Mã:
Option Compare Database
Option Explicit

Public Function acbCarry(frm As Form, ctl As Control)
    Dim ctlData As Control
    Const acbcQuote = """"
    Set ctlData = frm(ctl.Tag)
        ctlData.DefaultValue = _
         acbcQuote & ctl.Value & acbcQuote
         
End Function

Trên Combo (Ví dụ Combo1)

- Tag: Tên Texbox cần set default.
- Sự kiện After Update: =acbCarry([Form],[Combo1])

Chúc bạn thành công.
Thân
 
Bạn thử code sau cho nút next:

Mã:
Private Sub cmdNext_Click()
    If CurrentRecord > RecordsetClone.RecordCount Then
        MsgBox "Khong the di chuyen duoc nua"
        cmdNext.Enabled = False
    
        Exit Sub
    Else
        DoCmd.GoToRecord , , acNext
        cmdNext.Enabled = True
    End If
    
End Sub

Code sau cho record hiện hành, nếu số record hiện hành lớn hơn tổng số record thì chạy code

Mã:
Private Sub Form_Current()
    If CurrentRecord < RecordsetClone.RecordCount Then
        cmdNext.Enabled = True
    End If
End Sub
Tương tự như trường hợp trên nhưng là thanh cuộn trên chuột thì thêm code ntn vậy bạn, vì phím cuộn trên chuột cũng có tác dụng như 2 cmd next và last
 
Tương tự như trường hợp trên nhưng là thanh cuộn trên chuột thì thêm code ntn vậy bạn, vì phím cuộn trên chuột cũng có tác dụng như 2 cmd next và last
Thì cũng thế thôi, thêm cái Else vào current form là được

Mã:
Private Sub Form_Current()
    If CurrentRecord < RecordsetClone.RecordCount Then
        cmdNext.Enabled = True
      Else
        cmdNext.Enabled = False
    End If
End Sub
 
Bạn ko vào ym bao h hả, mấy lấy pm k thấy bạn nói gì, mình muốn trao đổi với bạn qua ym có đc không ??
 
ùa vậy để mình tìm thêm trong đây và khúc mắc gì mình sẽ post lên đây hỏi bạn vậy.
Ct của mình cơ bản thì đã hoàn thành, h mình muốn fix 1 số lỗi hay mắc phải và thêm 1 số tiện ích cho user dễ sử dụng thôi
 
Chép code sau vào module:

Mã:
Option Compare Database
Option Explicit

Public Function acbCarry(frm As Form, ctl As Control)
    Dim ctlData As Control
    Const acbcQuote = """"
    Set ctlData = frm(ctl.Tag)
        ctlData.DefaultValue = _
         acbcQuote & ctl.Value & acbcQuote
         
End Function

Trên Combo (Ví dụ Combo1)

- Tag: Tên Texbox cần set default.
- Sự kiện After Update: =acbCarry([Form],[Combo1])

Chúc bạn thành công.
Thân
Chào bạn
Mình đã làm theo cách bạn hướng dẫn nhưng ko thành công
Bạn có thể giúp mình 1 cái demo đc ko
Thanks bạn nhiều
 

File đính kèm

Cám ơn bạn nhưng chương trình mình dự định làm giống như mẫu dưới.

- Cụ thể là khi vào form SET chọn MaCN và click vào cm set default thì khi add new record ở form PGD thì combo box MaCn trên form PGD sẽ có giá trị giống như ta đã chọn ở form Set
 

File đính kèm

Cám ơn bạn nhưng chương trình mình dự định làm giống như mẫu dưới.

- Cụ thể là khi vào form SET chọn MaCN và click vào cm set default thì khi add new record ở form PGD thì combo box MaCn trên form PGD sẽ có giá trị giống như ta đã chọn ở form Set

Khai báo biến sau vào module

Mã:
Public str As String

Code trong form Set

Mã:
Private Sub Command3_Click()
str = txtMaCN
End Sub

Private Sub Form_Load()
str = ""

End Sub

Thêm 1 dòng vào sự kiện click của nút thêm mới

Mã:
Private Sub Command6_Click()
On Error GoTo Err_Command6_Click


    DoCmd.GoToRecord , , acNewRec
    [B][COLOR=#0000cd]MaCN = str[/COLOR][/B]

Exit_Command6_Click:
    Exit Sub

Err_Command6_Click:
    MsgBox Err.Description
    Resume Exit_Command6_Click
    
End Sub

Hy vọng sẽ giúp được bạn.
Thân
 
Cám ơn domfootwear nhiều, vấn đề khó khăn nhất của mình đã đc giải quyết.
Cám ơn bạn rất nhiều.
 
Chào bạn domfootwear
Có một vấn đề nhỏ là khi mình thoát khỏi form set thì add record mới sẽ không tự nhận giá trị mình đã chọn. Vậy mình muốn sau khi set mặc định 1 giá trị thì giá trị đó sẽ tồn tại suốt cho đến khi mình thay đổi kể cả khi thoát chương trình.
 
Chào bạn domfootwear
Có một vấn đề nhỏ là khi mình thoát khỏi form set thì add record mới sẽ không tự nhận giá trị mình đã chọn. Vậy mình muốn sau khi set mặc định 1 giá trị thì giá trị đó sẽ tồn tại suốt cho đến khi mình thay đổi kể cả khi thoát chương trình.

Bạn xem file nhé. Lưu ý là khi thoát khỏi chương trình thì biến sẽ mất
 

File đính kèm

Web KT

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

Back
Top Bottom