PDA

Ver la Versión Completa : Insertar con Zquery + ZUpdate


Pekador
28-07-2004, 12:53:46
Saludos a todos

Suelo frecuentar los foros del Club, y me sido de gran ayuda , pero ahora
tengo una duda , que creo no ha sido expuesta.


Uso un formulario en el que muestro resultados de una consulta
SELECT (ZQuery) , estos relaciones mediante campos DBEdit,
hasta aqui todo bien.

Mi duda es que me gustaria usar este mismo formulario para la insercion de
un nuevo registro.

La cuestion es que cuando abro este formulario y no hago la consulta , los
DBEdit no me dejan escribir en ellos, por lo que al hacer un insert con otra
ZQuery.execSQL no puedo insertar nada.

Me gustaria saber si es que estoy relacionando mal los componentes entre si
o hago algo mal.

Tambien me gustaria que alguien me informara de como relacionar y cual seria
el funcionaminento de Zquery + ZUpdate , o en que pagina puedo obtener
informacion.

Muchas Gracias por todo.

Me he dado cuenta que son muchas cuestiones, pero creo que la solucion de
una puede ser la de la otra a la vez.

Gracias otra vez

kayetano
28-07-2004, 13:47:22
Hola


La cuestion es que cuando abro este formulario y no hago la consulta , los
DBEdit no me dejan escribir en ellos, por lo que al hacer un insert con otra
ZQuery.execSQL no puedo insertar nada.

Si no haces la consulta los DBEdit no se activan, podrías usar TEdit.
Otra solución es realizar la consulta de forma que no aparezca ningun valor con lo que los DBEdit se activarán.


Tambien me gustaria que alguien me informara de como relacionar y cual seria
el funcionaminento de Zquery + ZUpdate , o en que pagina puedo obtener
informacion.

Al menos en la versión de zeos que yo tengo existe el atributo "UpdateObjetct" y es aquí donde debes indicarle el objeto ZUpdate que va a utilizar. Este objeto te permite insertar, borrar y modificar registros.
Desde el objeto ZUpdate puedes acceder a los anteriores valores de la consulta con el prefijo "OLD_", por ejemplo ":OLD_codigo" haría referencia al valor del código en la consulta.

Espero que te sirva de algo.

Pekador
29-07-2004, 11:36:00
Al menos en la versión de zeos que yo tengo existe el atributo "UpdateObjetct" y es aquí donde debes indicarle el objeto ZUpdate que va a utilizar. Este objeto te permite insertar, borrar y modificar registros.
Desde el objeto ZUpdate puedes acceder a los anteriores valores de la consulta con el prefijo "OLD_", por ejemplo ":OLD_codigo" haría referencia al valor del código en la consulta.

Lo que no sabria es como tengo que asignar los campos que quiero por
ejemplo insertar en la BD.

No se si los cogeria automaticamente de la consulta realizada antes, o bien,
tendria que asignarlos , y como ?

Si tuviera que asignarlos , seria :
¿¿ ZQuery2.Params[0].Value:= campo.text ??


Espero haberme explicado bien.


Gracias otra vez

LuCkY_007
18-01-2007, 12:16:28
En la SQL pondrias

SELECT * FROM :tabla

Y luego...

ZQuery.ParamByName('tabla').AsString := Edit1.Text

Por ejemplo...

kayetano
18-01-2007, 14:13:53
Hola

Oye LuCkY_007 te has parado a mirar de cuando es este hilo ... la pregunta se realizó el 28-7-2004 .... ¡¡¡2004!!!
Esta bien que se colabore en el foro y se ayude al resto de compañeros ... pero ... ¡¡¡2004!!! ¡¡¡que igual ya ni trabaja en ese proyecto!!! ;)

Es broma, pero es que me ha chocado el tema de fecha.

LuCkY_007
18-01-2007, 21:03:07
Ostia tio me dao cuenta despues de poner el post, esque lo encontre con la busqueda y quise ayudar, pero despues de postear vi la fecha :(

newdelphi7
04-02-2007, 14:31:56
Bueno solo para comentar que aunque fue de hace 3 años atras la pregunta, la respuesta posteada me ha servido de gran ayuda..

So no te preocupes me ha ayudado la respuesta.....ejejeje

Es que nose ni tengo idea de como ejecutar los comandos mysql con zeos por ejemplo para mostrar una tabla, ahcer una consulta usando WHERE..

es decir nose que componentes poner ni donde poner el codigo para que se haga la consulta, si alguien me da una manito..

AzidRain
04-02-2007, 19:01:59
El componente ZQUery de Zeos encapsula todo lo necesario para tratar la consulta como si fuera una tabla cualquiera. Es decir se pueden aplicar los métodos comunes como Insert, Edit, Post, etc.

Solo hay que hacer lo siquiente:

{ Supongamos una tabla facturas con los siguientes campos:
fecha, cliente, total

Deseamos aumentar el total en un 10% de todas las facturas de hoy }


ZQuery1.Connection := MiConexion // previamente debiste haber configurado un componente ZConnection que es el que realiza la conexión
With ZQuery1 Do
Begin
SQL.Add('select * from facturas where fecha=:mifecha');
ParamByNAme('mifecha').AsDateTime := Today; //Escogemos que nos devuelva solo facturas con fecha de hoy
Open; //Aqui se realiza la consulta
//Ahora recorremos el resultado como si fuera una tabla y la vamos actualizando
While Not ZQuery1.Eof Do
Begin
Edit;
FieldByName('total').AsCurrency := FieldByName('total').AsCurrency * 1.10;
Post;
Next;
end;
Close; //Cerramos los datos.
end;


Como puedes ver el tratamiento a los resultados es identico como si fuera una tabla comun y corriente. Los componentes Zeos se encargan de hacer las actualizaciones usando SQL de forma que no hay que preocuparse por eso.
Esta forma de usar los querys solo funciona con consultas de una sola tabla, si usas varias tablas para hacer joins o similar entonces las consultas ya no son editables como muestra el ejemplo.