Как изменить текст параметра - PullRequest
0 голосов
/ 07 мая 2018

У меня есть база данных, в которой есть запрос, где появляется окно параметров. Параметр [Формы]! [FrmFA_Management]! [Text0]. Это прекрасно работает, когда форма открыта, однако, когда форма не открыта, параметр бесполезен, так как пользователи не знают, что он запрашивает. Можно ли применить текст обложки или подсказку к нему? Я не могу изменить имя текстового поля, чтобы оно было более полезным, поскольку база данных старая и плохо документирована, и я не хочу рисковать чем-либо.

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Как открывается этот запрос и как он используется? Есть ли вторая форма, которая открывает ее, или вы открываете запрос вручную? Это исходный объект для другого объекта или просто открывающийся запрос?

Если она открывается через другую форму и является исходным объектом, вы можете проверить, открыта ли первая форма с помощью события click или onOpen второй формы, и, если это не так, сохранить переменную из поле ввода и изменить исходный объект объекта.

If CurrentProject.AllForms("myform").IsLoaded = True
    myObject.SourceObject = myQuery
Else
    Dim input as string
    input = inputbox "Please enter a value for my field"
    myObject.SourceObject = "SELECT * FROM myTable WHERE myField = " & input & ";"
Endif

myObject.Requery
0 голосов
/ 07 мая 2018

Я предлагаю вам удалить параметр из запроса. Как вы видите, когда вы добавляете параметр в запрос, он вступает в брак с какой-то глупой формой, которую нужно открыть. Это означает, что вы не можете использовать запрос для других отчетов, форм или даже в коде.

В конце концов, такой подход приводит к настоящей неразберихе.

И даже если бы вы могли «закрыть» подсказку, какое значение вы все равно хотите указать для параметра? (Вы все равно должны его поставить, верно?).

РЕАЛЬНЫЙ вопрос: КОГДА и ГДЕ вы используете этот запрос? Если запрос используется для формы или отчета, удалите критерии, а затем ПРОЙДИТЕ предложение «где» к данному отчету.

Чтобы открыть отчет, вы можете перейти:

Docmd.OpenReport "rptManagers",acViewPreview

Приведенное выше откроет отчет - без фильтра.

Если вам нужны какие-то критерии, добавьте их, например:

Dim strWhere   as string

strWhere = "Manager = [forms]![frmFA_Management]![Text0]"
Docmd.OpenReport "rptManagers",acViewPreview,,strWhere

Или просто запросите значение, например:

Dim strWhere as string

strWhere = inputbox("Enter manager ")
if strWhere = "" then exit sub

strWhere = "Manager = '" & strWhere & "'"

Docmd.OpenReport "rptManagers",acViewPreview,,strWhere

НАСТОЯЩАЯ прелесть использования предложения «where» в openform / openReport заключается в том, что вы можете добавлять дополнительные параметры (необязательно), и вам не нужно изменять или беспокоиться о запросе, запрашивающем вас.

Скажи:

strWhere = "Manager = 'Joe' and City = 'Edmonton'"
Docmd.OpenReport "rptManagers",acViewPreview,,strWhere

Таким образом, удалив параметры из запроса, вы получите ОГРОМНОЕ увеличение повторного использования. И лучше, теперь вы можете добавлять или игнорировать параметры на лету.

Как только вы добавите формы! Обратившись внутрь запроса, вы довольно сильно уничтожили возможность повторного использования в вашем приложении, поскольку какая-то глупая форма должна быть открыта.

Простым принятием предложения where вы сэкономите массу затрат на разработку, устраните проблему, когда вам не нужен фильтр, и, что еще лучше, получите запрос, который можно повторно использовать во «многих» местах. без какой-то глупой формы необходимости быть открытым. Размещение форм! Однако ссылки в запросе - это БОЛЬШОЙ способ накопить дополнительные часы для выставления счетов - это действительно создает беспорядок и значительно увеличивает расходы. Так что лучше всего удалить формы! ссылка в запросе - и тогда никаких неожиданных подсказок не возникнет.

0 голосов
/ 07 мая 2018

Создать копию запроса.

Открыть копию в SQL представлении.

Замените [Forms]![frmFA_Management]![Text0] на имя параметра по вашему выбору, например:

[Enter value for xx].

...