Adoquery

Un adoquery tiene una propiedad parameters... Y al darle clic aparece una ventana donde podemos agregar nuevos parámetros ¿eso supongo?
Para que me sirve esta propiedad, podrías ejemplificarlo para su mayor comprensión. Otra pregunta, ¿qué es más conveniente al manipular bases de datos por ejemplo de access para introducir datos las tracionales EDIT de la pestaña standard o los DBEDIT de la pestaña data controls y porque? ¿Existe la misma flexibilidad?.
Respuesta
1
La propiedad Parameters te permite utilizar consultas SQL parametrizadas, es decir, en donde el valor de una variable cambie, por ejemplo:
SELECT * FROM Tabla WHERE NombreCampo = :NombreParametro
(Fíjate en los dos puntos antes del nombre de la variable)
Con una consulta definida así, si das doble click en la propiedad Parameters podes definir todas las propiedades que tendrá ese parámetro.
En tiempo de ejecución, podes usar lo siguiente:
ADOQuery1.Close;
ADOQuery1.Parameters[0].AsInteger := 1;
ADOQuery1.Open;
o cambiar la segunda línea por:
ADOQuery1.ParamByName('NombreParametro'].AsInteger := 1;
otro ejemplo:
SELECT * FROM Ventas WHERE FechaVenta >= :FechaDesde AND FechaVenta <= :FechaHasta
Acá tendrías dos parámetros. Estudiá un poco el tema en la ayuda, no es complicado. En definitiva, en vez de cambiar TODA la sentencia SQL (en la propiedad SQL del ADOQuery) sólo le cambiás los valores que querés que tomen los parámetros.
En cuanto a la utilización de los controles "data-aware" (los de empiezan con DB, como vos decís), son preferibles, porque te evitás todo el tema de inicializar los Edit comunes, y luego pasarlos otra vez a la base de datos. Con los controles "data-aware" todos los cambios son automáticos. En ocasiones podes usar los controles "normales" por alguna situación en especial, pero lo más práctico es usar los controles específicos de datos.

5 respuestas más de otros expertos

Respuesta
1
Vamos de a una:
1) Un adoquery tiene una propiedad parameters... y al darle clic aparece una ventana donde podemos agregar nuevos parámetros
¿Eso supongo?, para que me sirve esta propiedad
2) Que es más conveniente al manipular bases de datos por ejemplo de access para introducir datos las tracionales EDIT de la
¿Pestaña standard o los DBEDIT de la pestaña data controls y porque? ¿Existe la misma flexibilidad?
Respuestas:
1) La propiedad parameters del componente no se utiliza para AGREGAR parámetros sino para VER y CONSULTAR los parámetros de la
Consulta (en tiempo de diseño o ejecución).
Es decir, si escribís una consulta en la propiedad SQL del componente como:
SELECT *
FROM CLIENTES
WHERE (SALDO > :SALDO)
Que como ves tiene un solo parámetro (:SALDO, los parámetros deben llevar un : adelante), y luego ves la propiedad parameters, vas a tener el parámetro SALDO de la consulta anterior.
Desde el codigo tendrias que hacer:
with ADOQuery1 do
begin
Close;
Parameters.ParamByName('SALDO').Value := 100;
Open;
end;
Para obtener los clientes con saldo mayor a 100.
2) Cada uno tiene sus pros y sus contras, si usas EDITS comunes tienes mucha flexibilidad pero también te genera formularios con mucho código, usando DBEDITS reducís el código y el tiempo de diseño del formulario pero para hacer determinadas cosas fuera de lo tradicional necesitas tener un poco de conocimiento de como funcionan los datasets ya que estos campos están conectados directamente a ellos.
Si no necesitas mucha complejidad en la interface que estas diseñando te recomiendo que uses sin pensarlo los campos DBEDITS.
Espero que te sirva, cualquier otra cosa avisame.
Feliz año nuevo!
German.
Respuesta
1
No he trabajado nunca con ADO pero te puedo explicar en general como funciona la propiedad Parameters.
En cualquier query usamos la propiedad "Params" o "Parameters" para indicar de que tipo y como funcionan los parámetros que hayamos definido en la sentencia sql de la query, ya que el compilador esto no lo sabe. Por ejemplo, mi query tiene la siguiente sentencia sql: "select * from facturas where numero >= :nD and numero <= :nA" si en tiempo de desarrollo abro la propiedad params me apareceran dos lineas "nD" y "nA" (he visto que en ADOquery no aparecen, hay que añadirlas) y aqui indicaré el tipo de cada parametro, en mi caso "DataType = ftInteger" luego en tiempo de ejecucion daré valor a estos parametros antes de ejecutar la query para obtener los registros deseados:
Query.close;
Query.ParamByName('nD').Value := 5;
Query.ParamByName('nA').Value := 15;
Query.Open;
Obtendré las facturas cuyo numero este entre 5 y 15
En cuanto a la segunda pegunta, el DBEDIT no es ni más ni menos que un edit especializado, ya que te une éste a un campo de una tabla (o query) a través de las propiedades DataSource y DataField, por lo tanto a la hora de ver datos de una tabla es mejor usar DBEDIT ya que al navegar por la misma, los valores del registro en el que te encuentras en cada momento se reflejan en los DBEDIT, así como los cambios que se introduzcan en los DBEDIT se transfieren a la tabla al hacer el Post correspondiente o dejar los datos como estaban antes de editar el registro haciendo un Cancel.
Espero haberte sido de utilidad, si necesitas más aclaraciones no dudes en volver a preguntar,
saludos y próspero año.
Respuesta
1
Que tengas un feliz año tu también.
Los parámetros sirven para establecer algún valor necesario en la consulta, por ejemplo en una tabla de empleados deseas saber quienes ganan más de una suma "x", asignas ese valor al parámetro, de esta forma podemos cambiar el resultado de la consulta en tiempo de ejecución.
Ejm. (En la consulta)
select * from empleados
where sueldo>=:Monto
(En este caso el parámetro es "Monto")
Y en el programa podemos asignar:
Query1.Params[0].AsFloat:=500;
Sobre tu segunda pregunta, Los DBEdit te permiten modificar directamente el valor del campo en la base de datos mientras que el TEdit te sirve como una variable que la puedes asignar al campo luego de su edición. Yo prefiero utilizar el TEdit, para asegurarme que el dato introducido no provocará un error (de incompatibilidad por ejemplo) en la base de datos.
Respuesta
1
La propiedad Parameters, sirve para especificar los campos que son "variables" dentro la consulta SQL, por ejemplo si realizas una consulta
SELECT *
FROM Clientes
WHERE Provincia = :xProvincia
Estarás creando un Parámetro que puedes modificar en tiempo de ejecución sin necesidad de tener que volver a construir tu consulta SQL, ejemplo:
with ADOQuery1 do begin
Close ;
ParamByName ('xProvincia').AsInteger := _Provincia ;
Open ;
end ;
De tu segunda pregunta,
Definitivamente te conviene utilizar los DataControls, puesto que están hechos precisamente para manejar la información de las base de datos... Sencillamente porque de otra forma tendrías que programar todo "a pie", y con esto ya tienes la ventaja de que metes el código para "Insertar, Eliminar y Actualizar" he inmediatamente se ve reflejado en tus controles... Puedes por ejemplo utilizar un DBNavigator para controlar los eventos y veras que casi no necesitas meter código, pero bueno todos los programas van más allá de utilizar el DBNavigator...
Bueno, espero que te haya servido de referencia, sin más recibe un cordial saludo y deseo que tengas un feliz anio también...
Respuesta
1
La propiedad de "parameters" se utiliza como "textos sustituibles" dentro de la sentencia escrita en la propiedad SQL del mismo componente y que se denotan usando ":" al inicio del nombre. Por ejemplo si tu sentencia es algo como:
SELECT * FROM PERSONAS WHERE EDAD > :EdadMax
Entonces verás en la propiedad parameters que te aparecerá este parámetro (EdadMax) y al cual le puedes poner las propiedades que ayuden al Query a "interpretar" dicha sstitución. Prueba para que tengas una idea.
Por otro lado, con respecto a los componentes "Edit" pasa lo siguiente:
En Delphi se tienen definidos los componentes DBxxx para modificar o mostrar directamente el contenido de los campos de alguna tabla dentro de una base de datos. Es decir, al cambiar su contenido, cambio el contenido en la base de datos. Igualmente, si te mueves a través de una tabla, el valor de estos se "actualiza" para mostrar el valor delcampo en el registro actual de la tabla.
Los DBEdits poseen la misma flexibilidad de los Edits pero necesitas conectarlos a un Datasource que a su vez debe estar conectado a un Dataset cualquiera (Table, Query, etc) que además esté activo, y además debes especificarle a qué campo hará referencia este DBEdit (propiedad datafield).
Si quieres algo más de información no dudes en pedírmela.
Marco Piñero.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas