ms access vba显示表单中复合键的所有字段

发布于 2024-12-20 00:00:24 字数 1010 浏览 1 评论 0原文

我正在寻找一种方法来显示表单字段中复合键涉及的所有字段。这是为了帮助用户在输入多个记录时跟踪他们正在处理的记录。目前,Access 将仅显示在复合键的字段上。

在表单上,​​我当前有一个查找字段链接到 HeaderData 表。我想从中获取值并在表单字段中查找并显示关联的记录,以便用户知道他们已经输入了正确的输入,并且在数据输入过程中不会丢失其位置。

这是我尝试过的,但没有显示任何结果:

Private Sub ProviderName_LostFocus()
  Dim db As DAO.Database
  Dim rs As DAO.Recordset
  Dim strSQL As String
  Dim vcatch As String
  strSQL = "SELECT ID, AgencyID, ProviderName, AssessmentPeriod FROM HeaderData"
  Set db = CurrentDb
  Set rs = db.OpenRecordset("strSQL", dbOpenDynaset)

  If Not (rs.BOF And rs.EOF) Then
    rs.MoveFirst
    Do While Not rs.EOF
      If Me.ProviderName.Value = rs.Fields(ProviderName) Then
         vcatch = rs.Fields(ID) + " " + rs.Fields(AgencyID) + " " + rs.Fields(ProviderName) + " " + rs.Fields(AssessmentPeriod)
         Me.Text22 = vcatch
         rs.MoveLast
      Else
        rs.MoveNext
      End If
    Loop
    Me.Tally1.SetFocus
  End If

  rs.Close
  db.Close
End Sub

我查看了所有内容,但找不到有关显示所有字段的任何内容。任何帮助将不胜感激。

I am looking for a way to display all fields involved in a composite key in a form field. This is to aid the users when they are entering multiple records to keep track of which they are working on. Currently, Access will only display on field from the Composite key.

On the form, I currently have a look up field to link to the HeaderData table. I want to take the value from that and find and display the associated record in a form field so users will know that they have entered the correct input and do not lose their place during data entry.

Here is what I tried, but I am showing no results:

Private Sub ProviderName_LostFocus()
  Dim db As DAO.Database
  Dim rs As DAO.Recordset
  Dim strSQL As String
  Dim vcatch As String
  strSQL = "SELECT ID, AgencyID, ProviderName, AssessmentPeriod FROM HeaderData"
  Set db = CurrentDb
  Set rs = db.OpenRecordset("strSQL", dbOpenDynaset)

  If Not (rs.BOF And rs.EOF) Then
    rs.MoveFirst
    Do While Not rs.EOF
      If Me.ProviderName.Value = rs.Fields(ProviderName) Then
         vcatch = rs.Fields(ID) + " " + rs.Fields(AgencyID) + " " + rs.Fields(ProviderName) + " " + rs.Fields(AssessmentPeriod)
         Me.Text22 = vcatch
         rs.MoveLast
      Else
        rs.MoveNext
      End If
    Loop
    Me.Tally1.SetFocus
  End If

  rs.Close
  db.Close
End Sub

I have look all over an cannot find anything about displaying all fields. Any help would be greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

本王不退位尔等都是臣 2024-12-27 00:00:24

您需要删除 OpenRecordset 第一个参数中的引号:

Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

此外,您需要将 rs.fields() 参数括在引号中:

If Me.ProviderName.Value = rs.Fields("ProviderName") Then

最后,我不会更改 CurrentDb 的状态。你发现它打开了,就让它打开。
(删除倒数第二行)


所以,稍微清理一下:

Private Sub ProviderName_LostFocus()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim vcatch As String
strSQL = "SELECT ID, AgencyID, ProviderName, AssessmentPeriod FROM HeaderData"
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

If Not (rs.BOF And rs.EOF) Then
   rs.MoveFirst
   Do While Not rs.EOF
     If Me.ProviderName.Value = rs.Fields("ProviderName") Then
       vcatch = rs.Fields(ID) + " " + rs.Fields(AgencyID) + " " + rs.Fields(ProviderName) + " " + rs.Fields(AssessmentPeriod)
       Me.Text22 = vcatch
       Exit Do
     Else
       rs.MoveNext
     End If
   Loop
   rs.close
   Me.Tally1.SetFocus
End If
End Sub

You need to remove the quotes from the first argument to OpenRecordset:

Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

Also, you need to surround the rs.fields() argument in quotes:

If Me.ProviderName.Value = rs.Fields("ProviderName") Then

Finally, I would not change the state of the CurrentDb. You found it open, leave it open.
(remove second to last line)


So, cleaning this up a bit:

Private Sub ProviderName_LostFocus()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim vcatch As String
strSQL = "SELECT ID, AgencyID, ProviderName, AssessmentPeriod FROM HeaderData"
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

If Not (rs.BOF And rs.EOF) Then
   rs.MoveFirst
   Do While Not rs.EOF
     If Me.ProviderName.Value = rs.Fields("ProviderName") Then
       vcatch = rs.Fields(ID) + " " + rs.Fields(AgencyID) + " " + rs.Fields(ProviderName) + " " + rs.Fields(AssessmentPeriod)
       Me.Text22 = vcatch
       Exit Do
     Else
       rs.MoveNext
     End If
   Loop
   rs.close
   Me.Tally1.SetFocus
End If
End Sub
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文