|
|
|
| Помогите, пожалуйста, решить небольшую задачу. Есть начальная форма, в которую записываются начальные сведения о документе. После закрытия этой формы, открывается форма, в которой список этих документов. Как можно выделить (перейти на) только что созданную запись в этом списке, имеющую уникальный код. Список содержит более 5-и полей и более 200 записей. Возможно ли это вообще. Заранее спасибо. | |
|
| |
|
|
|
| "открывается форма, в которой список этих документов."
под списком понимается контрол listBox? или просто "список" как некий перечень?
если listbox, то вероятно придется создать recordset c таким же источником как и lisbox найти в нем запись с помощью findfirst (для dao) или Find (для ADO), получить AbsolutePosition найденной записи и выделить эту запись в списке Список.Selected(rst.AbsolutePosition)
только с учетом отображаются заголовки столбцов в listBox или нет. (если отображаются, то AbsolutePosition + 1) | |
|
| |
|
|
|
| Список - контрол listBox, заголовки столбцов не отображаются.
Во второй форме сделал кнопку с таким кодом
Private Sub Кнопка_Click()
Dim Позиция As Long
Dim Условие As String
Dim кодДок As Long
кодДок = Me.Поле1 ‘ значение передается из первой формы
Условие = "КодТипаДокумента = 1 Or КодТипаДокумента = 10"
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Select * From Документ WHERE (" & Условие & ")")
rs.FindFirst "[КодДокумента] =" & КодДок
Позиция = rs.AbsolutePosition
Me.Список0.Selected (rs.AbsolutePosition) ‘ – остановка на этой строке с сообщением
End Sub
Сообщение: - Object doesn’t support this property or method
Может я что не так сделал? | |
|
| |
|
|
|
|
Me.Список0.setfocus
'Позиция = rs.AbsolutePosition
Me.Список0.Selected (rs.AbsolutePosition)
|
| |
|
| |
|
|
|
| Сейчас останавливаетя на этой же строке с сообщением - Invalid use of property и выделяет .Selected | |
|
| |
|
|
|
| блин .... ну да конечно
Me.Список0.Selected(rs.AbsolutePosition) = True
|
| |
|
| |
|
|
|
| Ошибки больше нет. Но на заданную запись не переходит. rs.AbsolutePosition определяется правильно и имеет конкретное значение, а Me.Список0.Selected(rs.AbsolutePosition) имеет значение = 0
После того как отправил это сообщение испралил строку Me.Список0.Selected(rs.AbsolutePosition ) = True на
Me.Список0.Selected(rs.AbsolutePosition - 1 + IIf(Me.Список0.ColumnHeads = True, 1, 0)) = True (нашел в Вашем примере "Универсальный поиск" от 2001 года)
и все заработало!!! Но почему то выделяется следующая запись за заданной, поэтому добавил ( -1 ). Олег! Большое Вам спасибо! Надеюсь что проблема решена. Остальное дело техники... | |
|
| |
|
|
|
| Если запись в списке имеет уникальный код (а именно он, как правило, используется в качестве значения списка после выбора элемента списка), то его надо просто запомнить в глобальную переменную, а при загрузке следующей формы, указать, что ComboBox1 = глобальная переменная. | |
|
| |
|
|
|
| А можно о ComboBox1 чуть по подробнее ? Или маленький примерчик ... | |
|
| |
|
|
|
| Имелось в виду поле со списком или список, в котором нужно выбрать требуемую запись. | |
|
| |
|
|
|
| Речь идет не о выборе, а о переходе на эту запись... | |
|
| |