PDA

Ver la Versión Completa : variables y querys


azaagh
08-06-2004, 10:31:37
e creado esta consulta

SELECT logo
FROM equipos
where nombre = :sEquipo;

en un componente query de BDE para paradox....
sEquipo es una variable GLOBAL, que se encuentra en una unit

esta unit esta en los uses del datamodule donde se encuentra el componente query

me da el siguiente error al activar el query:

equipos: fields 'sEquipo' not found.

a que se debe? no encuentro el error....haber si podeis echarme un cable!!

fjcg02
08-06-2004, 10:38:46
Confundes los terminos.
Cuando pones : parametro, parametro es un idem dentro de la query, que no tiene nada que ver con tu variable global/local/oloquesea.

Para que tu query funcione tienes que asignar el valor al parámetro de la query el valor de la variable antes de abrirla.

Query.ParambyName('Parametro').AsString:= Variable;
Query.Open

Con esto te valdría.

Un saludo

azaagh
08-06-2004, 10:48:41
e pensado lo que has dicho...
y he puesto

Query.ParambyName('sEquipo').AsString:= sEquipo;
Query.Open;

en un evento de form (oncreate)...

pero de nuevo hay algo k se me escapa....porque no funciona (aunque ya no da error)
y la ayuda de delphi no me ayuda mucho en este caso...

edito: SI da error al activar el query

fjcg02
08-06-2004, 11:11:21
Si lo haces en el OnCreate del formulario, seguro que es nulo el valor de la variable y por eso no te saca ningún valor.
Tendrás que hacer la asignación del valor del parámetro en el evento BeforeOpen de la query o asegurarte de que se hace cada vez que se abre la query.
Personalmente además yo no llamaría al parámetro de la misma manera que la variable, aunque no teiene porqué darte errores.

Espero que te sirva de ayuda.

Un saludo

azaagh
08-06-2004, 11:36:18
mmm....he probado como dices, pero me daba fallo....asi que cambie el nombre del parametro y dejo de darme fallo...

pero sigue sin funcionar.

te hare un breve resumen de como esta la cosa actualmente:

tengo un query con este codigo, asociado a un dbimage:

SELECT logo
FROM equipos
where nombre = :equipo;


tengo un evento en el query beforeopen con este codigo:

dm1.fotoequipo.ParambyName('equipo').AsString:= sEquipo;


y tengo en el evento oncreate del form y tambien en un boton (por probar):
[dephi]
dm1.fotoequipo.open;
//tambien he probado con:
dm1.fotoequipo.active := true;
[/delphi]

dm1 es un datamodule
fotoequipo es el nombre del query

fjcg02
08-06-2004, 13:04:35
Imagino que sEquipo tiene algún valor, y que existen registros con ese valor en el campo por el que filtras; por lo demás parece que está bien el código.

:confused:

Un saludo

azaagh
08-06-2004, 20:32:47
el problema es que, al intentar poner al componente dbimage la propiedad DATAFIELD, me salta un error:

equipos: field 'equipo' not found...es decir, que el parametro me lo esta cogiendo como columna, y no como variable...

seguro que se pone con los dos puntos para coger una variable externa?

azaagh
08-06-2004, 22:22:49
llevo hoy todo el dia dandole vueltas al codigo.........

en teoria, ahora esta perfecto, pero me da el siguiente error al activar el query:
fotoequipo: Field 'equipo' is of an unknown type

fotoequipo es el nombre del query
equipo es el parametro

fjcg02
09-06-2004, 08:16:59
Intenta definir el tipo de parámetro en tiempo de diseño.
Otra cosa que puedes hacer es ver si tienes los campos creados en el query ( Doble click sobre el query ). Si es así, borralos todos y vuelve a intentarlo.

Un saludo