MSoft Access - 将变量从一种形式传递到另一种形式

Posted

技术标签:

【中文标题】MSoft Access - 将变量从一种形式传递到另一种形式【英文标题】:Passing a variable from one form to another 【发布时间】:2021-12-22 08:40:10 【问题描述】:

我已经为我的数据库创建了一个登录屏幕,它可以工作,我想将一个变量传递给一个文本框,一旦你得到验证,该文本框就会出现在“主菜单”表单上。

这是我点击“登录”时的代码。

'Login button submit, validate, welcome message & main menu navigation
Private Sub cmd_login___Click()

  Dim db As DAO.Database
  Dim rst As DAO.Recordset
  Dim strSQL As String
 
  'query to check if login details are correct
  strSQL = "SELECT Name FROM LoginQuery WHERE Username = """ & Me.txt_username.Value & """ AND Password = """ & Me.txt_password.Value & """"
  
  Set db = CurrentDb
  Set rst = db.OpenRecordset(strSQL)
  If rst.EOF Then
    MsgBox prompt:="Incorrect username/password. Try again.", buttons:=vbCritical, title:="Login Error"
    Me.txt_username.SetFocus
  Else
    MsgBox prompt:="Hello, " & rst.Fields(0).Value & ".", buttons:=vbOKOnly, title:="Login Successful"
    DoCmd.Close acForm, "frm_login", acSaveYes
    DoCmd.Close
    DoCmd.OpenForm "MainMenu"
  End If
 
 Set db = Nothing
 Set rst = Nothing

这里的这行代码:

MsgBox prompt:="Hello, " & rst.Fields(0).Value & ".", buttons:=vbOKOnly, title:="Login Successful"

在屏幕上显示一个提示,说使用用户全名“rst.Fields(0).Value”变量登录成功,但我希望按下更少的窗口和按钮,而是将此变量传递给带有文本框的新空白表单。

我将 MainMenu 表单上的文本框命名为 txt_welcome

我承认我在这方面花了太长时间,我尝试在 IF 语句中附加以下内容:

Dim name As String
name = "SELECT Name FROM LoginQuery WHERE Username = """ & Me.txt_username.Value & """ AND Password = """ & Me.txt_password.Value & """"
[MainMenu]![txt_welcome].Value = name

[MainMenu]![txt_welcome].Value = "dsfadsf"

MainMenu!txt_welcome.value = "justdisplaysomethingplz"

没有任何效果,请有人帮我解决这个问题,从表面上看似乎很容易,但教程要么过时,要么太复杂。谢谢

【问题讨论】:

【参考方案1】:

可以通过DoCmd.OpenForm方法的OpenArgs参数传递。

DoCmd.OpenForm "MainMenu", OpenArgs:="Something"

然后,在 MainMenu 表单上,在表单加载时读取其值:

Private Sub Form_Load()
    If Not IsNull(OpenArgs) Then Debug.Print OpenArgs
End Sub

【讨论】:

非常感谢,我习惯了 Excel,我不明白为什么 Msoft 会改变表单/用户表单的交互方式,学习这个很难

以上是关于MSoft Access - 将变量从一种形式传递到另一种形式的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像从一种形式传递到另一种形式?

将数据从一种形式传递到另一种形式(datagridview)

从一种形式获取价值并将其传递给另一种形式

我如何从一种形式访问变量到另一种形式

如何在 Qt 中将数据从一种形式传递到另一种形式?

如何使用dto和C#窗口形式将信息从一种形式传输到另一种形式?