2010-03-22 7 views
0

많은 수의 액세스 필드에있는 문자열에서 하이픈을 제거해야합니다. 이 일을하는 가장 좋은 방법은 무엇입니까?액세스 필드에서 영숫자가 아닌 문자 제거

현재 항목이 일반적인 형식은 다음과 같습니다

2010-54-1 
    2010-56-1 
    etc. 

나는이 분야의 오프 쿼리를 추가 실행하기 위해 노력하고있어,하지만 난 항상 쿼리가 실패하는 원인 유효성 검사 오류를 받고 있어요. 나는이 실패의 원인이 항목에있는 hypens라고 생각한다. 그래서 나는 그것을 제거해야한다.

내가 봤는데, 그리고 거기에 vbscript를 사용하여 포맷 가이드의 번호를 볼 수 있지만 어떻게 액세스 VB로 통합 할 수 있는지 모르겠습니다. 그것은 나에게 새로운 : 사전에

감사합니다, 자크

편집 :

그래서, 필자는 단순히 텍스트 몇 가지 값으로 테스트 케이스를 실행합니다. 그들은 작동하지 않습니다, 문제는 하이픈이 아닙니다.

+3

오류가있는 추가 쿼리의 SQL보기를 표시하고 발생하는 오류에 대한 자세한 설명을 제공하십시오. – HansUp

+0

두 번째 @HansUp에서 하이픈이 문제가 아니므로 오류 메시지를 제공해야합니다. –

+0

이 필드의 데이터 유형은 무엇입니까? – Nick

답변

1

샘플 데이터/쿼리를 보지 않고도 하이픈이 실제로 문제가되는지 확신 할 수 없지만 대체 기능을 제거하는 것만으로 충분하다면 (쿼리에서 사용할 수 있음)

예 : http://www.techonthenet.com/access/functions/string/replace.php

당신이 이런 식으로, 당신은 당신의 쿼리에서 호출 할 수있는 VBA 기능을 만들 수 있습니다이 (또는 여러 번 호출 교체)보다 좀 더 진보 된 문자열 조작을해야하는 경우 :

http://www.pcreview.co.uk/forums/thread-2596934.php

이렇게하려면 액세스 프로젝트에 모듈을 추가하고 쿼리를 사용할 수 있도록 함수를 추가하면됩니다.

+0

불행히도 찾기/바꾸기 기능은 최대 65,000 개의 항목에 대해서만 작동합니다. 최소 10 배가됩니다./ –

+0

그 번호는 어디서 구합니까? 최근에 액세스를 많이 사용하지는 않았지만 함수가 작동 할 행 수에 관한 그러한 제한을 생각해 보지 마십시오. (아마도 더 지식이 많은 사람이 액세스가 도움이 될 것입니다.) 데이터 집합을 사용하거나 쿼리를 사용합니까? – AlexCuse

+0

나는 그것을하고있어! 클립 보드는 그 이상의 값을 처리하지 않습니다. 하나의 필드를 다른 테이블에 추가하려고하면 아주 간단한 작업을 수행하고 있지만 모든 항목에서 일관되게 유효성 검사 오류가 발생합니다. 나는 vb 함수를 아직 시도하지 않았다. 솔직히 말해서, 내가 익숙한 것이 아니기 때문이다. –

0

영문자를 제외한 모든 문자를 제거 할 때 사용하는 기능이 있습니다. 단순히 쿼리를 만들고 수정하려는 필드의 쿼리에서 함수를 사용하기 만하면됩니다. 찾기 및 바꾸기보다 훨씬 빠르게 실행됩니다.

Public Function AlphaNumeric(inputStr As String) 
    Dim ascVal As Integer, originalStr As String, newStr As String, counter As Integer, trimStr As String 
    On Error GoTo Err_Stuff 
    ' send to error message handler 
    If inputStr = "" Then Exit Function 
    ' if nothing there quit 
    trimStr = Trim(inputStr) 
    ' trim out spaces 
    newStr = "" 
    ' initiate string to return 
    For counter = 1 To Len(trimStr) 
     ' iterate over length of string 
     ascVal = Asc(Mid$(trimStr, counter, 1)) 
     ' find ascii vale of string 
     Select Case ascVal 
      Case 48 To 57, 65 To 90, 97 To 122 
       ' if value in case then acceptable to keep 
       newStr = newStr & Chr(ascVal) 
       ' add new value to existing new string 
     End Select 
    Next counter 
    ' move to next character 
    AlphaNumeric = newStr 
    ' return new completed string 
Exit Function 
Err_Stuff: 
    ' handler for errors 
    MsgBox Err.Number & " " & Err.Description 
End Function 

그냥 코드에 대한 링크를 발견, 광산 비슷합니다. 이 옵션이 다른 것일뿐입니다.

관련 문제