PDA

Ver la Versión Completa : Error al intentar acceder a las propiedades un QReport


Delphitest
20-10-2006, 09:05:03
Hola,

estoy intentando modificar un Form que contiene un QuickReport y tanto cuando intento activar el ADOQuery como cuando quiero poner un DataField en un QRDBTText me salta este error:

INstrucción SQL no válida; se espera 'DELETE','INSERT','PROCEDURE','SELECT'o 'UPDATE'

Os pongo el pantallazo aqui:

http://cjoint.com/data/kujeBMtVJ0.htm

¿ Sabe alguien a puede ser debido ?

Gracias

kalimero
20-10-2006, 10:48:05
Hola.
Revisa la propiedad "SQL" del ADOQuery.
Saludos

Delphitest
20-10-2006, 11:00:02
uffff, vaya bloqueo, hoy si que no salgo de este punto :(

Creo que son muchas cosas y ya empiezo a flojear.

El problema está claramente en el AODQuery

No he trabajado nunca con ello (ni con casi nada la verdad) pero algo me llama la atención en sus propiedades y es que hay cosas que en cuento las toco me salta ese error, por ejemplo Active.

El caso es que los campos que estaban ya puestos en el Qreport funcionan bien si lo ejecuto, pero no me deja ni cambiar esos ni añadir nuevos.

He mirado en SQL y está vacío.

Delphitest
20-10-2006, 11:56:12
Ya lo he apañado como he podido.

Os cuento la solución en plan chapuza que he dado a esto.

El problema que tenía es que a la hora de insertar un objeto QRDBText en el Qreport no me dejaba elegir el nombre del campo en la propiedad DataField, ahi es cuando me saltaba ese error de SQL. Pero esto solo me pasaba si indicaba en la propiedad DataSet: ADOQuery, sin embargo si elegía en ese punto el nombre de mi base de datos DTMClientes... si que me dejaba poner el nombre del campo sin problemas.

por lo tanto la solución ha sido poner en el Dataset el nombre de la base de datos, elegir el campo necesario para esa casilla y una puesto volver a cambiar el Dataset por ADOQuery.

Con esto, aunque sigo sin entenderlo bien, he conseguido acabar ya lo que quería.

Un saludo

kalimero
20-10-2006, 12:51:42
Un ADOQuery necesita que introduzcas una sentencia valida en su propiedad SQL. Algo como: "Select * from clientes". Si no lo haces al poner su propiedad Active a True te dará error por todos los lados. Es decir el cliente (tu) no sabe de donde se trae los datos, ni el nombre de los campos ni na de na.

Saludos

Caral
20-10-2006, 18:05:36
Hola Delphitest
Vi tu mensaje y creo que te estas liando un poco:
Como dice kalimero el ADOQuery es simplemente un deposito en donde se coloca una sentencia sql que lee un tabla.
Cuando uno hace un QReport y pone un adoquery en el, es necesario ponerle en el string en el inspector de objetos la sentencia sql que necesitas, esto con el fin de que puedas incorporar los qrbtext que necesites y ligarlos a los campos que quieras poner.
Una vez hecho el reporte, si quieres llamarlo, variando la sentencia sql, lo que tienes que hacer es borrar del string la sentencia y hacerla por codigo, tal y como el ejemplo que te envie, en resumen sin el sql en el string del adoquery no puedes hacer el reporte, tienes que ponerlo y luego si es el caso quitarlo nuevamente si te interesa.
Intenta modificar el reporte que te envie asi:
Tienes en el form (FCliente1) una sentencia Sql, que es asi:

QRClientes.ADOQuery1.SQL.Add(' Select * From Clientes ');
QRClientes.ADOQuery1.SQL.Add(' WHERE Clientes.Cod_Cliente = '+DBEdit13.Text+'');
Dejalo asi:

//QRClientes.ADOQuery1.SQL.Add(' Select * From Clientes ');
QRClientes.ADOQuery1.SQL.Add(' WHERE Clientes.Cod_Cliente = '+DBEdit13.Text+'');
Y coloca en el string del adoquery del reporte:
Select * From Clientes
Con esto:
1: el query del reporte tendra el codigo sql, que busca la tabla
2: El form que llama al reporte le dira que el cliente tiene que ser=DBEdit13.Text
3: podras incluir, modificar etc, el reporte sin problemas.
Espero que esta sea tu duda.
Saludos