2013-05-22 12 views
0

Access 2010에서 각 세트의 번호가 6이고 항상 9자인 문자열의 숫자를 그룹화하는 VB 코드 또는 식을 만드는 데 도움이 필요합니다. 문자열의액세스 문자열에서 숫자 추출

예 :

  1. 주문 확인 # 638917872-001 부분 주문/$ 23.74가받은

  2. 주문 확인 - 여러 주문 - 주문 확인 # 639069135-001/$ 297.45 - 주문 확인 # 639069611 -001/$ 32.08

나는 모든 알파 문자를 제거하기 위해 VB 코드를 사용하고 있지만, 그건 그냥 날 잎 : 문자열에서 문자열 1

  • 639069135001297456390696110013208에서

    • 6389178720 2.

    내가 처음 생각하는 주문 번호는 6 자로 9 자입니다. 어떤 도움이라도 대단히 감사하겠습니다. 쉬운 방법이 있다는 것을 알고 있습니다.

  • +0

    6 또는 6을 시작합니까? – dbasnett

    답변

    2

    VB.NET 솔루션 : 당신이 당신의 결과 문자열에서 첫 9 개 숫자가 필요한 경우

    당신이 String.Substring을 사용할 수, 즉 :

    Dim numberString as String = "6389178720" 
    Dim newString As String = numberString.Substring(0, 9) 
    MessageBox.Show(newString) 
    

    은 638,917,872

    MSDN Link

    보여줍니다

    편집 :

    아마도 y OU는 정규식을 사용하고자하는 것 - 이런 일이 아마 당신은 시작할 수 있습니다 :

    Private Sub Input() 
        Dim numberString As String = "Order Confirmation # 638917872-001 Partial Order/$23.74 RECEIVED" 
        Dim numberString2 As String = "Order Confirmation - Multiple Orders - Order Confirmation#639069135-001/$297.45 - Order Confirmation#639069611-001/$32.08" 
    
        GiveMeTheNumbers(numberString) 
        GiveMeTheNumbers(numberString2) 
    End Sub 
    
    Function GiveMeTheNumbers(ByVal s As String) As String 
        Dim m As Match = Regex.Match(s, "6\d{8}") 'get 9 digit #s begin w/6 
        Do While m.Success 
         MessageBox.Show(m.Value.ToString) 
         m = m.NextMatch() 
        Loop 
        Return False 
    End Function 
    

    결과 - MessageBox1 : 638917872 MessageBox2 : 639069135 MessageBox3 : 639069611

    +0

    문자열 1에서 처음 9 개의 숫자가 필요하지만 6부터 시작하는 문자열 2의 다른 숫자 세트가 필요합니다. 최종 사용자는 제목을 적절하게 형식화하지 않고 제목 줄에 두 개의 주문 번호를 계속 입력합니다. 2 개의 분리 된 전자 우편을 보내는 것에 반대했다. 나는 매달이 이메일 중 1000 통을 받았으며 주문 확인을 받기 위해 잡초를 제거하는 데 3 주가 걸렸습니다.6에서 시작하여 9 문자를 계산하는 숫자 그룹으로 문자열을 추출하는 코드 또는 표현식이 있습니까? –

    +0

    이 코드를 사용하려고하는데 구문 오류가 계속 발생합니다. 2010 년 시각 기본을 사용하고 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? –

    +0

    이것은 질문 태그 당 VB.net 코드의 솔루션입니다. -이 코드를 Access의 VBA에서 사용하려는 경우 작동하지 않으며 http://stackoverflow.com/questions/8362848/을 확인하십시오. using-regexp-to-replace-form-control-values-into-msaccess – maxedev

    0

    이 기능을 사용할 수 있습니다 ... VB.NET에서 테스트

    Function NumOnly(ByVal s As String) As String 
        sRes = "" 
    
        For x As Integer = 0 To s.Length - 1   
         If IsNumeric(s.Substring(x, 1)) Then sRes = sRes & s.Substring(x, 1) 
        Next 
        return sRes 
    End Function 
    
    MS-액세스

    리틀 modif

    0

    OK, 그는 VBA 솔루션입니다. 참조에 Microsoft VBScript 정규식을 추가해야합니다.
    이것은 찾은 9 자리 숫자와 일치하며 #s 주문 문자열 배열을 반환합니다.

    Function GetOrderNum(S As String) As String() 
        Dim oMatches As Object 
        Dim aMatches() As String 
        Dim I As Integer 
        Dim RE As Object 
        Set RE = CreateObject("vbscript.regexp") 
        ReDim aMatches(0) 
        RE.Pattern = "\d{9}" 
        RE.Global = True 
        RE.IgnoreCase = True 
        Set oMatches = RE.Execute(S) 
    
        If oMatches.Count <> 0 Then 
        ReDim aMatches(oMatches.Count) 
         For I = 0 To oMatches.Count - 1 
         aMatches(I) = oMatches(I) 
         Next I 
        End If 
        GetOrderNum = aMatches 
    End Function