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

Respuesta
 
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
  #2  
Antiguo 25-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En principio sólo se me ocurre preguntar una cosa: Un proyecto que está funcionando y que tiene tablas con millones de registros... ¿por qué lo cambias de firebird a mysql?
Responder Con Cita
  #3  
Antiguo 25-06-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
La version 6.6.6. de Zeos tiene algunos bugs. Por ahí publiqué algún hilo mencionándolo. Por otro lado TZtable es un TZQuery con un SQL tipo "select * from table" por lo que no vale la pena usarlo mas que para tablas de unos cuantos registros.

Se me hace un poco raro la forma como manejas los parámetros porque Zeos usa ":" en lugar de "?" para indicarlos. El TZUpdateSQL solo se utiliza cuando el query original es multitabla, de lo contrario puedes editar directamente los datos del query, Zeos se encarga de lo demás. Creo que el erro es la forma en como estás indicando los parámetros.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #4  
Antiguo 26-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por AzidRain Ver Mensaje
La version 6.6.6. de Zeos tiene algunos bugs. Por ahí publiqué algún hilo mencionándolo. Por otro lado TZtable es un TZQuery con un SQL tipo "select * from table" por lo que no vale la pena usarlo mas que para tablas de unos cuantos registros.[..]
¿Entonces para qué sirve la propiedad "SQL" del ZQuery?, ¿en zeos qué componente es un Query "normal"?
Responder Con Cita
  #5  
Antiguo 26-06-2010
Gamael Hdez Gamael Hdez is offline
Miembro
 
Registrado: mar 2010
Ubicación: Cd Carmen, Campeche
Posts: 10
Poder: 0
Gamael Hdez Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Entonces para qué sirve la propiedad "SQL" del ZQuery?, ¿en zeos qué componente es un Query "normal"?
el TzQuery es un Query normal, con el puedes hacer cualquier consulta, edicion, actualizacion,iniciar transacciones, etc.
Responder Con Cita
  #6  
Antiguo 26-06-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Casimiro: EL TZtable es como si fuera un TZQuery en donde la propiedad SQL tiene "select * from tabla".

Con un TZQuery (y tambien TZTable) puedes poner lo mismo y utilizar las funciones Edit, Insert, Post y Cancel.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #7  
Antiguo 26-06-2010
Gamael Hdez Gamael Hdez is offline
Miembro
 
Registrado: mar 2010
Ubicación: Cd Carmen, Campeche
Posts: 10
Poder: 0
Gamael Hdez Va por buen camino
Como le haces al guardar??, le das un Applyupdate al finalizar todas las inserciones??
verifica la propiedad TransactIsolationLevel del tzconnection a lo mejor x ahi puede star l problema.
Responder Con Cita
Respuesta



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 20:27:19.


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