PDA

Ver la Versión Completa : consulta, igualdad de campo con un Combo


MiKloSS
24-11-2007, 19:42:51
bueno, es ke no se como hacer una igualdad de un combo con un campo a la hora de hacer una consulta, alguien me dijo que tenia que pasar un parametro pero no se como, aqui les dejo la consulta, espero que alguien me eche la mano..

select FILIACION_TRAB, NOMBRE_TRAB, APATERNO_TRAB, AMATERNO_TRAB, DOMICILIO_TRAB, TEL_TRAB, NO_HORAS, GRADO, NO_CT
from TRABAJADOR a, TRAB_CT b, HORAS c, MATERIA d
WHERE d.NOMBRE_MATERIA=Tftraxmat.DBCmat.Text AND d.ID_MATERIA=c.ID_MATERIA AND c.FILIACION_TRAB=b.FILIACION_TRAB AND c.NO_CT=b.NO_CT AND c.TURNO_CT=b.TURNO_CT AND b.FILIACION_TRAB=a.FILIACION_TRAB

El problema me lo marca aki en la primera condicion...

d.NOMBRE_MATERIA=Tftraxmat.DBCmat.Text

ya que el Tftraxmat.DBCmat.Text es el nombre de la forma.el nombre del combo.el atributo text, pero creo que no es asi, alguien que me dijera como comparar con el valor que obtiene ese combo... gracias y salu2

Caral
24-11-2007, 21:36:56
Hola
No entiendo, pero prueba esto:

'select FILIACION_TRAB, NOMBRE_TRAB, APATERNO_TRAB, AMATERNO_TRAB, DOMICILIO_TRAB, TEL_TRAB, NO_HORAS, GRADO, NO_CT
from TRABAJADOR a, TRAB_CT b, HORAS c, MATERIA d
WHERE d.NOMBRE_MATERIA = '+Tftraxmat.DBCmat.Text+' AND d.ID_MATERIA = c.ID_MATERIA AND c.FILIACION_TRAB = b.FILIACION_TRAB AND c.NO_CT = b.NO_CT AND c.TURNO_CT = b.TURNO_CT AND b.FILIACION_TRAB = a.FILIACION_TRAB'


Repito, no entiendo toda esta sentencia, pero para el uso de combobox, necesitas concatenar.
Saludos

dec
24-11-2007, 21:47:19
Hola,

Y acaso, además de concatenar debidamente, sea preciso "entrecomillar" el valor de la propiedad "Text" del "Combo", puesto que de no ser así, en caso de espacios en blanco, por ejemplo, podría haber problemas con la consulta SQL. Hay funciones como "QuotedStr" que pueden ayudar en estos casos.

De todos modos, igual es también bueno (y necesario) escapar determinados caracteres que pueda haber en texto en cuestión y que puedan fastidiar (o aún peor hacer algo que no se deba) en la consulta SQL. Acaso por esto último también se recomienda (según creo) usar parámetros, porque tal vez estos sean "escapados" convenientemente antes. :)

Pero, vamos, de esto yo sé más bien poco. ;)

RONPABLO
25-11-2007, 03:12:17
poner un parámetro es muy bueno y es muy fácil, en el query el parámetro se identifica porque inicia con : y sin espacio el nombre del poco nombrado parámetro (:PARAMETRO)


select FILIACION_TRAB, NOMBRE_TRAB, APATERNO_TRAB, AMATERNO_TRAB, DOMICILIO_TRAB, TEL_TRAB, NO_HORAS, GRADO, NO_CT
from TRABAJADOR a, TRAB_CT b, HORAS c, MATERIA d
WHERE d.NOMBRE_MATERIA= :NOMBRE_MATERIA AND d.ID_MATERIA=c.ID_MATERIA
AND c.FILIACION_TRAB=b.FILIACION_TRAB AND c.NO_CT=b.NO_CT AND c.TURNO_CT=b.TURNO_CT AND b.FILIACION_TRAB=a.FILIACION_TRAB

despues de tener esto seguimos con el parámetro dentro del código delphi:


ibQuery1.ParamByName('NOMBRE_MATERIA').asString := Tftraxmat.DBCmat.Text;
ibQuery1.Open;

MiKloSS
25-11-2007, 06:34:42
poner un parámetro es muy bueno y es muy fácil, en el query el parámetro se identifica porque inicia con : y sin espacio el nombre del poco nombrado parámetro (:PARAMETRO)
despues de tener esto seguimos con el parámetro dentro del código delphi:

Gracias a todos por su respuesta, la que mas me ha ayudado es la del compañero citado, ya que eso es lo que buscaba, ya he podido avanzar con las consultas de mi sistema :), sos grande... salu2

P.D. Problema solucionado... salu2