2010-05-17 5 views
1

Je souhaite mettre à jour mon code pour inclure le contenu d'une cellule, S3. En ce moment, la cellule a la valeur de « Test, Test, testé » et la partie pertinente de la requête ressemble à ceci:Ajouter le contenu de la cellule à la requête VBA

SELECT * FROM dbo.Total WHERE ID = " & TextBox1.Text & " And Source IN (What do I put in here?) 

Votre aide est très appréciée

+0

Quelle est la source? – wcm

+0

C'est une colonne dans ma table Total. Pas important. Je veux juste savoir ce qui doit aller dans le(). – Daniel

Répondre

1

Que diriez-vous quelque chose comme ça?

Dim someSQL As String 
someSQL = "SELECT * FROM dbo.Total WHERE ID = " & TextBox1.Text & _ 
      " And Source IN (" & Sheet1.Cells(3, 19) & ")" 

Remplacez le nom de feuille approprié pour "Sheet1" si nécessaire.

1

Vous devrez analyser dehors, couper, dans la cellule et échapper à citer chacune des 3 valeurs pour obtenir:

SELECT * FROM dbo.Total WHERE ID = 'bob''s' And Source IN ('Test','Testing','Tested') 

En utilisant

Dim someSQL As String 
someSQL = "SELECT * FROM dbo.Total WHERE ID = '" & escape(TextBox1.Text) & "' And Source IN (" & splitCell("s3") & ")" 

Function splitCell(addr As String) As String 
    Dim v() As String 
    Dim i As Long 
    v = Split(Range(addr).Value, ",") 
    For i = 0 To UBound(v) 
     v(i) = "'" & escape(trim$(v(i))) & "'" 
    Next 
    splitCell = Join(v, ",") 
    If (Len(splitCell) = 0) Then splitCell = "''" 
End Function 

Function escape(sIn As String) As String 
    //you should use a prepared statement instead 
    escape = Replace$(sIn, "'", "''") 
End Function 
Questions connexes