SQL как источник управления для поля формы доступа - PullRequest
9 голосов
/ 21 августа 2009

Есть ли способ заполнить значение текстового поля формы доступа с помощью SQL?

Я прочитал, что невозможно просто ввести SQL в качестве источника управления. Это правда?

спасибо за любую помощь:)

- изменить -

Мне нужно выполнить этот запрос;

SELECT tblCaseIssues.IssueDesc FROM tblCaseIssues INNER JOIN tblCaseNewHS_Issues ON tblCaseIssues.ID = tblCaseNewHS_Issues.IssueID WHERE(tblCaseNewHS_Issues.HS_ID = 81))

Ответы [ 6 ]

9 голосов
/ 21 августа 2009

Уверен, что это настоящий SQL, но вы можете использовать функцию:
=DLookUp("field_name","table_name","any_fieldname = 'value'")

2 голосов
/ 22 августа 2009

Просто возьмите SQL-запрос и сохраните его как запрос.

Затем в текстовом поле просто поместите:

= (dlookup («IssuesDesc», «имя запроса»))

Я в довольно большой растерянности относительно всех этих постеров, предлагающих вздохи кода там, где они вообще не нужны. Просто сохраните свой sql как запрос, а затем используйте функцию dlookup () в качестве источника данных текстового поля, и все готово.

2 голосов
/ 22 августа 2009

Возможно, проще всего использовать комбинированный список и установить источник строки в своем запросе, или же DAO является родным для Access.

2 голосов
/ 21 августа 2009

Вы можете установить источник управления вашего поля на имя функции.Эта функция может легко выполнить ваш SQL и / или передать переменную.Вот мой простой пример для функции, которая выполняет оператор SQL в наборе записей и возвращает первое значение.В моем мире я обычно включаю очень конкретное предложение where, но вы наверняка можете сделать любую из этих функций более надежной для ваших нужд.

0 голосов
/ 22 февраля 2017

Я создал следующую функцию, чтобы решить эту проблему. Мне нравится это решение, потому что вам не нужно иметь дело с сохраненными запросами, забивающими вашу панель навигации или длинными обходными путями.

    Public Function DAOLookup(SQLstatement As String)
    'once you are finished with your SQL statement, it needs to be 
    'formatted for VBA and it also needs to be on one line.
    'example, you would set the control source of a text box to the following
    '=DAOLookup("Select ls_number FROM FROM ls INNER JOIN ls_sort ON ls.ls_id = ls_sort.ls_id WHERE ls_sort.number =" & forms!frmMenu!combo_sort &  ";")
    'Please note, this function only work for single column single row sql statements
    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = CurrentDb
    Set rs = db.OpenRecordset(SQLstatement)
    If Not rs.BOF Then rs.MoveFirst
    If rs.BOF And rs.EOF Then Exit Function
    DAOLookup = rs(0)
    rs.Close
    Set rs = Nothing
    db.Close
    Set db = Nothing
    End Function

Так я объяснил своему боссу. «Вы можете использовать функцию DLookUp () в качестве источника управления текстового поля. Почему бы просто не написать функцию, выполняющую запрос, и использовать функцию в качестве источника управления? Попробуйте, это исправило мою ситуацию.

0 голосов
/ 22 декабря 2016
Private Sub Form_Load()
    Me.Text0 = CurrentDb.OpenRecordset("SELECT COUNT(name) AS count_distinct_clients FROM (SELECT DISTINCT name FROM Table1 WHERE subject='Soc')  AS tmp;").Fields(0)
End Sub
...