나는 다음과 같은 값이 포함되어 내 Access 데이터베이스의 필드가 24,25,152
, 128,152
, ,113
, 113
및 널 (null).
필드에 값이 하나만있는 경우 첫 번째 값이 내 출력이되기를 원하고 ( 113
for ,113
및 113
) 둘 이상의 값이있는 경우 마지막 값이 내 출력이되기를 원합니다 ( 152
for 24,25,152
및 128,152
).
현재 필드에있는 올바른 쉼표 / 값 수를 설명하기 위해 하드 코딩 된 쿼리에 의해 호출되는 사용자 정의 함수가 있습니다. 앞으로는 더 많은 쉼표가있을 것이므로이를 고려하고 출력이 단일 열에 표시되기를 원합니다 (각 쉼표 뒤에 값당 하나의 열이있는 것과는 반대로).
이 게시물 에서 가져온 사용자 정의 함수에 대한 VBA 코드는 다음과 같습니다 .
Function mySplit(sMyText As String, sDelim As String, lIndx As Long) As String
On Error GoTo Error_Handler
mySplit = Split(sMyText, sDelim)(lIndx)
Error_Handler_Exit:
On Error Resume Next
Exit Function
Error_Handler:
If Err.Number = 9 Then
mySplit = ""
Else
MsgBox "The following error has occured" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: mySplit" & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical, "An Error has Occured!"
End If
Resume Error_Handler_Exit
End Function
다음은 쿼리입니다.
SELECT Field, mySplit([field].[table],",",0) AS 1, mySplit([field].[table],",",1) AS 2, mySplit([field].[table],",",2) AS 3, Val(IIf([3]<>"",[3],IIf([2]<>"",[2],IIf([1]<>"",[1])))) AS [Value]
FROM Table;
이상적으로는 아래 이미지에서 "값"필드 (초록색으로 표시)와 같은 단일 필드를 사용하는 것이 좋습니다.
현재 값 필드가 있음을 중첩 한 무리의 if
문은보고 1
, 2
및 3
열. 이 코드를 수정하여 구분 기호를 계산 한 다음 각 구분 기호를 반복하고 첫 번째 값 (하나만있는 경우)과 마지막 값 (하나 이상있는 경우)을 취해야한다는 것을 알고 있지만 방법을 잘 모르겠습니다. 그것을 달성하기 위해 가십시오.
어떤 도움이라도 대단히 감사하겠습니다.
편집하다
이 시도.
값을 분할하고 배열의 마지막 요소를 반환하십시오. 값이 null이면 빈 문자열을 반환합니다.
Public Function SplitToLast(Value As Variant) As String
On Error GoTo Trap
If IsNull(Value) Then GoTo Leave
Dim arr As Variant
arr = Split(Value, ",")
SplitToLast = arr(UBound(arr))
Leave:
On Error GoTo 0
Exit Function
Trap:
MsgBox Err.Description, vbCritical
Resume Leave
End Function
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다