2010-03-02 5 views
1

내가 작업하는 ms 액세스 테이블 중 하나에 설정된 크기의 텍스트 필드가 있습니다. 이 필드의 끝 부분에는 상황에 따라 약간의 추가 코드가 있습니다. 이러한 코드 중 하나를 제거하는 방법을 찾고 있지만 마지막 부분이 필드 최대 크기로 잘린 경우에도 마찬가지입니다.MS-Access : "bracket"바꾸기

"field"필드와 "abc-longcode"를 제거하려는 코드를 호출 해 보겠습니다.

대체 SQL 함수를 abc-longcode 문자열과 함께 사용하면 코드가 완료 될 때만 쿼리가 작동합니다.

불완전한 코드 작업을 위해 업데이트 쿼리 (내 필드 끝에이 특정 코드를 제거하는 것)를 원한다면 어떻게 ms-SQL로 변환 할 수 있습니까?

은 제거해야합니다 (또는 정확히 말하면 ""로 대체) 다음의 모든 (물론 예, 아니 실제 코드를) 다음과 같습니다

abc-longcode 
abc-longcod 
abc-longco 
abc-longc 
abc-long 
abc-lon 
abc-lo 
abc-l 

는 분명 내가 여러 쿼리 것을 할 수 있었다. 각 하나는 예상되는 잘린 코드 중 하나를 대체하지만 ... 최적의 소리로 들리지 않습니다.

또한 필드가 충분히 커서 모든 코드를 가져올 수있는 경우 마지막에 여분의 세부 사항이있을 수 있으므로 계속 유지해야하므로 "abc-l"을 찾아 삭제할 수 없습니다 다음 내용 : \

이 쿼리 (또는 더 좋은 방법을 찾을 수없는 경우 쿼리)는 .mdb 데이터베이스에 직접 보관됩니다.

ms-sql 쿼리 외부에서이 작업을 수행 할 수있는 여러 가지 방법이 있다고 생각되지만 도움이되지 않습니다.

어떤 도움이 필요합니까? 감사합니다. .

답변

1

주어진 사례 { "abc-longcode", ... "abc-l"} 중 하나를 대체 할 사용자 지정 VBA 바꾸기 메서드를 작성할 수 있습니다. 이는 본질적으로 하나의 쿼리 만 제외하고는 "여러 쿼리"아이디어와 동일한 압정입니다. 내 VBA 녹슨이지만, 뭔가 같은 :

public function ReplaceCodes(str as string) as string 
    dim returnString as string 

    returnString = str 
    returnString = replace(returnString,"abc-longcode","") 
    // ... etc... 

    ReplaceCodes = returnString 
end function 

나는 대체 :

+0

나는 순전히 SQL 방식을 선호하는 것이 이 일을 할 수 있다고 생각하지 않습니다. 이 답변은 내가 찾고있는 동일한 기능에 다른 코드를 넣을 수있게 해줍니다. 예 : def-longcode, def-longcod 등 ... 도움을 주셔서 감사합니다! –

+0

순수한 SQL 대안은 쿼리에서 대체 함수의 긴 시퀀스입니다. 읽기 쉽지 않고 관리하기가 어려우며 추한 것입니다.접근은 이미 충분히 추악하다 :) –

0

을 나는이 첫 번째를 얻기 위해 split 기능을 사용하여이 작업을 수행하기 위해 내 자신의 사용자 정의 기능을 사용하는 것이 잘못에 대한 매개 변수의 순서를 입수했습니다 수 있습니다 문자열의 일부 그런 다음 업데이트 쿼리에서 해당 값을 사용할 수 있습니다.

Public Function FirstPart(thetext As String) As String 
    Dim ret As String 
    Dim arrSplitText As Variant 

    arrSplitText = Split(thetext, "-") 
    ret = arrSplitText(0) 

    FirstPart = ret 
End Function 
0

당신이 사용할 수 :

Left(FieldX,InStr(FieldX,"abc-")-1) 

편집을 다시 설명

공백이나 다른 표준 구분 기호가있는 경우 :

IIf(InStr(InStr(FieldX, "abc-"), FieldX, " ") = 0, Left(FieldX, InStr(FieldX, "abc-") - 1), Replace(FieldX, Mid(FieldX, InStr(FieldX, "abc-"), InStr(InStr(FieldX, "abc-"), FieldX, " ") - InStr(FieldX, "abc-")), "")) 
+0

나는이 순수한 SQL 특성 때문에이 대답을 좋아하지만이 코드의 문제점은 내 longcode가 필드에서 완료되고 필드의 끝에 몇 가지 추가 세부 사항이있다면이 것이 유지되지 않는다는 것이다. 추가 세부 사항. 즉, 내가 찾고있는 것부터 시작하여 모든 것을 제거합니다. –

+0

샘플 데이터를 원하는대로 만들지 못해서 질문을 잘 정의했다고 생각하지 않습니다. 그리고 지금까지 볼 수 있듯이 샘플 데이터에는 삭제하려는 항목 다음에 데이터가 포함되어 있지 않으므로 해결책을 찾는 것이 좋습니다. –

+0

@David W Fenton eh? :) – Fionnuala

관련 문제