2009-02-12 34 views
9

Tôi có một biểu mẫu trong Access 2003 chỉ nên làm việc với một bản ghi duy nhất. Tôi có thể đặt thuộc tính Cycle thành Current Record nhưng biểu mẫu vẫn chuyển sang bản ghi tiếp theo khi tôi nhấn Enter. Suy nghĩ đầu tiên của tôi là tài sản KeyPreview, nhưng tôi không thấy một. Suy nghĩ khác của tôi có lẽ là sự kiện KeyPress hoặc KeyUp, nhưng tôi nghĩ tôi sẽ hỏi trong trường hợp có hậu quả ngoài ý muốn. Ý tưởng nào?Tránh chuyển sang bản ghi tiếp theo khi nhấn Enter?

+1

Nếu bạn đang đi xuống bỏ phiếu và (tôi giả định cùng một người) bỏ phiếu để đóng. Hãy bình luận về lý do tại sao. Tôi thường xuyên bị buộc tội là hạnh phúc và thậm chí tôi không thấy vấn đề ở đây. – EBGreen

+0

Tôi cũng không thấy vấn đề. Điều này có vẻ như một câu hỏi lập trình hợp pháp. Nó chỉ cần một tiêu đề tốt hơn - như thêm "trong Access VBA" vào cuối. –

+1

Thật sao? Tôi nghĩ rằng các thẻ là đủ. Sao chép dữ liệu thường là một điều xấu. – EBGreen

Trả lời

6

Thuộc tính Chu kỳ chỉ ảnh hưởng đến khóa TAB.

Để kiểm soát hành vi của phím Enter là thuộc tính toàn cầu.

Đến Tools/Options - tab Bàn phím và vào "Move Sau Enter" chọn "Next Field"

Có KeyPress và KeyDown sự kiện mà bạn có thể sử dụng để bẫy các phím Enter quá nhưng đó là công việc nhiều hơn.

+0

Hài hước, nó không bao giờ xảy ra với tôi rằng "sở thích người dùng" của tôi đã ảnh hưởng đến ứng dụng của tôi. May mắn thay, người dùng của tôi có lẽ không đủ hiểu biết để đào bới thông qua các tùy chọn. Điều này làm việc cho tôi. Cảm ơn. –

+0

Sẽ không ảnh hưởng đến toàn bộ ứng dụng. Nếu bạn chỉ muốn làm điều đó trên một số hình thức, không phải tất cả? Không phải là "trường tiếp theo" hành vi mặc định quá? – BIBD

+0

Bạn có lẽ nên có ứng dụng của bạn kiểm tra các thiết lập cho tùy chọn này, bằng cách sử dụng GetOption và nếu nó không phải là những gì bạn muốn, thiết lập nó với GetOption. Nếu bạn muốn trả lại thiết lập của người dùng về cài đặt ban đầu, bạn sẽ muốn lưu vào bộ nhớ cache giá trị gốc và đặt lại khi ứng dụng đóng. –

0

Thuộc tính chu kỳ chỉ hoạt động với phím Tab.

Có hai tùy chọn bạn có thể theo đuổi.

Bạn có thể bẫy phím Enter trong KeyDown/KeyUp/keyPressed
- HOẶC -
Bạn có thể lọc các nguồn dữ liệu vào một bản ghi bạn muốn họ chỉnh sửa, và vô hiệu hóa thêm kỷ lục mới thông qua hình thức đó.

0

Bạn có thể thêm mã bên dưới vào biểu mẫu 'BeforeUpdate' của sự kiện. Nếu sử dụng muốn chuyển sang bản ghi tiếp theo, nó sẽ yêu cầu người dùng lưu sau đó đóng biểu mẫu trước khi họ có thể chuyển sang một bản ghi khác.

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    Select Case MsgBox("Save?", vbYesNo) 
     Case vbYes 
     DoCmd.Close 
     Case vbNo 
     Cancel = True 
    End Select 
    End Sub 
+1

Mã này chỉ kích hoạt nếu bản ghi đã được cập nhật, vì vậy nó không thực sự là một giải pháp cho vấn đề ban đầu chút nào. –

1

Các phím khoảnh khắc như TAB, Alt, PgUp, PgDn, Nhập được ép vào cuối thêm kỷ lục (sau trường cuối cùng chủ yếu), cơ sở dữ liệu tự động lưu tất cả thông tin bạn đã nhập vào biểu mẫu và xóa các trường để bạn có thể nhập giá trị tiếp theo. Vì vậy, những gì xảy ra là dữ liệu được lưu nhưng biểu mẫu có vẻ trống.

3 điều cần làm:

  1. Mẫu Cycle tài sản thiết lập để Current Record.
  2. Thuộc tính xem trước khóa biểu mẫu được đặt thành Có.
  3. Thêm mã sau đây để các tổ chức sự kiện KeyDown dạng:

    '33 - PgUp; 34 - PgDown; 9 - Tab; 18=Alt; 13=Enter 
    
    Select Case KeyCode 
    Case 33, 34, 18, 9, 13 
    KeyCode = 0  
    Case Else 
    'Debug.Print KeyCode, Shift 
    End Select 
    

    Tôi tìm thấy điều này trong khi sục sạo các trang web và không có thẻ tín dụng/trách nhiệm về mã nhưng tôi không biết nơi tôi tìm thấy nó . Làm việc cho tôi!

0

Nếu bạn truy cập vào Tùy chọn truy cập trên trang tệp, chuyển đến Cài đặt ứng dụng và cài đặt đầu tiên sẽ cho phép bạn chọn vị trí của bạn thay đổi khi bạn nhấn enter. Ít nhất trong Access 2013.

Các vấn đề liên quan