Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ejecutar un TSQLStoredProc desde un cliente (https://www.clubdelphi.com/foros/showthread.php?t=39574)

pmfras 24-01-2007 13:46:53

ejecutar un TSQLStoredProc desde un cliente
 
desde un cliente como hago para ejectura un TSQLStoredProc
hasta ahora hacia

generador_sp.ExecProc;
N:=generador_sp.ParamByName('S_ORDEN').AsInteger;

el stored procedure me devuelve un entero desde un generador
pero como no dividia entre cliente y servidor el componente se conectaba, ahora el problema que la coneccion la tengo en el servidor, el tema entonces es como lo ejecuto.
Espero que me haya explicado.
desde ya muchisimas gracias

Lepe 25-01-2007 12:55:32

Lo siento pero no entiendo, de hecho lo que no comprendo es: "como no dividía entre cliente y servidor el componente se conectaba"

¿Qué quieres decir con eso?, el SP siempre se ejecuta en el servidor, aunque estuviera en modo local.

Saludos

pmfras 25-01-2007 13:27:10

aclaro un poco
 
antes no tenia divido cliente y servidor, por lo que el componente lo conectaba y luego con execproc obtenia el valor incremental del orden

ahora estoy haciendo un servidor que espera y un cliente que llama, el componente "quedo" en el servidor, como hago para ejecutarlo desde el cliente y obtener el valor incremental.

espero haberme explicado mejor sino estoy para aclararlo. muchisimas gracias.

Lepe 25-01-2007 13:55:45

¿de qué Bases de datos estamos hablando?

Edito por tercera vez :D: Parece que hablas de SQL Server, esperemos que algún entendido se conecte al foro.

Saludos

pmfras 25-01-2007 16:41:43

aclaracion
 
perdon uso firebird y delphi7 en xp

Lepe 26-01-2007 11:06:16

Ahhhhhhmmmm :D

Pues entonces si puedo ayudarte ;).

Realmente en el servidor no tienes que hacer nada, es decir, ningún programa.

En el servidor instalas el Firebird Guardian y colocas tu base de datos en la carpeta que te parezca. Este programa es el que se encarga de gestionar las peticiones a todas las bases de datos Firebird, que tengas en el servidor, de los clientes.

El programa cliente sigue usando el SqlStoreProc tal y como lo utilizas ahora mismo, la filosofía es la misma. De hecho, aunque tú no habías "dividido" la parte servidor de cliente, por el hecho de usar un sqlStoreProc, estas siguiendo la filosofía Cliente/Servidor, y por tanto, no tienes que modificar nada en tu programa Cliente.

Solo has de cambiar en el objeto Database la ruta de esa base de datos, indicando la dirección del servidor: "\\192.168.0.1\nombreservidor\nombreCarpeta\MiBase.fdb"

y el cliente, salvo configuración de Firewall, se conectará sin problemas.

Si es cierto que la forma de pensar concurrentemente, no es la misma que pensando en local, ahí si tienes que revisar las cosas que has hecho y dilucidar si puede haber conflicots al usarlo desde varios clientes al mismo tiempo, estudia las transacciones de los manuales de FB.

Saludos

pmfras 31-01-2007 20:39:56

vuelvo con el tema
 
gracias lepe, lo que sucede que el programa servidor esta en otra localidad y accedo por internet, entonces lo que creo que deberia ejecutarlo el servidor y darme el nro, pero no se como se haria.

se entiende?

Lepe 31-01-2007 22:19:17

No entiendo cual es el problema.

Debes hacer lo mismo. Hasta ahora era el servidor el que te daba el número, solo que el servidor y el cliente era el mismo. Pero a todos los efectos, en el caso que nos ocupa, el modo de trabajar es el mismo.

Si el servidor tarda en responder y por eso no te funciona, mira en el TDatabase o TTransaction, tiene una propiedad TimeOut que puedes agrandar para que no pierda la conexión.

La verdad que te cuesta explicarte :(.


La franja horaria es GMT +2. Ahora son las 16:52:07.

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