Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите добрым советом (Как встать на первую запись с нужным значением поля?) / 25 сообщений из 26, страница 1 из 2
17.11.2004, 16:16:54
    #32787290
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
Как в ленточной подчиненной форме (recordset - Ado) быстро и просто встать на первую запись с нужным значением нужного поля? На форме применен фильтр.

Geoтопик переименован
...
Рейтинг: 0 / 0
17.11.2004, 16:30:42
    #32787352
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
А что по этому поводу говорится в хелпе?
...
Рейтинг: 0 / 0
17.11.2004, 17:19:16
    #32787508
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
А что в хелпе? Хочется написать в общем виде, для любой формы и любых значений поля и названий поля. То есть написать подпрограмму, которой будет передана ссылка на форму (as Form), название поля рекордсета (as string) и значение поля (as Variant). Подпрограмма должна переместить в форме на нужную запись. При этом все поля в форме могут быть недоступны, в форме может быть фильтр, сортировка и т.д. Поэтому FindRecord не проходит (из-за возможной недоступности контрола, и в рекордсете может быть поле, а в форме - не быть для него контрола), Recordset.Find -> Bookmark тоже не катит из-за фильтра. Что делать? Кто знает - подскажите.
Заранее благодарен.
...
Рейтинг: 0 / 0
17.11.2004, 17:35:06
    #32787541
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
mb docmd.gotorecord?
...
Рейтинг: 0 / 0
17.11.2004, 17:40:34
    #32787551
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
Я, честно говоря, не до конца понимаю проблему. Например, не ясно мне, как недоступные контролы (по всей видимости имеется ввиду enabled = false) могут влиять на работу с рекордсетом. А так же есть еще масса неясностей. Короче говоря ты бы лучше кусок кода дал, в котором загвоздка.
...
Рейтинг: 0 / 0
17.11.2004, 17:44:18
    #32787557
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
И как здесь применить gotorecord?? Я не прикалываюсь, я действительно не представляю. Если есть хоть какой-то намек, подскажи, пожалуйста.
...
Рейтинг: 0 / 0
17.11.2004, 17:46:47
    #32787564
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
mediumИ как здесь применить gotorecord?? Я не прикалываюсь, я действительно не представляю. Если есть хоть какой-то намек, подскажи, пожалуйста.
DoCmd.GoToRecord , , acFirst
Встает на первую запись
Но видимо это не то, что тебе нужно.
Так что почитай еще раз мессаг № 1114358
...
Рейтинг: 0 / 0
17.11.2004, 17:47:53
    #32787568
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
Кода нет, потому, что надо написать процедуру, которая будет осуществлять позиционирование в форме. Известны параметры процедуры - собственно форма, изместно, что у формы рекордсет типа АДО. Известно название искомого поля в рекордсете, и значение этого поля. Задача - встать в форме на запись с нужным значением в нужном поле рекордсета. В общем случае получается полный туман. Если есть идея - подскажи, пожалуйста.
...
Рейтинг: 0 / 0
17.11.2004, 17:52:28
    #32787582
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
у формы рекордсет типа АДО
Это как?

----
Например
Код: plaintext
1.
2.
3.
4.
5.
Dim a As DAO.RecordSet
    
    Set a = Me.RecordSet
    
    a.FindFirst "[MyField] = '13=185'"
    a.Close
...
Рейтинг: 0 / 0
17.11.2004, 17:53:09
    #32787587
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
Мне не надо на первую, мне не надо на седьмую, двадцатую или последнюю.
А надо на запись с нужным значением нужного поля. Как из названия поля и значения рассчитать порядковый номер записи в форме при фильтре и сортировке, я не знаю. Если умеешь - научи.
...
Рейтинг: 0 / 0
17.11.2004, 17:58:06
    #32787601
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
В АДО при фильтре Rs.Find работает некорректно
...
Рейтинг: 0 / 0
17.11.2004, 17:59:55
    #32787603
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
Repeat:
Код: plaintext
1.
2.
3.
4.
5.
Dim a As DAO.RecordSet
    
Set a = Me.RecordSet
    
a.FindFirst "[MyField] = '13=185'"
a.Close
...
Рейтинг: 0 / 0
17.11.2004, 18:12:38
    #32787631
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
Ну так и что?
----
У меня мозг напрочь отказывается понимать, что означает фраза "у формы рекордсет типа АДО". У формы определенно задан только источник данных, тобиш таблица или запрос. А рекорсет, каким захочешь таким и будет. Можешь даже создать собственный Type и присвоить к нему рекордсет формы.
...
Рейтинг: 0 / 0
17.11.2004, 18:26:43
    #32787663
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
Нужна вот такая процедура:
Привожу прототип и начало определения переменных.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub S(TmpForm as Form, TmpFieldName as String, TmpValue as Variant)
Dim TmpRs as ADODB.Recordset
Dim TmpBookMark as Variant
Dim Criteria as String
Criteria = TmpFieldName+"="+ ...???
Set TmpRS = TmpForm.Recordset
TmpRs.Find (TmpCriteria)
TmpBookMark = TmpRs.Bookmark 
...
и все равно в общем случае ничего не получается.
Что делать??
...
Рейтинг: 0 / 0
17.11.2004, 18:33:26
    #32787680
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
Repeat:
Код: plaintext
1.
2.
3.
4.
5.
Dim a As DAO.RecordSet
    
Set a = Me.RecordSet
    
a.FindFirst "[MyField] = '13=185'"
a.Close
...
Рейтинг: 0 / 0
17.11.2004, 18:40:14
    #32787692
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
Можно даже приукрасить:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Function S(TmpForm As Form, TmpFieldName As String, TmpValue As Variant)
Dim R As DAO.Recordset

Set R = TmpForm.Recordset
If TmpFieldName = "" Then
    MsgBox "bla-bla-bla"
    R.Close
    Exit Function
End If
If TmpValue = "" Then
    MsgBox "bla-bla-bla"
    R.Close
    Exit Function
End If

If Not R.EOF Then
    R.FindFirst " & TmpFieldName & " = " " & TmpValue & ""
Else
    MsgBox "bla-bla-bla"
End If
R.Close
End Function
...
Рейтинг: 0 / 0
17.11.2004, 18:51:59
    #32787719
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
Обрати внимание, не DAO.Recordset а ADODB.Recordset.
Тут то собака и порылась.
...
Рейтинг: 0 / 0
17.11.2004, 18:54:01
    #32787731
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
И еще одна особенность: значение поля - Variant, а не String.
Тут тоже собачка маленькая.
А нужно решение в общем виде.
Есть ли оно??
...
Рейтинг: 0 / 0
17.11.2004, 18:57:43
    #32787739
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
А в случае Jet корректнее было бы сначала делать movefirst и работать не по рекордсету, а по клону. С DAO вообще все просто, т.к. с фильтрами работает корректно, синтаксис фильтров форм для JET - родной.
...
Рейтинг: 0 / 0
17.11.2004, 19:00:56
    #32787751
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
mediumОбрати внимание, не DAO.Recordset а ADODB.Recordset.
Тут то собака и порылась.
Ты начинаешь надоедать.
Я в ADO не работаю и не понимаю зачем именно эта технология здесь требуется. Это первое.
Второе насчет собак - меня это не веселит
Третье - Variant, так Variant. Какая разница.
Сделай так:
Код: plaintext
1.
2.
3.
4.
5.
6.
Public Function S(TmpForm As Form, TmpFieldName As String, TmpValue1 As Double, TmpValue2 as String ....)
....
If not IsNull(TmpValue1) then
...
Exit Function
End if
....
Шевелить мозгами надо. Вот, где собака порылась
...
Рейтинг: 0 / 0
17.11.2004, 19:04:45
    #32787759
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
mediumА в случае Jet корректнее было бы сначала делать movefirst и работать не по рекордсету, а по клону. С DAO вообще все просто, т.к. с фильтрами работает корректно, синтаксис фильтров форм для JET - родной.
По клону, если будешь работать, то не увидишь, как встанешь на найденную запись. Я понял, что тебе нужно визуально перейти.
----
Все просто, так и делай в DAO.
----
Короче говоря, задачу четче надо ставить.
...
Рейтинг: 0 / 0
17.11.2004, 19:05:37
    #32787762
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
Уважаемые коллеги, работающие с ADO. Как по вашему, имеет ли задача корректное решение в общем виде?
...
Рейтинг: 0 / 0
17.11.2004, 19:10:28
    #32787767
medium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
А с DAO лучше сначала перейти к первой записи клона, потом к нужной записи клона, сохранить закладку клона и перейти к закладке в форме. И все равно текст критерия для метода Find формируется не в одну строку, надо сначала разобраться с типом данных Variant, а потом расставить где надо кавычки и решетки (для текста или даты/времени)(через Format). Это мне кажется более корректным.
...
Рейтинг: 0 / 0
17.11.2004, 19:21:59
    #32787777
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
VsevolodVТы начинаешь надоедать.
Я в ADO не работаю и не понимаю зачем именно эта технология здесь требуется. Это первое.
Второе насчет собак - меня это не веселит
???

Я сейчас все посты твои отсюда уберу.

2 Автор
Первое, что нашел.
http://www.sql.ru/forum/actualthread.aspx?tid=92653&hl=ado+find
...
Рейтинг: 0 / 0
17.11.2004, 19:23:08
    #32787781
otto kreiz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите добрым советом (Как встать на первую запись с нужным значением поля?)
To medium:
А не подойдет ли тебе RequeryPro?
http://am.rusimport.ru/MsAccess/show.asp?ID=24
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите добрым советом (Как встать на первую запись с нужным значением поля?) / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]