** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Otros Productos Microsoft
  Mensajes nuevos Mensajes nuevos RSS - Store Procedure
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoStore Procedure

 Responder Responder
Autor
Mensaje
cabraloca Ver desplegable
Nuevo
Nuevo


Unido: 04/Agosto/2014
Localización: españa
Estado: Sin conexión
Puntos: 32
Enlace directo a este mensaje Tema: Store Procedure
    Enviado: 24/Septiembre/2014 a las 10:58
Hola he hecho un procedure en sql server qe me tiene que devolver 0 o 1 y quiero recoger este resultado.
Os pego lo que tengo y me decís como puedo hacerlo.

Store Procedure: 

USE [HRTDB]
GO
/****** Object:  StoredProcedure [dbo].[Val_SolapamientoFechas]    Script Date: 24/09/2014 10:20:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc  [dbo].[Val_SolapamientoFechas]
@dateFor as  varchar(20), 
@dateTo as  varchar(20),
@idEmp as  varchar(20),
@tbl as varchar(20)
as
-- exec dbo.Val_SolapamientoFechas 1,2589,2014,'Employee_WalkingDeads'
declare @sql as varchar(500)
declare @tb as table (Num int)
DECLARE @result int 
--begin try
set @sql= 
'insert into @tb select =count(*)
from [dbo].['+ @tbl +'] 
WHERE Emp_Id='+ @idEmp +'
and( '+''''+ @dateFor+'''' +' BETWEEN [DateForm] AND [DateTo]
or '+''''+ @dateTo+'''' +' BETWEEN [DateForm] AND [DateTo]
or ( '+''''+ @dateFor +''''+'  > [DateForm] and  '+''''+ @dateTo +''''+'  <[DateTo])
or ( '+''''+ @dateFor +''''+'  < [DateForm] and  '+''''+ @dateTo +''''+'  >[DateTo]))'
select @result=num from @tb
if (@result) > 0 
set @result=1 -- hay filas, 
else --1=Error, 0=ok
set @result=0 -- no hya filas
GO


Funcion:

Public Function validaSolapamientoFechas(DateFrom As String, DateTo As String, idEmp As Integer, tbl As String) As Boolean
Dim str1 As String
Dim cnn1 As ADODB.Connection
Set cnn1 = GetNewConnection
Dim valReturn As String

DateFrom = convertirFechaMMDDAAAA(DateFrom)
DateTo = convertirFechaMMDDAAAA(DateTo)

   'On Error GoTo UserForm_Initialize_Err
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim sql As String
    Dim ADODBCmd As ADODB.Command
    Set cnn = GetNewConnection

    'Open recordset
    Set ADODBCmd = New ADODB.Command
    ADODBCmd.ActiveConnection = cnn
    ADODBCmd.CommandText = "Val_SolapamientoFechas"
    ADODBCmd.CommandType = adCmdStoredProc
    ADODBCmd.Parameters.Refresh
    ADODBCmd.Parameters(1).Value = DateFrom
    ADODBCmd.Parameters(2).Value = DateTo
    ADODBCmd.Parameters(3).Value = idEmp
    ADODBCmd.Parameters(4).Value = tbl

    Set rst = ADODBCmd.Execute()
    
    'Aqui es donde me gustaria qe me recogiera el resultado como Integer o String me da igual


Un saludo y gracias de antemano!

Arriba
guarracuco Ver desplegable
Moderador
Moderador
Avatar

Unido: 24/Abril/2004
Localización: EEUU
Estado: Sin conexión
Puntos: 2976
Enlace directo a este mensaje Enviado: 24/Septiembre/2014 a las 13:00
if not rst.eof then
valor=rst(0)
end if

no te falta agregar los parámetros?(append)


Editado por guarracuco - 24/Septiembre/2014 a las 13:05
https://tucondominioaldia.net
Arriba
cabraloca Ver desplegable
Nuevo
Nuevo


Unido: 04/Agosto/2014
Localización: españa
Estado: Sin conexión
Puntos: 32
Enlace directo a este mensaje Enviado: 24/Septiembre/2014 a las 13:21
Pues ni idea la verdad es que estoy un poco verde, voy a probar
Arriba
guarracuco Ver desplegable
Moderador
Moderador
Avatar

Unido: 24/Abril/2004
Localización: EEUU
Estado: Sin conexión
Puntos: 2976
Enlace directo a este mensaje Enviado: 24/Septiembre/2014 a las 14:55
Si no vas a recibir registros como respuesta, no vale la pena declarar, cargar un recordset.

Debes usar la instrucción: cmd.Execute Options:=adExecuteNoRecords
para que no devuelva registros

Es mejor obtener la respuesta por medio de un parámetro de tipo output.

También veo errores como [dataform] en lugar de [datafrom] que asumo es el nombre correcto de la columna.
En resumen, el tipo de parámetro input es para enviar valores al procedimiento; el tipo de parámetro output es para obtener respuesta del procedimiento.

Pienso que debes comenzar por un procedimiento mas sencillo e ir aumentando la complejidad.
Encontré este ejemplo que se aproxima al vuestro:
http://bytes.com/topic/access/answers/205120-get-stored-procedure-output-value-back-vba
https://tucondominioaldia.net
Arriba
cabraloca Ver desplegable
Nuevo
Nuevo


Unido: 04/Agosto/2014
Localización: españa
Estado: Sin conexión
Puntos: 32
Enlace directo a este mensaje Enviado: 25/Septiembre/2014 a las 09:13
resuelto, en vez de devolvr un return 0, retorno un select 0.
Gracias, un saludo
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable