Tôi đã tạo biểu mẫu đăng nhập có tên đăng nhập nơi tên người dùng được nhập vào hộp văn bản txtEmployee và tôi cần hiển thị như vậy ở trang thứ hai dưới dạng khác trong MS Access.Chuyển thông số giữa các biểu mẫu trong MS Access
Trả lời
DoCmd.OpenForm
cho phép bạn chuyển giá trị tùy ý làm thông số cuối cùng. Giá trị này có thể được truy cập trong hình thức mới như Me.OpenArgs
:
' Invoked by some Button on the first form '
Sub GoToSecondPage()
DoCmd.OpenForm "MySecondPage", acNormal, , , , , txtEmployee.Value
End Sub
' Second form '
Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
lblShowEmployeeName.Value = Me.OpenArgs
End If
End Sub
(. Mã ví dụ chưa được kiểm tra)
Cá nhân tôi sẽ vượt qua chúng thông qua các đối số mở khi mở biểu mẫu. Ví dụ từ hình thức Một bạn sẽ viết
DoCmd.OpenForm "frmB", , , , , acDialog,”Badger”
Và sau đó trong sự kiện OnOpen của form B bạn có thể chụp những gì bạn đã gửi như thế này
Me.txtSomething=Me.OpenArgs
Bạn chỉ có thể vượt qua một điều tuy nhiên Những gì tôi làm rất nhiều là vượt qua một chuỗi phân cách đường ống trong các đối số mở và sau đó tách ra.
Tại sao bạn mở bằng acDialog? – Fionnuala
Ví dụ này được lấy từ giống như một hình thức popup vì vậy tôi muốn nó là phương thức, điều này tất nhiên có thể được gỡ bỏ nếu OP chỉ muốn một hình thức bình thường –
Một vài ý tưởng ...
Sử dụng các sự kiện AfterUpdate trên các lĩnh vực tên đăng nhập để viết tên cho một biến toàn cầu, sau đó cư lĩnh vực này trên trang thứ hai với sự kiện onload.
Hoặc, nếu bạn có kế hoạch rời khỏi nhật ký ở dạng mở bất cứ lúc nào bạn có thể thiết lập giá trị mặc định của lĩnh vực này trực tiếp đến = [Forms]! [LogInForm]! [UserName]
Tại sao không tạo ra một chức năng công cộng lưu trữ &/hoặc truy lục một biến toàn cục mà bạn lưu trữ sau khi biểu mẫu đầu tiên được thực thi? Điều này sẽ cho phép bạn không chỉ sử dụng nó trên một hoặc nhiều biểu mẫu, mà còn là tiêu chí trong một truy vấn (ví dụ, để trả về các bản ghi khớp với tên người dùng bạn đã lưu trữ).
Tôi đồng ý điều này là bảo mật "giả", nhưng cũng có những lúc nó đủ cho nhu cầu của bạn. Tôi đã thực hiện điều này trước đây, nơi tôi kết hợp tên người dùng chuỗi môi trường với một mục nhập trong bảng người dùng.
BTW, tôi gọi tính năng này là cá nhân hóa chứ không phải bảo mật.
Chỉ là một ý nghĩ.
Tôi sẽ không bao giờ sử dụng toàn cầu cho việc này. Thay vào đó, tôi sẽ sử dụng biến STATIC bên trong hàm trả về giá trị và nếu nó không được đặt, nó sẽ mở biểu mẫu để thu thập thông tin. Điều này có nghĩa là cả hai đều tự chữa bệnh và an toàn khỏi bị thay đổi ở nơi khác trong mã. –
Bạn có thể vượt qua một chuỗi giới hạn như tham số OpenArgs:
DoCmd.OpenForm FormName:="miscForm", OpenArgs:=paramstring
Dưới đây là một thói quen để xử lý một chuỗi ống được phân định thông qua như là tham số để DoCmd.OpenForm:
Dim Pstring As Variant
If Len(Me.OpenArgs) > 0 Then
Pstring = Split(Me.OpenArgs, "|")
var1 = Pstring(0)
<etc..>
End If
Tôi thường thấy cần phải làm điều này như một dấu hiệu của một vấn đề thiết kế. Tức là, nếu bạn phải chuyển nhiều thông tin đó đến biểu mẫu, về cơ bản bạn nên sử dụng một số cách có cấu trúc để làm như vậy. –
@David, Bạn đang đề cập đến biến kiểu 'struct'? Tôi chỉ sử dụng biểu mẫu này cho một biểu mẫu trong ứng dụng Access hiện tại của mình, để tôi không phải đặt nội dung vào cơ sở dữ liệu trước khi tôi đưa biểu mẫu lên và sau đó lại xuất hiện khi tôi ở trong biểu mẫu. Tôi mở ra một ý tưởng tốt hơn, tôi không có chuyên gia về Mẫu truy cập. –
Có nhiều cách để thực hiện điều này. Một là chỉ đơn giản là chọc dữ liệu vào biểu mẫu được gọi từ ngữ cảnh gọi. Điều này có thể được thực hiện bằng cách mở biểu mẫu với cả acHidden và acDialog, và khi bạn hoàn thành việc đưa dữ liệu vào biểu mẫu được gọi, bạn làm cho nó hiển thị, điều này làm cho nó thực thi phương thức và mã trong ngữ cảnh gọi. Tôi thường không làm điều đó. Tôi có nhiều khả năng sử dụng một mô-đun lớp học, nhưng đó chỉ là lợi nhuận khi bạn có một số thuộc tính bạn cần vượt qua, chẳng hạn như khi lọc trên nhiều tiêu chí. –
- 1. Ms Access Lưu bản ghi trong biểu mẫu con
- 2. Biểu mẫu Django: thông số chuyển thành biểu mẫu
- 3. MS Access: Các biểu mẫu giao tiếp các giá trị với nhau như thế nào?
- 4. Cung cấp trợ giúp trong mẫu trong MS Access
- 5. Chuyển đổi TSQL sang MS-Access SQL
- 6. Chuyển đổi MS Access 2000 sang 2010
- 7. Cụm từ thông dụng trong MS Access VBA?
- 8. MS Access Thuộc tính
- 9. Cách tốt nhất để đợi Biểu mẫu được đóng trong MS Access VBA là gì?
- 10. Chuyển đổi String để ngày trong MS Access Query
- 11. MS Access: Xác định loại đối tượng
- 12. Nhibernate và MS Access
- 13. Chọn bản ghi bỏ qua các hàng trong MS Access
- 14. Dữ liệu xoay vòng trong MS Access
- 15. MS Access: khổ giấy tùy chỉnh
- 16. Tạo Xem trong MS Access 2007
- 17. VBA + Chủ đề trong MS Access
- 18. Biểu mẫu HTML không gửi thông số
- 19. Ứng dụng truy cập MS - Chuyển đổi lưu trữ dữ liệu từ Access sang SQL Server
- 20. j_security_check - thông số bổ sung có thể được chuyển cho các lần gửi biểu mẫu không?
- 21. Một số kỹ thuật tốt để chuyển đổi ứng dụng Ms Access thành ứng dụng .Net là gì?
- 22. Struts 2: thông số giữa các hành động
- 23. Làm thế nào để nhúng các biểu mẫu truy cập MS trong mô-đun C#?
- 24. Làm cách nào để tham chiếu biểu mẫu hiện tại trong biểu thức trong Microsoft Access?
- 25. Phát triển MS Access File Size problem
- 26. HTTP post: thông số url và dữ liệu biểu mẫu
- 27. Trang LINQ asp.net chống lại MS Access.
- 28. Chuyển đổi đối tượng hình ảnh OLE từ MS Access để sử dụng trong .NET
- 29. MS Access chuẩn bị báo cáo
- 30. Đầu ra Truy cập MS Access vào Excel với vba
Là người dùng tên giống như tên người dùng đăng nhập cửa sổ? Nếu có, bạn có thể lấy tên từ: http://www.mvps.org/access/api/api0008.htm – Fionnuala
Ngoài ra, tại sao bạn cần hiển thị tên người dùng, chắc chắn người dùng biết họ là ai? Nếu bạn cần tên vì một số lý do khác, bạn nên nói như vậy, bởi vì có nhiều cách để truyền thông tin. Ví dụ, nếu tên được sử dụng để lọc các bản ghi, đối số Where của phương thức OpenForm có lẽ là tốt nhất. – Fionnuala
Điều này nghe có vẻ như bạn đã xây dựng một hệ thống có bảo mật giả mạo. Tại sao bạn làm điều đó, thay vì sử dụng Jet ULS hoặc Windows NTFS security hoặc Active Directory? –