La condición para la consulta SQL tendría que ser del estilo de:
Código:
where
... and
maquina in ("001", "005", "123")
suponiendo que se seleccionaron las casillas 001, 005 y 123, de manera que el parámetro sería una lista de valores:
Código:
where
... and
maquina in (:valores)
En la prueba que hice ayer con Paradox no me permitió introducir tal tipo de parámetros e ignoro si en Interbase puede realizarse, así que mientras llega un experto en la materia veamos de hacerlo "a pie".
Reconstruyendo la sentencia desde el comienzo yo declararía una constante (o variable según prefieras) así:
Código:
const
fmtSql =
'delete from tabla ' +
'where ' +
'codigo = "%s" and clave = "%s" and revision = "%s" and ' +
'maquina in (%s)'
Aquí la cadena no se pasa directamente al query sino que se le da formato con la función Format:
Código:
Format(fmtSql, [Codigo, Clave, Revision, Maquinas])
donde Codigo, Clave y Revisión son cadenas con los valores provenientes de los Edit (o directamente Edit.Text) y Maquinas es una cadena formada por la lista separada por comas de los valores correspodientes a las casillas seleccionadas. Esta es la parte "pesada" pues para construir tal lista tendrás que recorrer todos los ítemes del CheckListBox y agregar un valor por cada ítem seleccionado:
Código:
var
I: Integer;
begin
Maquinas := '';
for I := 0 to Pred(CheckListBox.Count) do
if CheckListBox1.Checked[i] then
if Maquinas = ''
then Maquinas := QuotedStr(CheckListBox.Items[i])
else Maquinas := Maquinas + ',' + QuotedStr(CheckListBox.Items[i]);
end;
QuotedStr es necesario para introducir las comillas que se requieren alrededor de cada valor.
Con estos valores de Codigo, Clave, Revison y Maquinas el resultado de Format será la cadena que debes pasar a la consulta SQL:
Código:
Query.SQL.Text := Format(...);
// Saludos