Solicitud SQL en Delphi usando un Edit

s_a_razak Mensajes publicados 1 Estado Miembro -  
 seange -
Hola a todos,

para realizar una selección de un conjunto de registros que cumplen la condición Cod_Fil=('el texto de un edit') de una tabla Estudiante y mostrarlos en un DBGRID, he utilizado un Componente Query cuyo propiedad SQL contiene el siguiente texto:
Select all
From Etudiant
Where Etudiant.Cod_fil=:Saisie

donde (Saisie) es el nombre del parámetro que lleva el valor a introducir en(Edit.text) (propiedad params de Query)
el código de la instrucción Delphi es:
Query1.Parabyname('saisie').asinteger:=strtoint(edit1.text);
Pero durante la ejecución, el depurador me notificó la siguiente excepción:
Exception 'EDBEngineError' con el mensaje uso incorrecto de la palabra Clave Elemento: From
Número de línea 2: Proceso detenido
¿Qué hay que hacer para filtrar una tabla al introducir el valor del campo sobre el que se quiere hacer la selección?

12 respuestas

tleboukaka Mensajes publicados 81 Estado Miembro 4
 
Hola

Creo que soy totalmente capaz de resolver este problema de consulta parametrizada. porque en mi base de datos Delphi el 90% de mis consultas son del tipo.
El tiempo se acaba. mañana si me acuerdo me conectaré y daré la respuesta a tu problema

buena suerte
3
phil_232 Mensajes publicados 286 Estado Miembro 33
 
¿Puedes darnos el mensaje de error?
2
tleboukaka Mensajes publicados 81 Estado Miembro 4
 
hola

estoy aquí para querer dar una solución a tu problema:
lo que pido es que me detalles la estructura de cada tabla que constituye la consulta (al menos los campos importantes y su tipo: numérico, alfabético o alfanumérico)
1
ali
 
¿Cómo crear una consulta parametrizada pero el parámetro toma los nombres de columnas de otra tabla?
1
Vieux Mukal
 
Tengo un serio problema, sobre todo cuando hay que usar consultas parametrizadas, porque siempre genera un mensaje de error indicando que el parámetro no es reconocido.
¿Puedes darme un buen código para lograrlo?

Atentamente
Vieux Mukal
1
ian
 
Hola,
Creo que te falta el * en tu select. Los mensajes de error de los SGBD no siempre son muy pertinentes: te señalan un problema en el FROM porque no esperan verlo justo después del ALL.
Intenta con: SELECT * FROM etudiants...

Nos vemos
-1
tleboukaka Mensajes publicados 81 Estado Miembro 4
 
esperando siempre
0
ali
 
cómo usar una consulta en Delphi pero el parámetro de esta consulta es un campo de una tabla
0
phil_232 Mensajes publicados 286 Estado Miembro 33
 
SELECT * FROM MyTable1 WHERE MySearchID IN (SELECT MySearchID FROM Table2)
0
tleboukaka Mensajes publicados 81 Estado Miembro 4
 
hola

aquí está cómo debes proceder:

era importante definir bien tu arquitectura para poder resolver bien tu problema. parto de la idea de que codFiliere es un campo de la tabla Estudiante. supongo que los campos de la tabla Estudiante son: num estudiante, nombre de estudiante, código de filiere, etc
en tu formulario :
coloca un componente TDBlookUpComboBox, y selecciónalo haciendo clic sobre él
en Inspector de objetos, aplica estas propiedades :
NOMBRE : dlcCodFiliere
LIST SOURCE : dataSourceEtudiant (el dataSource de la tabla Estudiante)
LIST FIELD : cod_Filiere (o Nombre filiere)
KEY FIELD : cod_Filiere
luego
coloca un tButton (ejemplo botón OK / EJECUTAR)
en la parte inferior coloca un TDBGrid (ahí es donde se mostrará el contenido de tu consulta una vez que hagas clic en OK)

vas a parametrizar ahora tu Query
Selecciona desde el Árbol de Objetos, haz clic en su signo +, clic derecho en Param. haz clic de nuevo en AÑADIR ELEMENTO del menú contextual
en inspector de objetos : indica DATA TYPE con ftString
indica también NOMBRE escribiendo ParamCodFiliere
puedes guardar...

luego
evento On Click de tu botón, escribes el sql de tu consulta del tipo :

...
begin
query1.SQL.Clear;
query1.SQL.Add ('SELECT TblEleve.elvNum, tbleleve.ElvNom, tblEleve.CodFiliere, ... ');
query1.SQL.Add ('FROM ...');
query1.SQL.Add ('INNER JOIN .... ON... ');
query1.SQL.Add ('WHERE (codFiliere = :ParamCodFiliere) ');
query1.SQL.Add ('ORDER BY ... ');
query1.ParamByName ('ParamCodFiliere').AsString:=dlcCodFiliere.Text;
query1.Open;
end;
...

enfin, debes parametrizar tu TDBGrid
selecciona tu dbGrid
en Inspector de Objetos, indica su dataSource. corresponde al datasource de la consulta query1

ya está, esto DEBE funcionar sin problema
90% de mis consultas están parametrizadas, incluso con parámetros en 3 niveles y funciona así

ánimo

Eric
0
imeneimene Mensajes publicados 70 Estado Miembro
 
Hola,
pero dónde encontrar el Árbol de Objeto de la Query;
0
vega
 
en la opción Parameters en la esquina inferior izquierda (propiedad de la consulta)
0
tleboukaka Mensajes publicados 81 Estado Miembro 4
 
hola

olvidé un detalle:
Selecciona tu componente Query1
en el Inspector de Objetos, establece el valor DATABASENAME
Propiedad ACTIVE = False
en la línea SQL del Inspector de Objetos, haz clic en el botón ...
pega la instrucción de tu consulta como sigue:

SELECT TblEleve.elvNum, tbleleve.ElvNom, tblEleve.CodFiliere, ...
FROM ...
INNER JOIN .... ON...
WHERE (codFiliere = :ParamCodFiliere)
ORDER BY ...

NOTA: que empiece por SELECT y termine por ORDER BY

luego haz clic en Aceptar para cerrar esta pequeña ventana.

Si funciona, sería un placer que lo hicieras saber

ERIC
0
Madjid2010 Mensajes publicados 1 Estado Miembro
 
¡Hola a todos!
Soy aficionado a Delphi, mi sueño es algún día lograr crear una aplicación.
Me gustaría encontrar personas que me ayuden para poder intercambiar o compartir lo que sé.
SALUDOS MADJID
0
seange
 
Dado que configuraste el atributo cod_fil con ":saisi", debes especificar la naturaleza de ese parámetro. haces clic en la consulta en cuestión y en la línea PARAMS del inspector de objetos seleccionas los tres puntos (...) y ves la lista de parámetros que has utilizado en la consulta. seleccionas el parámetro en cuestión y en la línea datatype del inspector de objetos tomas ftstring.
intenta y dime las novedades.
aquí mi correo angex140@yahoo.fr
0