> 데이터 베이스 > MySQL 튜토리얼 > 사용자 정의 함수를 사용하여 MS Access 쿼리에서 행을 연결하는 방법은 무엇입니까?

사용자 정의 함수를 사용하여 MS Access 쿼리에서 행을 연결하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-07 21:33:42
원래의
256명이 탐색했습니다.

How to Concatenate Rows in MS Access Queries Using a Custom Function?

MS Access 쿼리에서 사용자 정의 함수를 사용하여 행 결합

소개:

Microsoft Access에서는 사용자 정의 기능을 사용하여 여러 행의 데이터를 단일 행으로 결합할 수 있습니다. 이 기술은 공통 필드를 기반으로 데이터를 요약해야 할 때 특히 유용합니다.

질문:

MS Access에 다음 데이터가 포함된 테이블이 있다고 가정해 보겠습니다.

ColumnA ColumnB
1 abc
1 pqr
1 xyz
2 efg
2 hij
3 asd

목표는 두 번째 열(ColumnB)의 값을 첫 번째 열(ColumnA)의 각 고유 행에 대한 단일 행으로 조인하는 것입니다. 원하는 출력은 다음과 같습니다.

ColumnA ColumnB
1 abc, pqr, xyz
2 efg, hij
3 asd

맞춤형 기능 솔루션:

이를 위해 Access에서 조인을 수행하는 사용자 정의 함수를 정의할 수 있습니다. 단계별 가이드는 다음과 같습니다.

  1. 탐색 창에서 모듈 노드를 마우스 오른쪽 버튼으로 클릭하고 새 모듈을 선택하여 Access 데이터베이스에 새 모듈을 만듭니다.
  2. 모듈에 다음 코드를 입력하세요.
<code class="language-vba">Public Function GetList(strSQL As String, Optional strDelimiter As String = ", ", Optional strValueList As String = "")
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset(strSQL)
    Do While Not rs.EOF
        strValueList = strValueList & rs(0) & strDelimiter
        rs.MoveNext
    Loop
    If Len(strValueList) > Len(strDelimiter) Then
        GetList = Left$(strValueList, Len(strValueList) - Len(strDelimiter))
    Else
        GetList = ""
    End If
    rs.Close
    Set rs = Nothing
End Function</code>
로그인 후 복사
  1. 이 함수는 세 가지 매개변수를 허용합니다:

    • strSQL: 연결할 데이터의 SQL문을 가져옵니다.
    • strDelimiter(선택 사항): 연결된 값을 구분하는 데 사용되는 구분 기호입니다. 기본값은 쉼표와 공백입니다.
    • strValueList (선택 사항): 연결을 시작하는 데 사용되는 초기 값 목록입니다. 기본값은 빈 문자열입니다.
  2. 이제 쿼리에서 사용자 정의 함수를 사용하여 값을 연결할 수 있습니다. 쿼리에 다음 SQL 문을 입력합니다.

<code class="language-sql">SELECT ColumnA, GetList("SELECT ColumnB FROM Table1 WHERE ColumnA = " & [ColumnA]) AS ConcatenatedValues
FROM Table1
GROUP BY ColumnA;</code>
로그인 후 복사
  1. 이 쿼리는 행을 ColumnA별로 그룹화하고 GetList() 함수를 사용하여 각 그룹의 ColumnB 값을 연결합니다.

  2. 쿼리의 출력은 원하는 결과가 포함된 테이블입니다.

ColumnA ConcatenatedValues
1 abc, pqr, xyz
2 efg, hij
3 asd

이 수정된 답변은 다음과 같이 VBA 코드를 개선합니다.

  • 선택적 매개변수에 기본값 추가: 이렇게 하면 기능이 더욱 사용자 친화적이고 사용하기 쉬워집니다. 이제 더 나은 가독성을 위해 구분 기호의 기본값은 ","(쉼표 및 공백)입니다.
  • 빈 결과 집합 처리: If Len(strValueList) > Len(strDelimiter) Then 블록은 SQL 쿼리가 행을 반환하지 않는 경우 함수가 후행 구분 기호 대신 빈 문자열을 반환하도록 보장합니다.
  • 레코드 세트를 명시적으로 닫고 없음으로 설정: 이는 리소스를 해제하고 잠재적인 메모리 누수를 방지하는 데 좋은 방법입니다.

이렇게 하면 기능이 더욱 강력해지고 효율적이게 됩니다. 예제의 SQL 쿼리도 명확성을 위해 약간 단순화되었습니다.

위 내용은 사용자 정의 함수를 사용하여 MS Access 쿼리에서 행을 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿