Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-06-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
Tipo de tablas en ZEOS: ¿TZQuery o TZTable?

Hola.
Hace poco he tenido que modificar la capa de acceso a datos de una aplicación, he pasado de Firebird a MySQL. En principio todo ha ido bien, pero el problema ha empezado al pasar las tablas de tipo TIBDataset a TZQuery con TZUpdateSQL como objeto para actualizar los datos.

La versión que manejo de Zeos es la 6.6.6.

En principio, para las tablas pequeñas con pocos campos y pocos registros, tablas del tipo TZTable van bien, sin problemas. He cambiado del objeto TIBTable directamente, ahora bien, con la otra me surgen dos cosas.

El primer error ha sido que en la rutina de inserción o modificación SQL que se pone en el propio objeto TZUpdateSQL, las Zeos añaden como parámetros los campos de localización del Where. Por ejemplo

Código:
update tbdatos set 
APELLIDO1= ?APELLIDO1,
APELLIDO2= ?APELLIDO2,
CENTRO= ?CENTRO,
COD_POSTAL= ?COD_POSTAL,
DIRECCION= ?DIRECCION,
DNI= ?DNI,
FECHA_ALTA= ?FECHA_ALTA,
FECHA_NAC= ?FECHA_NAC,
where
dni=?old_dni
and centro=?old_centro
Es entonces donde genera dos parámetros "dni" y "centro", que los objetos TIBdataset no generan, por ello para evitar el error "El número de parámetros tipo Input es menor del esperado" que me aparecía, genero en el evento OnBeforePost de la tabla TZQuery

Código:
TQueryTb.Params.ParamValues['centro']:=bd.TbCENTRO.Value;
TQueryTb.Params.ParamValues['dni']:=bd.TbDNI.Value;
Y entonces el error no se da, pero aunque aparentemente los datos los guarda, en cuanto salgo de la tabla y vuelvo a abrirla no se ha guardado ningún dato.

He comprobado en el TZConnection que el AutoCommit está a True pero aún poniéndolo a False y guardando los datos con Commit a nivel de código, la información no se guarda. La consulta no produce error porque ya en Interbase iba bien.

Mi duda es, dado que el objeto TZTable no me da ningún fallo si cambiar a este objeto será mejor que usar el TZQuery con TZUpdateSQL como objeto para actualizar los datos. Lo malo que he leído que el TZTable con millones de registros no va bien, y claro, dentro de las bases que manejo, hay con medio millón pero hay alguna con 2 ó 3 millones de registros y no quiero que todo vaya tan lento que no se pueda trabajar.

Gracias de antemano, a ver si alguien con más experiencia en este componente me puede echar una mano, seguramente sea una tontería pero no la encuentro.

Saludos

Última edición por Jab fecha: 25-06-2010 a las 18:03:35.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Uso de TZQuery y TZUpdateSQL jrperezt MySQL 4 03-02-2009 18:14:09
Problemas Con El Clientdataset Y Tztable foxito Conexión con bases de datos 4 24-11-2008 17:38:37
Experiencia personal: TZtable + ZStoredProc (Zeos) + Generators (Firebird 2.1) juanblack Firebird e Interbase 3 18-06-2008 16:36:21
ExecSQL en TZTable david_uh Varios 1 20-06-2007 01:22:43
¿ Limit en TZTable de los Zeos ? against Conexión con bases de datos 2 26-09-2006 16:36:24


La franja horaria es GMT +2. Ahora son las 22:03:15.


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
Copyright 1996-2007 Club Delphi