Ver Mensaje Individual
  #2  
Antiguo 02-06-2005
_fede _fede is offline
Miembro
 
Registrado: jun 2005
Posts: 12
Reputación: 0
_fede Va por buen camino
Utilización de parámetros en Delphi

Hola:

Como REGLA GENERAL Query.Open se usa para realizar una sentencia SELECT y Query.ExecSQL se usa para sentecias INSERT, UPDATE, DELETE.

El componente ListBox se usa para almacenar una serie de valores, Ej:

ListBox.Clear; // Limpia los valores del componente
ListBox.Add('Valor 1'); // Añade el primer valor al componente
ListBox.Add('Valor 2'); // Añade el segundo valor al componente
ListBox.Add('Valor 3'); // Añade el tercer valor al componente

Edit.Text := ListBox.Items[0]; // Asigna 'Valor 1' a un Edit
Edit.Text := ListBox.Items[1]; // Asigna 'Valor 2' a un Edit
Edit.Text := ListBox.Items[2]; // Asigna 'Valor 3' a un Edit

// Esta sentencia y las dos siguientes hacen lo mismo.
Edit.Text := ListBox.Items[1]; // Asigna 'Valor 2' a un Edit

ListBox.ItemIndex := 1; // El valor activo del ListBox es el segundo
Edit.Text := ListBox.Items[ListBox.ItemIndex]; // Asigna 'Valor 2' a un Edit

Para acceder a los parámetros de una sentencia SQL se puede hacer de dos formas, Ej:

Q.Close;
Q.SQL.Clear;
Q.SQL.Add('SELECT * FROM MiTabla WHERE Campo1=:PARAMETRO1 AND Campo2=:PARAMETRO2');
// Caso 1, accedemos por número.
Q.Param[0].Value := 'Valor 1'; // Accede a :PARAMETRO1
Q.Param[1].Value := 'Valor 2'; // Accede a :PARAMETRO2
// Caso 2, accedemos por nombre.
Q.ParamByName('PARAMETRO1').Value := 'Valor 1'; // Accede a :PARAMETRO1
Q.ParamByName('PARAMETRO2').Value := 'Valor 2'; // Accede a :PARAMETRO2
Q.Open;

Ahora repasamos el código que has enviado.

// Carga ListBox1 con los valores de que devuelve Query2
Query2.Open;
while not Query2.EOF do
begin
ListBox1.Items.Add (Query2.Fields [0].AsString);
Query2.Next;
end;
// El componente ListBox1 tiene almacenados todos los valores posibles
// del campo CUSTNO de la tabla ORDERS. Para que nos muestre el primero
// asignamos el valor 0 a la propiedad ItemIndex.
ListBox1.ItemIndex := 0;

Query1.Prepare;
// Para asignar un valor al parámetro de Query1 se puede hacer por el número
// de parámetro Query1.Params[0].Value o por el nombre del parámetro
// :CUSTNO que sería, Query1.ParamByName('CUSTNO').Value.
Query1.Params[0].Value := ListBox1.Items[0];
Query1.Open;

// En el evento OnClick del ListBox repite lo mismo que en el evento OnCreate
// pero le pasa como parámetro el valor seleccionado en ese momento.
Query1.Close;
Query1.Params[0].Value := ListBox1.Items[Listbox1.ItemIndex];
Query1.Open;

Un saludo.
Responder Con Cita