Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   como paso parametros con TAdoQuery ..? (https://www.clubdelphi.com/foros/showthread.php?t=14163)

saul saldaña 11-09-2004 05:00:46

como paso parametros con TAdoQuery ..?
 
Hola a todos, espero poder contar con su ayuda,, saben estoy usando el objeto TAdoQuery, pero quiero hacer una consulta en donde lleno el contenido del resultado en un combobox, pasandole un parametro por ejemplo :
//********************

TADOQuery.Close;
aSql := 'Select * from Tabla where campo1 = :vParametro ';
TADOQuery.SQL.Add(aSql);
TADOQuery.Parameters.ParamByName('vParametro').Value := Text1.Text;
TADOQuery.Open

While not not (TADOQuery.Eof) do
begin
Combo.Items.Add (TADOQuery.FieldByName('campo1').Asstring);
TADOQuery.Next;
end; //end del while
//*********************

NOTA : pero al momento de corre esto me dice el sig. error..
"Error de sintaxis en la expresion campo1, select * from Tabla Where
campo1 =? " .

Aprovechando el hilo.. que diferencia existe entre usar :
TADOQuery.Open y TADOQuery.Active := True;
TADOQuery.Close y TADOQuery.Active := Falsee;
y usar TADOQuery.ExecSql de los dos anteriores, para disparar una
consulta sql.


espero poder contar con su valiosa ayuda,, gracias de antemano.. :)

roman 11-09-2004 06:50:12

Cita:

Empezado por saul saldaña
NOTA : pero al momento de corre esto me dice el sig. error..
"Error de sintaxis en la expresion campo1, select * from Tabla Where
campo1 =? " .

No sé si sea error al escribir aquí el texto pero en ParamByName tienes vParamtro en lugar de vParametro


Cita:

Empezado por saul saldaña
Aprovechando el hilo.. que diferencia existe entre usar :
TADOQuery.Open y TADOQuery.Active := True;
TADOQuery.Close y TADOQuery.Active := Falsee;

Ninguna


Cita:

Empezado por saul saldaña
y usar TADOQuery.ExecSql de los dos anteriores, para disparar una
consulta sql.

Open se usa para consultas que regresan registros (SELECT) mientras que ExecSql se usa para consultas que no regresan registros (UPDATE, INSERT, DELETE)

// Saludos

saul saldaña 11-09-2004 16:49:41

sin funcionar consulta con TAdoQuery ..
 
:mad:
Hola de nuevo,,, no funciona mi consulta.. espero me puedan sugerir algo.. gracias.... :confused:

marcoszorrilla 11-09-2004 17:51:00

La consulta funciona perfectamente la acabo de probar adaptándola a una tabla de prueba y con una rejilla conectada me presenta los registros sin ningún problema.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
aSql:String;
begin
TADOQuery.Close;
aSql := 'Select * from video where Coleccion = :vParametro ';
TADOQuery.SQL.Add(aSql);
TADOQuery.Parameters.ParamByName('vParametro').Value := Edit1.Text;
TADOQuery.Open
end;

Quizás no hayas definido VParametro?

Tienes que pulsar en el botón ... Parameters - AddNew darle el nombre Vparametro y en mi caso lo he definido como ftString.

Un Saludo.

saul saldaña 11-09-2004 20:00:45

sigue el mensaje de error...!!
 
:(

hola , mira ya delcare mi variable y cheque todo lo demas, el caso esta asi.. es que en mi programa utilizo el TADOCOnnection la cual le asigno la bse de datos que esta en MS Acess 2000, y el TADOQuery le asigno en la propiedad conncection el Name de mi TADOConnection.

y el codigo es el sig:
//si esta conectado que lo desconecte
if TADOCOnnection.Connected then TADOCOnnection.Connected := False;
TADOQuery.Close; //cierro el TADOQuery
vSql := '';
vSql := 'Select * from producto where codigo =:vParametro ';
TADOCOnnection.Connected := True; //abra la conexion con la bd
TADOQuery.SQL.Add (vSql);
TADOQuery.Parameters.ParamByName('vParametro').Value := StrToint(Edit1.text);
TADOQuery.Open;
//** fin de mi programa...

espero contar con tu ayuda .. gracias.....!!!

marcoszorrilla 11-09-2004 22:52:16

Cita:

hola , mira ya delcare mi variable
Por lo que se deduce de lo dicho parece ser que declaras una variable y no un parámetro?

Con una variable quedaría así:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
aSql:String;
begin
TADOQuery.Close;
aSql := 'Select * from video where Coleccion =' +QuotedStr(MiVariable);
TADOQuery.SQL.Add(aSql);

TADOQuery.Open
end;

Un Saludo.

jaime cotino 12-09-2004 19:47:20

Ejemplo de Sql con parametros
Select MESA
From mesas
Where mesa=:p1;
Ejemplo de llamada
DataModule2.AbrirMesa.close;
DataModule2.AbrirMesa.Prepare;
DataMOdule2.AbrirMesa.Params[0].value := V[ticketmesa];
DataModule2.AbrirMesa.Open;
el parámatro p1 y la variable que le mandes deben de ser del mismo tipo
esto es con interbase si utilizas acces
en vez prepare prepared
y en vez de params parameters

LuisHatake 20-12-2017 04:03:00

Cita:

Empezado por marcoszorrilla (Mensaje 62109)
La consulta funciona perfectamente la acabo de probar adaptándola a una tabla de prueba y con una rejilla conectada me presenta los registros sin ningún problema.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
aSql:String;
begin
TADOQuery.Close;
aSql := 'Select * from video where Coleccion = :vParametro ';
TADOQuery.SQL.Add(aSql);
TADOQuery.Parameters.ParamByName('vParametro').Value := Edit1.Text;
TADOQuery.Open
end;

Quizás no hayas definido VParametro?

Tienes que pulsar en el botón ... Parameters - AddNew darle el nombre Vparametro y en mi caso lo he definido como ftString.

Un Saludo.

Hola marcos, necesito su ayuda de ante mano muchas gracias. lo unico que busco es mostrar los datos de una consulta en una tabla u otro componente que me permita visualizar todos los datos de mi consulta (select * from tabla). uso TadoQuery en delphi 7. que componente me sugieren? y si me pueden apoyar con un poco de codigo muchas gracias.

Casimiro Notevi 20-12-2017 10:28:09

Cita:

Empezado por LuisHatake (Mensaje 523626)
Hola marcos, necesito su ayuda de ante mano muchas gracias. lo unico que busco es mostrar los datos de una consulta en una tabla u otro componente que me permita visualizar todos los datos de mi consulta (select * from tabla). uso TadoQuery en delphi 7. que componente me sugieren? y si me pueden apoyar con un poco de codigo muchas gracias.

Por favor, lee nuestra guía de estilo, gracias :)

Caral 21-12-2017 01:53:07

Hola
Lo que no veo es que bd usas ?
Saludos

LuisHatake 21-12-2017 04:30:17

Mostrar Datos en DBGrid
 
hola chicos como les comento lo que quiero hacer es mostrar todos los datos de una tabla en un dbgrid.
lo primero que tengo es un TADOConnection, despues tengo un TADOQuery ("qry6") asociado en su atributo de conexion al TADOConnection, despues tengo un TDataSetProvider el cual esta asociado al query en su propiedad dataset, depues tengo otro componente TClientDataSet el cual se encuentra asociado en su propiedad ProviderName al TDataSetProvider, y al final tengo un TDataSource que esta asociado en su ppropiedad DataSet al TClientDataSet. tambien tengo un boton en el cual al dar click se ejecuta el siguiente codigo:

Código Delphi [-]
procedure Tfrm1.btn1Click(Sender: TObject);
begin
  qry6.SQL.Clear;
  qry6.SQL.add('select idarticulo from articulo');
  qry6.Open;
  Buscar(edt1.Text);
end
;

//esto es lo que tiene el metodo buscar:
Código Delphi [-]
procedure Tfrm1.Buscar(idarticulo : string);
begin
  ds2.close;
  ds2.params.paramByName('idarticulo').asString := idarticulo;
  ds2.open;
end;

ds2 es el nombre del TClientDataSet.
en el codigo tiene idarticulo por que de esa forma almenos me muestra la columna de los id pero lo que quiero es ver todas las columnas de esa tabla y cuando pongo el asterisco o cualquier otro nombre de otra columna me marca el siguiente error: 'access violation at 0x05f9....: read of address'. gracias!!

LuisHatake 23-12-2017 03:50:49

Error al ejecuar select en adoquery
 
Cita:

Empezado por Caral (Mensaje 523662)
Hola
Lo que no veo es que bd usas ?
Saludos

Hola Caral, les escribo para pedir ayuda pues pasa algo con mi programa. Lo que pasa es que no puedo realizar una consulta select con mas de dos campos. todo el codigo a continuacion lo tengo en el onclick de un boton. Si ejecuto la linea que esta comentada funciona perfectamente. strngrd1 es un TStringGrid. Mi base de datos esta en sql Workbench y utilizo los componentes TADOQuery. Gracias!

Código Delphi [-]
procedure TForm8.btn1Click(Sender: TObject);
var
lb, contador, i : Integer;
campo, campo2 : TField;
nombreCampo : string;
nombreCampo2 : string;
begin

  qryFinal.Close;
  qryFinal.SQL.Clear;
  qryFinal.SQL.Add('SELECT idarticulo, categoria');
  //qryFinal.SQL.Add('SELECT idarticulo');
  qryFinal.SQL.Add('  FROM articulo');
  qryFinal.SQL.Add('ORDER BY idarticulo');
  qryFinal.Open;
  contador:=1;
  while not qryFinal.Eof do
  begin
    for i:=0 to qryFinal.FieldCount -1 do
    begin
      nombreCampo:= qryFinal.Fields[i].FieldName;
      nombreCampo2:= qryFinal.Fields[i].FieldName;
      campo:=qryFinal.FieldByName(nombreCampo);
      campo2:=qryFinal.FieldByName(nombreCampo2);
      strngrd1.Rows[contador][i]:=campo.AsString;
      strngrd1.Rows[contador+1][i]:=campo2.AsString;
    end;
    inc(contador);
    qryFinal.Next;
  end;
end;

Caral 23-12-2017 14:50:44

Hola
No entiendo muy bien lo que estas haciendo


nombreCampo:= qryFinal.Fields[i].FieldName;
nombreCampo2:= qryFinal.Fields[i].FieldName
Donde se diferencia en nombrecampo 1 y 2 ?
Me parece que por eso solo ve el primer campo
Saludos


La franja horaria es GMT +2. Ahora son las 17:22:27.

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