PDA

Ver la Versión Completa : ejecutar un TSQLStoredProc desde un cliente


pmfras
24-01-2007, 13:46:53
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
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
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
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 :(.