En este post no voy a hablar de como usar SQL y supongo que sólo interesará a aquellos lectores que ya hacen algún uso de este lenguaje.
En la nota mencionada Matt publica un código de Vba para crear la lista de valores de un operador IN (devuelve aquellos registros cuyo campo indicado coincide con alguno de una lista).
Para usar este operador hay que crear una lista de valores, texto o números, separados por comas.
Para usar este operador hay que crear una lista de valores, texto o números, separados por comas.
Una de las formas de hacerlo es usando la función CONCATENAR, pero cuando se trata de varios miembros a unir, la tarea se vuelve irritántemente tediosa.
Así que, como Matt, también yo he creado un código que uso en mi trabajo diario y que hasta ahora no había pensado en publicarlo. El código es el siguiente
Sub cadena_for_SQL()
Dim cell As Range, strTmp As String, string_for_SQL As String
Dim SQLString As DataObject
Dim Answ
Answ = MsgBox("Yes para texto - No para numeros", vbYesNo, "SQL String")
Set SQLString = New DataObject
For Each cell In Selection
If Answ = vbYes Then
strTmp = strTmp & "'" & cell.Value & "',"
Else
strTmp = strTmp & cell.Value & ","
End If
Next cell
string_for_SQL = "IN " & "(" & Left(strTmp, Len(strTmp) - 1) & ")"
With SQLString
.SetText string_for_SQL
.PutInClipboard
End With
End Sub
Dim cell As Range, strTmp As String, string_for_SQL As String
Dim SQLString As DataObject
Dim Answ
Answ = MsgBox("Yes para texto - No para numeros", vbYesNo, "SQL String")
Set SQLString = New DataObject
For Each cell In Selection
If Answ = vbYes Then
strTmp = strTmp & "'" & cell.Value & "',"
Else
strTmp = strTmp & cell.Value & ","
End If
Next cell
string_for_SQL = "IN " & "(" & Left(strTmp, Len(strTmp) - 1) & ")"
With SQLString
.SetText string_for_SQL
.PutInClipboard
End With
End Sub
Empezamos por seleccionar el rango que contiene los valores a integrar a la lista del operador IN y
luego activamos la macro; aparecerá un mensaje que nos pide determinar si los valores deben integrarse como texto o como números
Elegimos la opción deseada y la macro copiará la lista al Clipboard. De esta manera todo lo que nos queda por hacer es pegar la lista en el lugar deseado (por lo general, el editor de SQL).
Este video muestra el uso del código en sus dos versiones (texto y valores numéricos)