Cita:
Iniciado por u_goldman AH pues lo mas sencillo es cotrolarlo todo en cada if
Cita:
Iniciado por JuanRAPerez
Código:
luego cortas el ultimo and
SLQAnexo = mid(SLQAnexo,1,len(SLQAnexo) - 4)
La otra vez me topé con un problema similar y lo más
sencillo que encontré fue meter los
parámetros fijos al comienzo. Luego, el resto son puros IF's. La sentencia SQL que usé, a manera de ejemplo:
Código:
SQL = "SELECT Ministerios.*, Programas.* FROM Ministerios INNER JOIN Programas ON Ministerios.ID_MINISTERIO = Programas.ID_MINISTERIO WHERE Programas.Vigente = -1 "
If id_ministerio <> "0" then
SQL = SQL & " AND Ministerios.Id_Ministerio = " & id_ministerio
End if
If str_PROG <> "" then
SQL = SQL & " AND (Ministerios.MINISTERIO Like '%" & str_PROG & "%' OR Programas.ORGANISMO Like '%" & str_PROG & "%' OR Programas.Programa Like '%" & str_PROG & "%' OR Programas.Objetivos Like '%" & str_PROG & "%' OR Programas.Bienes_Servicios Like '%" & str_PROG & "%')"
End if
If id_palabraclave <> "0" then
SQL = SQL & " AND Programas.ID_PN IN(SELECT programas_palabrasclaves.ID_PN FROM programas_palabrasclaves WHERE programas_palabrasclaves.id_palabraclave=" & id_palabraclave & ")"
End if
SQL = SQL & " ORDER BY Ministerios.Jerarquia, Organismo"
¿Que no tenés
parámetros fijos para usar al comienzo? Pues sí los tenés!!!:
Código:
SQL = "SELECT * FROM tu_tabla WHERE 1 = 1 "
if...
SQL = SQL & " AND otro campo = " & una_variable
end if
(de hecho, yo me había olvidado que debía mostrar sólo los registros donde el campo Programas.Vigente fuera TRUE, así que le coloqué el
WHERE 1=1. Luego lo quité porque incorporé
WHERE Programas.Vigente = -1)