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)
-   -   Problema con ADOQuery (https://www.clubdelphi.com/foros/showthread.php?t=72515)

damser 23-02-2011 16:55:58

Problema con ADOQuery
 
Tengo un formulario y TDBEdit con un dato y quiero pasarlo (el dato que contiene el TDBEdit) a la consulta SQL del ADOQuery como lo hago?

BlueSteel 23-02-2011 19:14:07

Cita:

Empezado por damser (Mensaje 391740)
Tengo un formulario y TDBEdit con un dato y quiero pasarlo (el dato que contiene el TDBEdit) a la consulta SQL del ADOQuery como lo hago?


mi no entender....

lo quieres pasar a otro AdoQuery...?


Código Delphi [-]
AQ_Persona.Close;
AQ_Persona.SQL.Clear;
AQ_Persona.SQL.Add('Select * From Vista_Persona');
AQ_Persona.SQL.Add('Where Nombre=:var1');
AQ_Persona.Parameters[0].Value := ADO_Query1['Nombre_Campo_Editado'];
AQ_Persona.Open;


Salu2:p:cool:

damser 23-02-2011 19:33:00

Gracias por responder:

La cosa va así, en mi formulario tengo un dato dentro un TDBEdit, este dato es recogido de un formulario anterior. ahora quiero que este dato en cuestión pase a formar parte de la consulta dentro del ADOQuery, osea que por ejemplo si el dato contenido en el TDBEdit es "funcionario1", esto vaya como variable a la consulta, para que en un dbgrid me salgan los datos del "funcionario1" y si del anterior formulario pasa el "funcionario2", etc. mi consulta dentro el ADOQuery va así y por supuesto no funciona:

select * from INFORMES where FUNCIONARIO = :TDBEdit1.text;

ví algunas alternativas en algunos sitios, pero no funcionan.

yo trabajo en Delphi XE

Agradezco a los que se toman la molestia de responder.

Neftali [Germán.Estévez] 24-02-2011 10:20:57

Pues puedes probar usando parámetros como te han comentado o concatenar los strings:

Código Delphi [-]
AQ_Persona.Close; 
AQ_Persona.SQL.Clear; 
AQ_Persona.SQL.Add('Select * From Vista_Persona Where Nombre=' +
   QoutedStr(Edit1.Text)); 
AQ_Persona.Open;

El QuotedStr es para que se añadan las comillas al texto.

damser 24-02-2011 14:51:33

Gracias Neftali:


lo puse así.



ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * From INFORMES Where FUNCIONARIO=' + QoutedStr(TDBEdit1.Text));
ADOQuery1.Open;


me sale este mensaje:

Instrucción no válida; se esperaba 'DELETE','INSERT','PROCEDURE','SELECT' o 'UPDATE'


de verdad gracias a todos los que me estan prestando ayuda...


Neftali [Germán.Estévez] 24-02-2011 16:52:18

Pues la verdad es que si FUNCIONARIO es un campo de tipo texto deberiá funcionar. :confused::confused:
¿Qué base de Datos estás utilizando?

Supongo que el Quoted lo has corregido, porque en mi primer mensaje lo escribí mal.

Código Delphi [-]
ADOQuery1.SQL.Add('Select * From INFORMES Where FUNCIONARIO=' +  QuotedStr(TDBEdit1.Text));

damser 24-02-2011 20:33:49

Si Neftali, lo corregi por si acaso y me salio el dato ke te digo, y estoy usando una bd de access.

pero no se ke estoy haciendo mal mmm, parece algo simple pues el valor si esta en el TDBEdit del formulario.

Cuando hago la consulta "manual" dentro del ADOQuery es decir:

Select * From INFORMES Where FUNCIONARIO='funcionario1';

me devuelve en el tdbgrid los datos correctamente del "funcionario1" claro a traves del datasource.

porfa alguna ayudita más y gracias mil.

BlueSteel 24-02-2011 21:27:54

Hola damser

podrias indicar lo siguiente... para descartar

El TDBEdit que utilizas a que esta vinculado?

Estará vinculado al mismo datasource que esta vinculado al AdoQuery1
si es así, cuando realizas la sentencia en el ADOQUery1, estas limpiando
o cambiando el dato que tienes en el TDBEdit....

A lo mejor es otra cosa,

Salu2:p:cool:

damser 24-02-2011 22:42:59

MMM...
Pues si el TDBEdit está vinculado al mismo datasource que el ADOQuery
???
aprecio su tiempo se los digo nuevamente.

guv 25-02-2011 05:37:11

TRata de utilizarlo de la siguiente manera:

ADOQuery1.SQL.TExt :='Select * From INFORMES Where FUNCIONARIO=' + QuotedStr(TDBEdit1.Text);

Talvez funcione!!

Saludos

Neftali [Germán.Estévez] 25-02-2011 10:33:00

Cita:

Empezado por damser (Mensaje 391954)
Pues si el TDBEdit está vinculado al mismo datasource que el ADOQuery
???

Sólo para probar.
Coloca un TEdit normal y corriente y prueba con la sentencia:

Código Delphi [-]
ADOQuery1.SQL.Add('Select * From INFORMES Where FUNCIONARIO=' +  QuotedStr(TEdit1.Text));

El problema es que al estar ligado el TDBEdit al mismo Dataset que el Query es posible que te esté provocando problemas (por ejemplo, que te esté cambiando el estado del Dataset)

damser 28-02-2011 16:55:42

Pues ahora lo puse y me sale que la función QuotedStr no esta definida en la expresión la puse así:

Select * From INFORMES Where FUNCIONARIO= + QuotedStr(TEdit1.Text);



pues al ponerla asi:
ADOQuery1.SQL.Add('Select * From INFORMES Where FUNCIONARIO=' + QuotedStr(TEdit1.Text));

me sale el mensaje:

Instrucción no válida; se esperaba 'DELETE','INSERT','PROCEDURE','SELECT' o 'UPDATE'

Help Me Please!!


La franja horaria es GMT +2. Ahora son las 01:35:00.

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