ms 액세스 또는 이와 유사한 group_concat 함수가 있습니까?ms-access에 group_concat 함수가 있습니까?
답변
일반 솔루션 (another is by Allen Browne)이 필요하거나 현재 용도로만 필요하면 스스로에게 문의해야합니다. 당신이 정말로 이것을 한 번만 필요로한다면, 쉬운 방법을 택하십시오.
VBA 코드의 목록을 연결할 때 오랫동안 액세스 전문가 인 Trevor Best가 가르쳐 준 트릭을 활용하면 모든 값의 시작 부분에 구분 기호를 붙인 다음 Mid ()을 떼어냅니다. 대신 자식 레코드를 통해 루프 내부 이런 :
If Len(strOutput) = 0 Then
strOutput = NewValue
Else
strOutput = strOutput & ", " & NewValue
End If
... 루프 내부에 이것을 사용 :
strOutput = strOutput & ", " & NewValue
... 그리고 당신은 루프를 종료 할 때, 선두 구분 기호를 벗겨 :
strOutput = Mid(strOutput, 3)
이것은 장소 전체에 영향을 미치고 모든 호스트 컨텍스트에서 연결을 위해 코드를 단순화합니다.
번호 액세스에는 GROUP_CONCAT 기능이 없습니다. 그러나 SQL 문을 포함하는 문자열을 전달하고 이에 상응하는 기능을 사용할 수 있도록 VBA 함수를 만들 수 있습니다 (권장하지는 않지만 가능합니다). 내 자신의 개인 뒤로 기계를 촬영
, 여기에 공룡이 지구를 지배했을 때 다시 쓴 일부 코드는 다음과 같습니다
Public Function ListQuery(SQL As String _
, Optional ColumnDelimiter As String = " " _
, Optional RowDelimter As String = vbCrLf) As String
'PURPOSE: to return a combined string from the passed query
'ARGS:
' 1. SQL is a valid Select statement
' 2. ColumnDelimiter is the character(s) that separate each column
' 3. RowDelimiter is the character(s) that separate each row
'RETURN VAL:
'DESIGN NOTES:
Const PROCNAME = "ListQuery"
Const MAXROWS = 100
Const MAXCOLS = 10
Dim oConn As ADODB.Connection
Dim oRS As ADODB.Recordset
Dim oField As ADODB.Field
Dim sRow As cString
Dim sResult As cString
On Error GoTo ProcErr
Set sResult = New cString
Set sRow = New cString
Set oConn = GetADOConn()
sResult.Clear
Do Until oRS.EOF
sRow.Clear
For Each oField In oRS.Fields
With sRow
If .Length > 0 Then
.Append ColumnDelimiter
End If
.Append Nz(oField.Value)
End With
Next oField
sRow.Trim
If sRow.Length > 0 Then
With sResult
.Append sRow
.Append RowDelimter
End With
End If
oRS.MoveNext
Loop
oRS.Close
oConn.Close
With sResult
If .Right(Len(RowDelimter)).Value = RowDelimter Then
.Length = .Length - Len(RowDelimter)
End If
End With
FunctionResult:
ListQuery = sResult.Value
CleanUp:
Set sResult = Nothing
Set sRow = Nothing
Set oField = Nothing
Set oRS = Nothing
Set oConn = Nothing
Exit Function
ProcErr:
' logging code...
Resume CleanUp
End Function
GetADOConn
함수는 현재 데이터베이스 연결을 검색하는 중앙 집중화 된 기능입니다. cString
은 .NET의 StringBuilder
클래스의 동작을 모방 한 클래스이지만 .NET이 TLD 및 마케팅 과대 광고 이외의 것이기 오래 전에 작성되었습니다. VBA의 내장 문자열 연결은 느려질 것이므로 StringBuilder
클래스가 필요합니다. 부분적으로 수정 한 원래 코드는 상수가 모두 사용되는 행과 열 수에 대한 제한을가집니다.
Access 용 코드를 작성할 때 ADO는 SQL Server와의 상호 작용을 제외하고는 거의 죽기 때문에 DAO에서 작성하는 것이 더 합리적입니다. –
@ David-W-Fenton - 글쎄요, DAO도 꽤 죽어 있다고 주장 할 수 있지만 요점을 이해합니다. 이 코드는 DAO에서 쉽게 변경할 수 있습니다. IIRC, 그 코드의 날짜는 97 년에 언젠가 였으므로, 당시 ASP 클래식을 계속해서 사용하고 있었기 때문에 Access에서 ADO를 도청하고있을 수도있었습니다. – Thomas
DAO는 A2007과 A2010에서 ACE에 대한 변경과 함께 변경 및 개선 사항을 얻는 Access의 적극적으로 개발 된 구성 요소이므로 죽은 것이라고 주장 할 방법이 없습니다. Access에서 사용할 수없는 ADO.NET에 의해 완전히 대체 된 ADO classic입니다 (적어도 현재 시점이 아님). –
Duane Hookum (Microsoft MVP)이 원하는 것을 수행 할 수 있다고 주장하는 this post을 발견했습니다. 나는 그것을 시험하지 않았다. 그런데
, 당신이 관심이 경우, 이것은 내가 그것을 발견하는 방법입니다
먼저 검색 : group_concat accessthis answer하지만 the link was broken으로 this post에 저를지도한다.
그런 다음 답변을 연결하려고 시도한 내용을 검색 한 후 다시 찾았습니다 : site:http://www.rogersaccesslibrary.com/ concatenate.
하나 개의 값으로 그룹화 여러 값에 대한 액세스 기능이 있습니다 (사용자 정의 집계 것 같아요.) 링크는 http://www.rogersaccesslibrary.com/Otherdownload.asp?SampleName='Generic%20Function%20To%20Concatenate%20Child%20Records'
하지만 사이트는 지금 다운. 당신이 href를 google하는 경우에, 당신은 많은 referneces 및보기를 찾아 낼 것이다.
- 1. sqlite group_concat with group_concat
- 2. GROUP_CONCAT 쉼표로 구분 MySQL의
- 3. MySQL : GROUP_CONCAT 값 정렬
- 4. mysql, group_concat 사용
- 5. MySQL의 GROUP_CONCAT : 출력 포맷
- 6. group_concat 쿼리 성능
- 7. 여러 하위 쿼리의 GROUP_CONCAT?
- 8. 그룹화가 추가 된 GROUP_CONCAT?
- 9. MySQL의 GROUP_CONCAT (쿼리)
- 10. group_concat 여러 번?
- 11. 슬로우 Group_concat 쿼리
- 12. SQL GROUP_CONCAT + SUM + AVG
- 13. Mysql Group_Concat 함수
- 14. group_concat 질문 (mysql)
- 15. MySQL의 GROUP_CONCAT 문제
- 16. MySQL의 GROUP_CONCAT 두통
- 17. group_concat 그룹이 누락되었습니다.
- 18. GROUP_CONCAT 질문을 사용하는 JSON VIEW
- 19. WHERE 절에서 MYSQL GROUP_CONCAT 사용
- 20. MYSQL 함수 및 GROUP_CONCAT 문제
- 21. 크로스 PDO 드라이버 호환 GROUP_CONCAT?
- 22. ExtJS에 map() 함수가 있습니까?
- 23. 파이썬에는 "causes_exception()"함수가 있습니까?
- 24. VBScript에 substring() 함수가 있습니까?
- 25. PL/SQL 함수가 있습니까?
- 26. android에 atomic_add() 함수가 있습니까
- 27. jQuery에 onAvailable() 함수가 있습니까?
- 28. strstr에 반대 함수가 있습니까
- 29. 컴퓨터간에 콜백 함수가 있습니까?
- 30. java에 인라인 함수가 있습니까?
+1 : 행운의 행운 –