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 21-05-2003
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
mosorio Va por buen camino
Información sobre IBClienDataset

Hola,
Tengo D6, estoy haciendo un aplicativo utilizando DM y DBExpress, los conecto de la forma que aparece en los manuales y como siempre lo he hecho pero me esta dando problemas ya que tengo unas plantillas con un FDatasource como propiedad para manejar todas las transacciones en la plantilla y olvidarme de hacerlo constantemente para cada una de los modulos, pero el problema consiste en que al insertar un nuevo registro, en la pagina de los componentes siempre me aparece el registro anterior y no me deja o no graba la inf despues de hacer el post y en el evento afterpost le doy el applyupdate(0).
La plantilla consiste en un menu, toolbar, dos paginas una donde esta la grilla y la otra para editar los datos y las respectivas lineas para insertar, etc. es sencilla, de hecho el otro aplicativo que estaba haciendo me funcionaba perfectamente con esto y los cds, sqlconn, dsp, etc. para permitir el procesado de la info.

Pero ahora he hecho la prueba con el IBClientDataset, lo poco que he leido es que trae incorporado el dsp, qry, pero no se si sea optimo para la programación con el firebird si no hay problemas de velocidad, etc.
He perdido totalmente la conexion con el lenguaje y se que es mortal para retomar la programación, pero como dice el dicho "Lo bien aprendido nunca se olvida" solo que cuesta trabajo retomar lo que se ha hecho antes.

Solicito la ayuda de usd. para poder continuar con esto.

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 21-05-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Te desaconsejo la utilización de IBClientDataSets, todos estos clientdatasets integrados (SQLClientDataSet, IBClientDataSet, BDEClientDataSet, ...) tienen ciertas deficiencias, y Borland no recomienda su utilización.

¿ Que error te da, con un query dbExpress y un ClientDataSet ?

Por cierto, si usas Firebird 1.5 RC2, seguramente tendrás problemas con el driver dbExpress de Borland. A mi me ha pasado que consultas que funcionaban, devuelven error. La solución pasa por utilizar un driver dbExpress específico para Firebird, como el de http://www.upscene.com

NOTA : La mala noticia es que los campos en coma flotante, en lugar de reconocerlos como TFMTBCDField los reconoce como TFloatField, por lo que hay que cambiar todos los campos persistentes de ese tipo. Aunque es un cambio inevitable, puesto que Delphi 7 también lo ha hecho, para hacer compatible los campos devueltos por el driver dbExpress de InterBase, con los de otras bases de datos.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 21-05-2003
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
mosorio Va por buen camino
Hola,
Debido a esta información que me has dado en el otro hilo, que por cierto me había equivocado, he vuelto a la versión anterior de firebird 1.0.2, el error que me da con dbexpress es que no puede realizar una transaccion en un componente de una sola dirección, algo asi.
Los componente que tengo son:
SQLConnection, Comprobada la conexión con la BD, StoredProcedure, SQLQry de DBExpress, en el cual hago la sentencia SQL, ClientDataSet de los normalitos sin cambiar las propiedades, solo asignando las que son: providername.
La conexion la abro en el datamodulo, tambien los CDS

Al momento de salvar es cuando sale el error, siendo que hago el post en el boton de guardar y en el evento afterpost hago el applyupdate.
Ademas que cuando hago la inserción como dije anteriormente me deja los mismos datos del registro anterior.

Gracias por la ayuda
Responder Con Cita
  #4  
Antiguo 21-05-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Mírate bien el mensaje de error. No creo que sea que no se puede abrir una transacción en un dataset unidireccional. Mas bien parece que tengas el error : No se puede actualizar un dataset unidireccional (o algo similar).

El tema de las transacciones en dbExpress se hace a nivel de la conexión, y cuando abres una conexión, se hace independientemente de las consultas que vayas a ejecutar posteriormente. Por eso dudo de que ese error esté relacionado con las transacciones.

Asegúrate que en el Provider no tengas activada la opción ResolveToDataSet que por defecto está desactivada. En este caso el ClientDataSet pasaría la modificación al SQLQuery, y como este es unidireccional y de solo lectura, saltaria un error de que no se puede actualizar.

Normalmente el error de que no se puede actualizar un dataset unidireccional, estaría porqué los cambios los haces sobre el SQLQuery, en lugar de sobre el ClientDataSet.

¿ Puedes indicarnos el mensaje de error exacto que te sale ?

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 21-05-2003
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
mosorio Va por buen camino
Hola,
Siiii, el error es el que indicas y claro que tienes razón, he cambiado la propiedad de que resuelva a través del dataset, es decir he colocado a true la propiedad de resolvetodataset en true. Cuando llegue a casa lo miro y sis todo va bien continuaré.

Gracias miles
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


La franja horaria es GMT +2. Ahora son las 00:34:05.


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