Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-05-2005
desve desve is offline
Miembro
 
Registrado: mar 2005
Ubicación: Chihuahua, Mexico
Posts: 32
Poder: 0
desve Va por buen camino
utilizacion del tquery y la propiedad params

Buenas tardes, me veo en la necesidad de preguntar si alguien puede ayudarme con el componente tquery.

Pasa lo siguiente, yo ya he realizado consultas con el componente tquery sobre una o varias tablas cargando la consulta en una variable string y luego limpiando el query y añadiendo la sentencia.

asi asignando la consulta

consulta1:='insert into tabla (numero) values ('+IntToStr(numero)+');';



Query1.SQL.Clear;
Query1.SQL.Add(consulta1);
Query1.ExecSQL;

y luego cargandola y ejecutandola.



El problema consiste en esto. en clase hemos visto otra manera de hacer las consultas con los querys pero no comprendo algunas cosas que utilizan para trabajar los querys, a continuacion anexare un pedazo de codigo fuente y documentare en que parte tengo las dudas a ver si alguien me puede ayudar a documentar el codigo para entenderlo mejor.


procedure TForm1.FormCreate(Sender: TObject);
begin
Query2.Open;
while not Query2.EOF do
begin
ListBox1.Items.Add (Query2.Fields [0].AsString);
Query2.Next;
end;
ListBox1.ItemIndex := 0;

Query1.Prepare;
Query1.Params[0].Value := ListBox1.Items [0];
Query1.Open;
end;


**** ********
select distinct Custno from orders <------ valor inicial del query2

*************
select * from employee where custno=:Custno <-- valor inicial del query1

*************




en el oncreate si entiendo el pedazo de codigo donde hace la consulta que tiene precargada y luego carga uno por uno los nombres de los campos en el listbox

pero luego viene el prepare y despues esta instruccion

Query1.Params[0].Value := ListBox1.Items [0];

aqui si no entiendo que sucede, ya que desconozco el componente listbox y tambien desconozco para que se utiliza la propiedad params, tambien quisiera saber por que hace referencia la posicion 0 ¿es un arreglo? y que gana con eso, ya que inmediatamente despues hace el open ¿es lo mismo el open que el ExecSQL?, cuales son sus diferencias.




luego cuando dan click en el list box entiendo como que asigna un nuevo campo a params, pero que se hace con ese campo, creo que pasa el parametro para eliminar ese campo de la consulta o algo por el estilo.


procedure TForm1.ListBox1Click(Sender: TObject);
begin
Query1.Close;
Query1.Params[0].Value :=
ListBox1.Items[Listbox1.ItemIndex];
Query1.Open;
end;




si alguien pudiera darme una explicacion sobre que son los valores params y para que son utiles, como se utilizan le agradeceria de sobre manera.


Gracias

Desve
Responder Con Cita
  #2  
Antiguo 02-06-2005
_fede _fede is offline
Miembro
 
Registrado: jun 2005
Posts: 12
Poder: 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
  #3  
Antiguo 03-06-2005
desve desve is offline
Miembro
 
Registrado: mar 2005
Ubicación: Chihuahua, Mexico
Posts: 32
Poder: 0
desve Va por buen camino
Gracias, no podia haber quedado mas claro.

Ahora entiendo por ke con items[0]. no aparecen opciones y con indemindex si.

y varias cosas mas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:29:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi