Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-05-2010
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 288
Poder: 22
kalimero Va por buen camino
Hola.
Concluyendo ... Usa el TpFibStoredProc para ejecutar el procedimiento almacenado. A este componenente le asocias un TpFibTransaction que es al que le tienes quje hacer el commit o poner el TpFibStoredProc en autocomit.

Saludos
Responder Con Cita
  #2  
Antiguo 25-05-2010
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 22
Rockin Va por buen camino
Hola, ya lo conseguí, ha sido un fallo de novato e inutil.

Tenia que implementar el commit en el servidor de capa intermedia en el evento AfterExecute de su datasetprovider, igual que tengo el AfterApplyUpdates.

El clientdataset sirve perfectamente para ejecutar procedimientos almacenados.

Gracias a todos.
Responder Con Cita
  #3  
Antiguo 25-05-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Nadie dice que no sirva, pero nunca se diseñó para eso. Como el mismo nombre indica, el ClientDataset es para mantener un Dataset (conjunto de registros) en memoria, en la parte cliente de tu aplicación (y para actualizar sus modificaciones).

Solo tienes que leer lo que dice al respecto la documentación de Delphi :

Cita:
TClientDataset

TClientDataSet implements a database-independent dataset.

Unit

DBClient

Description

TClientDataSet represents an in-memory dataset. A client dataset can be used as

* A fully-functional, stand-alone, file-based dataset for single-tiered database applications. When used in this manner, the client dataset represents the data stored in a dedicated file on the user’s hard disk.

* A local in-memory buffer of the records from another dataset. The other (source) dataset can reside in the same form or data module as the client dataset (for example, when the client dataset provides navigation and editing support for the data from a unidirectional dataset). The source dataset can also reside on a separate system when the client dataset supports the client portion of a multi-tiered database application.

Note: The two functions described above are not mutually exclusive. An application can be designed to support the option of working with data offline, using the “briefcase” model. On site, the application uses TClientDataSet to communicate with the database server associated with a source dataset. When a user works off site, the client dataset writes a snapshot of the data to the hard disk. The application works with this snapshot off site, with the client dataset acting as a file-based dataset in a single-tiered application.

When a client dataset represents the data from another dataset, it communicates with that dataset through a dataset provider. The client dataset communicates with this provider through the IAppServer interface. When the provider is in the same form or data module as the client dataset, the IAppServer interface is implemented by a hidden object that is created for you. When used in a client application as part of a multi-tiered application, the client dataset passes all calls to the provider through a remote data module’s IAppServer interface.
No encontrarás la menor referencia a usar un ClientDataset para lanzar directamente consultas de actualización (ya vengan de procedimientos almacenados, consultas simples, ...). Repito, un ClientDataset es para mantener un Dataset en memoria.

Naturalmente puedes utilizarlo para otros menesteres, y hasta cabe la posibilidad de que incluso te funcione. Pero se trabaja mejor si utilizas la herramienta adecuada para cada tarea. Por ejemplo, matar mosquitos a cañonazos no siempre es buena idea, por divertido y atractivo que pueda parecer en un principio.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 25-05-2010 a las 16:46:31.
Responder Con Cita
  #4  
Antiguo 25-05-2010
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 22
Rockin Va por buen camino
Dime otra manera de llamar a un procedimiento almacenado a través de mi Servidor de Capa Intermedia y si veo que es mejor que la que tengo la cambio sin problemas, siempre es bueno saber cosas nuevas y mejores.

Pero un clietdataset sirve para mas cosas que meter cosas en memoria, en un servidor de capa intermedia es el clientdataset quien interactura con el y manda los cambios a la BD, para eso tiene la propiedad commandtext, pero bueno, que cada uno haga lo que quiera.
Responder Con Cita
  #5  
Antiguo 25-05-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Sinceramente no sé porqué te molestas en hacer una aplicación en tres capas, cuando desde el mismo cliente estás especificando sentencias SQL a ejecutar sobre la base de datos. Le quitas todo el sentido a las aplicaciones multicapa (abstracción de la base de datos en el cliente).

Si no tienes inconveniente en hacer eso, no veo porqué no ejecutas directamente el procedimiento almacenado en el mismo cliente.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 25-05-2010 a las 19:34:47.
Responder Con Cita
  #6  
Antiguo 25-05-2010
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 22
Rockin Va por buen camino
Lo que tu digas, me vas a decir tu ahora como se programa en multicapas, y mas en delphi y con datasnap.

Debo de estar confundido, como el Sr. Ian Marteens en su libro explicandolo.

Gracias a todos de nuevo por la ayuda, hasta la proxima.
Responder Con Cita
  #7  
Antiguo 25-05-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hasta la próxima, amigo, y regresa cuando tengas otro problema
Responder Con Cita
  #8  
Antiguo 25-05-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Puesto que tienes el libro de Marteens, te invito a leer la página 766, ahí tienes la forma correcta de ejecutar un procedimiento almacenado en una aplicación multicapa : "Extendiendo la interfaz del servidor".

Además también te invito a que me referencies donde el señor Marteens sugiere que sea una buena práctica de programación el especificar sentencias SQL en el mismo cliente.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
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
Procedimiento Almacenado rruffino Conexión con bases de datos 1 25-04-2007 18:52:51
Procedimiento Almacenado egostar Firebird e Interbase 4 15-12-2006 02:04:07
Procedimiento Almacenado pichi Vignola Firebird e Interbase 2 17-08-2006 01:07:38
Procedimiento Almacenado scooterjgm Conexión con bases de datos 5 18-01-2005 18:21:32
procedimiento almacenado haron Firebird e Interbase 2 29-09-2003 01:09:56


La franja horaria es GMT +2. Ahora son las 09:29:09.


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