Hola,
En Gambas3 la función
Connection.Subst() puede aceptar parámetros sueltos mediante (...)
Esto funciona bien cuando la cantidad de parámetros es fija, pero se vuelve muy engorroso cuando se construyen consultas con
WHERE dinámicos.
En mi caso, los filtros se asignan en tiempo de ejecución a un vector, por ejemplo:
Código:
FiltroX.Add(codigo)
FiltroX.Add(fecha1)
FiltroX.Add(fecha2)
…
ResultX = Conn.Exec(DB.Subst(SqlX, FiltroX)) '<--- actualmente no se puede
Si enviamos el
vector simplificaría mucho el código y evitaría tener que usar
Select Case para cada cantidad de parámetros que hay que enviar al Exec u otros comandos SQL, como en el ejemplo actual:
Código:
Select Case FiltrosX.Length
Case 0
resulado = Conn.Exec(DB.Subst(SqlX))
Case 1
resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0]))
Case 2
resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0],FiltroX[1]))
Case 3
resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0],FiltroX[1],FiltroX[2]))
End Select
Lo ideal es poder enviar directamente un
array a
DB.Subst.
He adjuntado un programa para que tengan una mejor idea de lo que busco.
He publicado una solicitud en el BugTracker aver si lo adaptan.
Gracias por sus posibles sugerencias.