2016-04-07 34 views
-2

Bir SQL ifadesi oluşturmak için aşağıdaki dizeyi nasıl birleştirebilirim?Dizenin sonunda dizeyle doğru dizgi birleştirmek nasıl?

Dim sql = "SELECT * FROM users with (nolock) WHERE" 

    Dim sql2 = "(ownerID = '" 

    For Each item In arrExcelValues 

     sql2 = sql2 + item + "' or renterID = '" + item + "') or" 

    Next 

Buna benzemek için ihtiyacım var; SELECT * FROM users with (nolock) WHERE (ownerID = '12554' or renterID = '12554') or (ownerID = '32433' or renterID = '32433')

Dizinin sonuna ulaştığında, "veya" içermez. Herhangi bir yardım için teşekkürler.

Ben sorunuza verdiğim son cevabı modifiye olabilirdi
+0

arrExcelValues ​​nedir bunu yaptık ama? –

+0

, 551 kullanıcı kimliğini tutan bir dizi - excel'den bu değerleri okuyor, hata ayıkladı ve hepsi –

+1

dizisinde. Kullanıcı girişini bir WHERE maddesine birleştiriyor gibi görünüyor. Bunun yerine paramaterize bir sorgu oluşturmak ister misiniz? '[zorunlu xkcd] (https://xkcd.com/327/) –

cevap

1

...

see here Sana

Sub test() 

    Dim strQuery As String 
    Dim strVals As String 

    Dim rngTarget As Range 
    Set rntTarget = Range("A1:A7") 

    Dim varArr 
    Dim lngRow As Long 
    Dim myArray() 
    varArr = rntTarget.Value2 

    ReDim myArray(1 To UBound(varArr, 1)) 

    For lngRow = 1 To UBound(varArr, 1) 
     myArray(lngRow) = varArr(lngRow, 1) 
    Next 

    strVals = "('" & Join$(myArray, "','") & "') " 

    strQuery = "SELECT * FROM users WHERE " 

    For lngRow = LBound(myArray) To UBound(myArray) 
     strQuery = strQuery & "(owner = '" _ 
      & myArray(lngRow) + "' or renterID = '" _ 
      & myArray(lngRow) & "') or " 
    Next 

    strQuery = Left(strQuery, Len(strQuery) - 4) 

    Debug.Print strQuery 

End Sub 
+0

Teşekkürler mükemmel çalıştı! –