Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   llamar un stored procedure de sql desde delphi (https://www.clubdelphi.com/foros/showthread.php?t=85880)

gdlrinfo 20-05-2014 00:05:04

llamar un stored procedure de sql desde delphi
 
Hola amigos yo tengo creado un estored procedure en sql que se llama proceso.sql y esta asi como lo muestro aqui

///////

use
interfazobrassociales
--- solo pasa a esa base de datos
Exec Intesinf.Control_Interfaz 9699

Exec Intesinf.pasar_liquidacion_a_plataforma 9699, 0

Exec Intesinf.control_liquidaciones_Resumido 9699

commit

---rollback

exec control_liquidaciones_resumido '19/05/2014'

//////

Mi pregunta es puedo llamarlo desde delphi sin tener que hacerlo por sql y como seria en este caso tambien necesitaria que antes de ejecutarlo se pudiera modificar la fecha por la actual y en algunos casos los numeros liquidaciones desde ya muchas gracias !

TiammatMX 20-05-2014 01:55:06

Cita:

Empezado por gdlrinfo (Mensaje 476602)
...Mi pregunta es puedo llamarlo desde delphi sin tener que hacerlo por sql...

Y la pregunta sería, ¿cómo piensas recuperar los datos que arroja como resultado el SP? Necesariamente deberías usar TADOQuery o TADOStoredProcedure para invocar tu SP.


Cita:

Empezado por gdlrinfo (Mensaje 476602)
...necesitaria que antes de ejecutarlo se pudiera modificar la fecha por la actual y en algunos casos los numeros liquidaciones...

Sencillo. Cosntruye una cadena que pondrás como contenido del SQL.Text de tu componente TADOQuery o TADOStoredProcedure, y ahí mismo le "pegas" la fecha y el número que necesites procesar...

Con éso tienes para comenzar.

gdlrinfo 20-05-2014 02:00:31

Gracias por la respuesta
 
hola amigo gracias por tu pronta respuesta te comento que los datos en este momento me los arroja sql en su ventana de consultas yo quisiera poder hacerlo desde delphi pero no logro darme cuenta como tendrias algun ejemplo ? gracias

ginkaku 20-05-2014 04:59:00

Perdon no entiendo.
Tienes una serie de consultas en sql y deseas hacer todo esto desde delphi?? Es asi?
Si fuera el caso, yo he colocado un tutorial en el club sobre el uso de SQl Server y Delphi, donde se ve como mostrar el resultado de consultas y ejecutar prodecimientos almacenados, te recomiendo que lo revises y ojala te ayude.
De igual manera hay gran información sobre esto en el FTP en la seccion de manuales

gdlrinfo 20-05-2014 20:13:58

Cita:

Empezado por ginkaku (Mensaje 476609)
Perdon no entiendo.
Tienes una serie de consultas en sql y deseas hacer todo esto desde delphi?? Es asi?
Si fuera el caso, yo he colocado un tutorial en el club sobre el uso de SQl Server y Delphi, donde se ve como mostrar el resultado de consultas y ejecutar prodecimientos almacenados, te recomiendo que lo revises y ojala te ayude.
De igual manera hay gran información sobre esto en el FTP en la seccion de manuales

Si amigo asi es tal cual lo describes miro la sección a ver que encuentro gracias como siempre

gdlrinfo 22-05-2014 23:56:57

Problemas
 
a ver chicos si me puedo explicar bien porque he intentando y no logro resolverlo pongo un ejemplo

yo abro el SQL Server Management Studio me conecto al server que uso y ahí voy a nueva consulta y por ejemplo pongo en la ventana de consultas lo siguiente ....

use interfazobrassociales

Exec Intesinf.Control_Interfaz 8888

Donde interfazobrassociales es la base de datos y el exec... es la consulta que me la muestra abajo en la ventana de consultas hasta ahí todo bien yo quiero hacer exactamente lo mismo pero desde Delphi y no logro entender como hacerlo desde ya muchas gracias

gdlrinfo 03-06-2014 22:40:37

Ya lo solucione
 
1 Archivos Adjunto(s)
Hola amigos ya solucione lo del stored asi lo llamo

Código Delphi [-]
proc.ProcedureName := 'Intesinf.Control_Interfaz';
Proc.Parameters.CreateParameter('@IdLiquidacion',ftInteger,pdInput,0,0);
Proc.Parameters.ParamByName('@IdLiquidacion').Value:= '9860';
Proc.Open;

pero tengo otro inconveniente este me devuelve distintos valores por sql en 4 bloques quisiera saber como ver los 4 bloques en Delphi ya que solo me muestra el primer bloque dejo una foto para poder mostrar lo que digo gracias saludos !!!

el 4to bloque es el que tiene los datos que necesito gracias

Disnier 17-06-2014 04:20:13

asi es como se llama desde delphi
 
suponiendo que ya tienes un ADOConnection1 a la base de datos que esta trabajando.

tienes que tener un ADOStoredProc que se conecte a ese procedemiento almacenado y luegos llamas a ese procedimiento almacenado desde delphi pasando los parametros que tienes.. esto serai un ejemplo asi.. por ejemplo esto es un procedimiento almacenado que me inserta en una tabla pasando esto paramentros que cojo de un formulario de delphi asi es como lo hago.
Código Delphi [-]
      DataModule2.ADOStoredProcInsertarTestadoMed.Connection:= DataModule1.ADOConnection1; // para conectarme a la base de dato porque lo tengo dinamico
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[0].Parameters.ParamValues['@IdTestMed']:= co;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[1].Parameters.ParamValues['@Nome']:=trim(suiEdit1.Text);
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[2].Parameters.ParamValues['@Edad']:=suiEdit5.Text;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[3].Parameters.ParamValues['@IdS']:=suiDBLookupComboBox1.KeyValue;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[4].Parameters.ParamValues['@Data']:=DateTimePicker2.Date;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[5].Parameters.ParamValues['@CantDia']:=suiEdit4.Text;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[6].Parameters.ParamValues['@NRHC']:=suiEdit3.Text;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[7].Parameters.ParamValues['@IdTestServ']:=suiDBLookupComboBox2.KeyValue;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[8].Parameters.ParamValues['@Empresa']:=trim(suiEdit7.Text);
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[9].Parameters.ParamValues['@Diag']:=trim(suiEdit2.Text);
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[10].Parameters.ParamValues['@Recomienda']:=trim(suiMemo1.Text);
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[11].Parameters.ParamValues['@Cod_Medico']:=Form12.cod;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[12].Parameters.ParamValues['@Ver']:=val;
      DataModule2.ADOStoredProcInsertarTestadoMed.Open; // mando ejecutar el procedimiento almacenado
      DataModule2.ADOStoredProcInsertarTestadoMed.Close;// lo cierro

asi es como lo hago.. los insert update, select y delete espero que me entiendas.. saludos disnier

ecfisa 17-06-2014 05:04:01

Hola Disnier, bienvenido a Club Delphi :)

Por favor cuando incluyas código en los mensajes usa TAG's, para darle mas legibilidad, esta imágen explica el uso:



Saludos :)

gdlrinfo 17-06-2014 20:14:59

Adostored
 
Cita:

Empezado por Disnier (Mensaje 477908)
suponiendo que ya tienes un ADOConnection1 a la base de datos que esta trabajando.

tienes que tener un ADOStoredProc que se conecte a ese procedemiento almacenado y luegos llamas a ese procedimiento almacenado desde delphi pasando los parametros que tienes.. esto serai un ejemplo asi.. por ejemplo esto es un procedimiento almacenado que me inserta en una tabla pasando esto paramentros que cojo de un formulario de delphi asi es como lo hago.
Código Delphi [-]
      DataModule2.ADOStoredProcInsertarTestadoMed.Connection:= DataModule1.ADOConnection1; // para conectarme a la base de dato porque lo tengo dinamico
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[0].Parameters.ParamValues['@IdTestMed']:= co;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[1].Parameters.ParamValues['@Nome']:=trim(suiEdit1.Text);
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[2].Parameters.ParamValues['@Edad']:=suiEdit5.Text;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[3].Parameters.ParamValues['@IdS']:=suiDBLookupComboBox1.KeyValue;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[4].Parameters.ParamValues['@Data']:=DateTimePicker2.Date;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[5].Parameters.ParamValues['@CantDia']:=suiEdit4.Text;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[6].Parameters.ParamValues['@NRHC']:=suiEdit3.Text;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[7].Parameters.ParamValues['@IdTestServ']:=suiDBLookupComboBox2.KeyValue;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[8].Parameters.ParamValues['@Empresa']:=trim(suiEdit7.Text);
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[9].Parameters.ParamValues['@Diag']:=trim(suiEdit2.Text);
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[10].Parameters.ParamValues['@Recomienda']:=trim(suiMemo1.Text);
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[11].Parameters.ParamValues['@Cod_Medico']:=Form12.cod;
      DataModule2.ADOStoredProcInsertarTestadoMed.Parameters[12].Parameters.ParamValues['@Ver']:=val;
      DataModule2.ADOStoredProcInsertarTestadoMed.Open; // mando ejecutar el procedimiento almacenado
      DataModule2.ADOStoredProcInsertarTestadoMed.Close;// lo cierro

asi es como lo hago.. los insert update, select y delete espero que me entiendas.. saludos disnier

Si lo del ADOStored ya esta puesto si miras figura como Proc, igual lo que yo quiero hacer es que en sql me lo tira como en distintas grillas yo quiero ver todas las grillas en una en Delphi gracias saludos


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

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