Solicitud SQL en Delphi usando un Edit
s_a_razak
Mensajes publicados
1
Estado
Miembro
-
seange -
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?
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
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
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
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)
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)
¿Cómo crear una consulta parametrizada pero el parámetro toma los nombres de columnas de otra tabla?
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
¿Puedes darme un buen código para lograrlo?
Atentamente
Vieux Mukal
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
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
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
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
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
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
¡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
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
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
intenta y dime las novedades.
aquí mi correo angex140@yahoo.fr