Ver Mensaje Individual
  #4  
Antiguo 26-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita