SQL как Источник Управления для поля Access Form

За исключением valuetypes, которые используются непосредственно и различными другими во время выполнения в целях PInvoke, необходимо только использовать valuetypes в 2 сценариях.

  1. , Когда Вы должны скопировать семантику.
  2. , Когда Вам нужна автоматическая инициализация, обычно в массивах этих типов.
9
задан Jambobond 21 August 2009 в 13:41
поделиться

4 ответа

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

9
ответ дан 4 December 2019 в 13:48
поделиться

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

=fnName(sVariable, iVariable)

Public Function fnName( _
    sVariable as String, _
    iVariable as Integer _
    ) As String

On Error GoTo Err_fnName

    Dim con As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim sSQL As String

    sSQL = ""

    Set con = Access.CurrentProject.Connection
    Set rst = New ADODB.Recordset

    rst.Open sSQL, con, adOpenDynamic, adLockOptimistic

        If rst.BOF And rst.EOF Then

            'No records found
            'Do something!

        Else

            'Found a value, return it!
            fnName = rst(0)

        End If

    rst.Close
    Set rst = Nothing

    con.Close
    Set con = Nothing

Exit_fnName:

    Exit Function

Err_fnName:

    Select Case Err.Number
    Case Else
        Call ErrorLog(Err.Number, Err.Description, "fnName", "", Erl)
        GoTo Exit_fnName
    End Select

End Function
2
ответ дан 4 December 2019 в 13:48
поделиться

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

Private Sub Form_Current()
''Needs reference to Microsoft DAO 3.x Object Library
Dim db As Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim strResult  As String


strSQL = "SELECT ci.IssueDesc FROM tblCaseIssues ci " _
       & "INNER JOIN tblCaseNewHS_Issues cni ON ci.ID = cni.IssueID " _
       & "WHERE cni.HS_ID = 81"

Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL)

If rs.RecordCount > 0 Then
    Do While Not rs.EOF
        strResult = strResult & ", " & rs!IssueDesc
        rs.MoveNext
    Loop

    strResult = Mid(strResult, 3)
Else
    strResult = "Not found"
End If

Me.TextBoxName = strResult

End Sub
2
ответ дан 4 December 2019 в 13:48
поделиться

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

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

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

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

2
ответ дан 4 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: