PDA

Ver la Versión Completa : Problema con ADOQuery


damser
23-02-2011, 16:55:58
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
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...?



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:


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.


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 AdoQuery1si 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
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:


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!!