Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   consulta, igualdad de campo con un Combo (https://www.clubdelphi.com/foros/showthread.php?t=50670)

MiKloSS 24-11-2007 19:42:51

consulta, igualdad de campo con un Combo
 
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:
Código SQL [-]
'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)

Código SQL [-]
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:

Código Delphi [-]
   ibQuery1.ParamByName('NOMBRE_MATERIA').asString := Tftraxmat.DBCmat.Text;
   ibQuery1.Open;

MiKloSS 25-11-2007 06:34:42

Cita:

Empezado por RONPABLO (Mensaje 248270)
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


La franja horaria es GMT +2. Ahora son las 15:42:58.

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