MS Access VBA отображать все поля из составного ключа в форме - PullRequest
1 голос
/ 06 декабря 2011

Я ищу способ отображения всех полей, входящих в составной ключ, в поле формы.Это поможет пользователям при вводе нескольких записей отслеживать, над чем они работают.В настоящее время Access будет отображаться только в поле с помощью клавиши Composite.

В форме в настоящее время у меня есть поле поиска для ссылки на таблицу 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

Я просмотрел все и не могу найти что-либо об отображении всех полей.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 06 декабря 2011

Вам необходимо удалить кавычки из первого аргумента 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
...