2014-11-12 2 views
0

Надеюсь, вы сможете помочь. По какой-то причине я не могу придумать, что я делаю неправильно. Может быть, свежая пара глаз поможет.Имя переменной VBA, которое увеличивается с каждым циклом и может использоваться для заполнения текстового поля

  • потянув GL и их значение валюты из запроса.
  • Каждый GL должен заполнять текстовые поля в отчете с последовательными именами. Пример: GL1, GL2, GL3 и т. Д.
  • Каждое значение GL (валюта) должно заполнять другие текстовые поля с уникальным именем. Пример: GLV1, GLV2, GLV3, GLV4 и т. Д.

Вот мой сценарий - любая помощь будет оценена.

Dim rs As DAO.Recordset 
Set rs = CurrentDb.OpenRecordset("SELECT * FROM qry_GL_totals") 
Dim GLField As Variant 

If Not (rs.EOF And rs.BOF) Then 
    rs.MoveFirst 'Unnecessary in this case, but still a good habit 
    RecordCount = 0 
    Do Until rs.EOF = True 
     RecordCount = RecordCount + 1 
     MsgBox (rs!GL & " " & rs!Expr1) 'MsgBox is just for testing 
     "[" & GLField & "]" =rs!GL 
     "[" & GLField & "T]" =rs!Expr1 
     rs.MoveNext 
    Loop 
Else 
End If 
rs.Close 
Set rs = Nothing 
GLField = Null 
End Sub 

Update: Это то, что у меня есть сейчас, и его недостаток до сих пор.

Private Sub Report_Load() 

    Dim rs As DAO.Recordset 
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM qry_GL_totals") 
    If Not (rs.EOF And rs.BOF) Then 
     rs.MoveFirst 
     i = 0 
     Do Until rs.EOF = True 
      i = i + 1 
      Me.Controls(GLField) = rs!GL 
      Me.Controls(GLField & "T") = rs!Expr1 
      rs.MoveNext 
     Loop 
    Else 

    End If 
    rs.Close 
    Set rs = Nothing 

End Sub 

Ошибка времени выполнения "438" Объект не поддерживает это свойство или способ.

ответ

0

Может попробовать:

Me.Controls(GLField) = rs!GL 
Me.Controls(GLField & "T") = rs!Expr1 

Для вашего обновленного кода:

Me.Controls("GL" & i) = rs!GL 
Me.Controls("GLV" & i) = rs!Expr1 

Если предположить, что элементы управления называются "ГЛ1", "GL2", "GLV1", "GLV2" и т.д.

+0

Спасибо Тиму, но, к несчастью, это ошибся. Me.Controls (RecordCount) = RS! Expr1 Me.Controls (RecordCount и "L") = RS! GL Ошибка выполнения "438" Объект не поддерживает это свойство или метод. –

+0

Это было не то, что я написал. Эта переменная должна содержать * имя * вашего элемента управления (по крайней мере, это то, что я предполагал, что вы пытались сделать). См. Http://stackoverflow.com/questions/8267453/can-i-use-a-variable-as -the-name-of-a-control-in-microsoft-access-vba –

+0

Это то, что у меня есть сейчас и его неудача. –