Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как передать параметр из формы в форму? / 25 сообщений из 41, страница 1 из 2
01.07.2003, 12:50
    #32195989
ulmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
Для изменения данных и добавления новых, двойным кликом открываю другую форму. В ней данные представленны в виде ленточной формы. Хочется что бы указатель стоял на той записи, по котой я кликнул в вызывающей форме.
Вероятно я должен передать туда параметры вызывающей формы, например, номер учащегося.
...
Рейтинг: 0 / 0
01.07.2003, 12:53
    #32195997
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
DoCmd.OpenForm "NewForm"
NewForm.RecordsetClone.FindFirst "LineNr=" & OldForm & "" ' Твое условие'
If Not NewForm.RecordsetClone.NoMatch Then
NewForm.Bookmark = NewForm.RecordsetClone.Bookmark
End If
...
Рейтинг: 0 / 0
01.07.2003, 12:58
    #32196009
Как передать параметр из формы в форму?
Попробуй так:

Код: plaintext
Call formsOpenLocate( "Anketa" ,  "[IDAnk] = "  & IDAnk)


Функция приведена ниже

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
Sub formsOpenLocate(vFormName, vCondition As Variant)
' Подпрограмма определяет форму, предварительно
' поставив курсор на первое поле последовательности
' заданной в условии
    Dim frm As Form
    Dim rst As ADODB.Recordset
    Dim lngCount As Long
    ' Открытие формы
    If Not formIsLoaded(vFormName) Then
        DoCmd.OpenForm vFormName, , , , , acHidden
    Else
        DoCmd.SelectObject acForm, vFormName
    End If
    ' Поиск первой последовательности
    Set frm = Forms(vFormName)
    If Not IsNull(vCondition) Then
        If Right(Trim(vCondition), 1) = "=" Then
            DoCmd.GoToRecord acForm, frm.Name, acNewRec
        Else
            DoCmd.GoToRecord acForm, frm.Name, acLast
            Set rst = frm.RecordsetClone
            rst.MoveFirst
            rst.Find vCondition
            If rst.EOF Then
                DoCmd.GoToRecord acForm, frm.Name, acNewRec
            Else
                frm.Bookmark = rst.Bookmark
            End If
        End If
    End If
    frm.Visible = True
End Sub

Function formIsLoaded(vFormName) As Integer
' Функция определяет, открыта ли форма с заданным именем
    Dim frm As Form
    formIsLoaded = False
    For Each frm In Forms
        If frm.Name = vFormName Then
            formIsLoaded = True
            Exit For
        End If
    Next frm
End Function


P.S.: Если ни одна запист не удовлетворяет условию, то система переводит форму в режим ввода новой записи
...
Рейтинг: 0 / 0
01.07.2003, 13:00
    #32196014
Как передать параметр из формы в форму?
Забыл добавить. Функции универсальные и работают в любой версии MSAccess (проверял в версиях начиная с 95 и заканчивая XP).
...
Рейтинг: 0 / 0
01.07.2003, 13:04
    #32196022
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
сделай проще.
docmd.openform "name",,,,,,arg
где arg-признак нужной записи.
в открывшейся форме переданый параметр извлекается как
me.openargs
делаешь gotorecord и все.
...
Рейтинг: 0 / 0
01.07.2003, 13:10
    #32196037
Как передать параметр из формы в форму?
Ну незнаю. Я лично откузался от таких действий два года назад. Слишком много лишнего кода.
...
Рейтинг: 0 / 0
01.07.2003, 13:13
    #32196044
Хам трамвайный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
самый простой вариант:
в источнике прописать
условие
select ... where id=[Дрянь-форма]![Дурной контрол]
...
Рейтинг: 0 / 0
01.07.2003, 13:15
    #32196050
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
> Слишком много лишнего кода.

а ты свою функцию не считаешь таковой
...
Рейтинг: 0 / 0
01.07.2003, 13:21
    #32196062
Как передать параметр из формы в форму?
А ты попробуй поставить курсор на запись, удовлетворяющую нескольким условиям своим OpenArgs и поймешь.
...
Рейтинг: 0 / 0
01.07.2003, 13:26
    #32196075
ulmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
Спасибо, буду пробовать, но есть вопрос:
1. Call formsOpenLocate помещается в программу события "двойное нажатие кнопки"?
2. Sub formsOpenLocate(vFormName, vCondition As Variant) вероятно помещается в модуль? С модулями я еще не работал.
...
Рейтинг: 0 / 0
01.07.2003, 13:30
    #32196079
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
2 Дмитрий Басовский:

но ведь OpenArgs, это строка
вот и передавай хоть мульён параметров (как в where),
а в открытой форме используй их как conditions
в функциях поиска записи.
...
Рейтинг: 0 / 0
01.07.2003, 13:46
    #32196107
Как передать параметр из формы в форму?
А код писать на каждой вызываемой форме?

Если форма не содержит VB-модулей, то на ее компиляцию при открытии
не тратится время и она открывается гораздо быстрее и занимает гораздо меньше места как в самом mdb файле, так и в памяти компа.

При наличии кода в форме размер формы увеличивается в среднем на 10-20%.

Если в БД, которую я сейчас обслуживаю, сделать так, как ты советуешь -
система будет ворочаться как недобитый мамонт.

Проверено.
...
Рейтинг: 0 / 0
01.07.2003, 13:54
    #32196125
Как передать параметр из формы в форму?
Заменяешь в коде

Sub formsOpenLocate(vFormName, vCondition As Variant)

на

Function formsOpenLocate(vFormName, vCondition As Variant)

И

End Sub

на

End Function

и после этого можешь использовать построитель выражений.
Пример:
=formsOpenLocate2("Country";"Country ='" & [Citizenship] & "'")

P.S.: В .adp проектах этот метод неприменим.
...
Рейтинг: 0 / 0
01.07.2003, 14:02
    #32196137
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
>Если форма не содержит VB-модулей, то на ее компиляцию при открытии
не тратится время и она открывается гораздо быстрее и занимает гораздо меньше места как в самом mdb файле, так и в памяти компа.


Хрень это - сказки про еле ворочающиеся формы у которых есть модуль. Даже если это так и было - то благодаря тому что код грузиться в память 1 (один) раз при первом обращении, можно насовать в формы Public функции (пустые) и обращаться к ним в момент загрузки базы - таким образом инициализировать загрузку модулей формы в память. Сам код занимает не так уж и много места (сделай SaveAsText модулей и убедись в этом сам). Данную процедуру можно проделать только для особо перегруженных форм.

Главные тормоза в формах - это источники данных и перегрузка формы элементами и полями-со-списками, ну и в криворукости программера (сам на это попадался :) ).

Чем основаваюсь? Опытом и экспериментами по поводу оптимизации работы одной слишком круто растолстевшей формы (открытие порядка 5-8 сек) - убрав модули нафиг - скорость загруки заметно не изменилась - вернее так и осталась.
...
Рейтинг: 0 / 0
01.07.2003, 14:19
    #32196162
Как передать параметр из формы в форму?
Параметр формы "Наличие модуля" трогал? Если нет, то мог бы и не удалять проргаммного кода.

У меня есть форма (без модуля), данные для которой имеют ширину 430 полей.
Всего записей 2 347 490 (на данный момент). Открывается примерно 1,5 секунды. С модулем она открывалась 2,5.
...
Рейтинг: 0 / 0
01.07.2003, 14:26
    #32196176
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
2Дмитрий Басовский
>Параметр формы "Наличие модуля" трогал? Если нет, то мог бы и не удалять проргаммного кода.

Куда нам, чайникам, про HasModule знать-то... :)

>У меня есть форма (без модуля), данные для которой имеют ширину 430 полей. Всего записей 2 347 490 (на данный момент). Открывается примерно 1,5 секунды. С модулем она открывалась 2,5.

1.5 сек? Локально поди наверное, да на PIV?
...
Рейтинг: 0 / 0
01.07.2003, 14:27
    #32196179
Как передать параметр из формы в форму?
Я знаю более 5 методов передачи информации из формы в форму. У каждого свои достоинства и недостатки. Так что не будем спорить по пустякам. Человеку помогли (если это так) и то хорошо.
...
Рейтинг: 0 / 0
01.07.2003, 14:34
    #32196192
ulmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
Спасибо, помогли, все получилось!
Сегодня хороший день!
...
Рейтинг: 0 / 0
01.07.2003, 14:34
    #32196194
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
>Человеку помогли (если это так) и то хорошо.

Ему уже помогли. Дали совет который позволит ему сделать что он хочет.
Мне про 1,5 сек знать хочеться - у меня записей было на 3 порядка меньше и котролов около 50 - открывалось (в сети) 5-8 секн. а тут такие цифрищи -1,5 сек!
...
Рейтинг: 0 / 0
01.07.2003, 14:42
    #32196202
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
Не очень я понял - т.е. источником данных для формы служит селект с 430 полями по таблице (или группе таблиц) с общим количеством строк в 2 347 490 - и это открывается 1.5. секунды?
Простой Select без группировки и сортировки будет работать медленнее.
на наборе в 823000 записей при первом обращении к таблице время селекта 1 мин 23 сек, по индексу (т.е. в селекте только кластерный индекс) при повторном обращении - 6 секунд. Запрос на сервере. И это не форма, даже с одним контролом и без модулей.
Да и второй момент - на форму выводятся все записи???
Как правильно заметили, время загрузки формы зависит от количества контролов на ней и исходных данных к форме.

P.S. Предложенный метод - универсален и хорош. В своём посте я его не затрагивал.
...
Рейтинг: 0 / 0
01.07.2003, 14:45
    #32196210
АлексейЕ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
Так, на всякий случай.
Если автор вопроса остановится на варианте передачи параметров через openargs, то пусть заглянет по ссылочке:
http://am.rusimport.ru/MSAccess/topic.aspx?ID=94
...
Рейтинг: 0 / 0
01.07.2003, 15:02
    #32196242
АлексейЕ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
Вопрос к Дмитрию и остальным
ADO только изучаю.

Код: plaintext
1.
2.
Dim rst As ADODB.Recordset
...
Set rst = frm.RecordsetClone

Разве такая конструкция может работать?
RecordsetClone есть только в DAO. Или я чего-то недопонял?
...
Рейтинг: 0 / 0
01.07.2003, 15:09
    #32196259
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
Такая конструкция работать будет. В данном случае, frm.RecordsetClone - свойство формы.
...
Рейтинг: 0 / 0
01.07.2003, 15:20
    #32196279
АлексейЕ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
Так ведь это Свойство, RecordsetClone, используется для ссылок на объект формы Recordset типа DAO.

да и в Хелпе:
You use the RecordsetClone property to navigate or operate on a form's records independent of the form itself. For example, you can use the RecordsetClone property when you want to use a method, such as the DAO Find methods, that can't be used with forms.

P.S. Только что попробовал. Выдает ошибку Type mismatch (Error 13)
...
Рейтинг: 0 / 0
01.07.2003, 15:25
    #32196289
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать параметр из формы в форму?
>Так ведь это Свойство, RecordsetClone, используется для ссылок на объект формы Recordset типа DAO.

Не типа DAO, а типа Object (см. F2)
и по разному ведет себя в разных версиях акеса (2000/2002) и в проектах при присваивании ADODB.Recodset or DAO.Recodset.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как передать параметр из формы в форму? / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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