Jump to content
FabianoSouza

Recordset e command numa function

Recommended Posts

Pessoal, meu sistema tem muitos grids (construidos a partir de selects). Preciso criar uma function para evitar retrabalho.

Atualmente já tenho uma estrutura que carrega os dados de uma procedure, coloca dentro do recordset e roda um código de paginação.

 

O que preciso agora é "desmembrar" isso, criando uma function para que a mesma seja reutilizada.

Aí eu passaria apenas parâmetros e a function serviria para todo meu sistema :-)

 

Atualmente a coisa está assim (isso é só um trecho, que lê a procedure no banco e passa os registros para um recordset).

A function precisa ser capaz de receber parâmetros (que podem variar em quantidade e tipo de dado) e seus respectivos valores,

rodar um command e depois rodar um recordset com os dados retornados do command.

 

Como crio esse Frankenstein?

  Dim cmd1, rs
  set cmd1 = Server.CreateObject("ADODB.Command")
  Set rs = Server.CreateObject("ADODB.Recordset") 'recordset para paginação
  cmd1.ActiveConnection = MM_conexao_STRING
  cmd1.CommandText = "dbo.minha_Procedure"
  cmd1.Parameters.Append cmd1.CreateParameter("@RETURN_VALUE", 3, 4)
  cmd1.Parameters.Append cmd1.CreateParameter("@cdu", 3, 1, 10, xyz)
  cmd1.Parameters.Append cmd1.CreateParameter("@id", 3, 1, 10, xpto)
    
  cmd1.CommandType = 4
  cmd1.CommandTimeout = 0
  cmd1.Prepared = true
  cmd1.Execute
  
  Set rs.Source = cmd1
  rs.CursorLocation = 3 'adUseClient 
  rs.CursorType = 3 'adOpenStatic
  rs.LockType = 3 'adLockBatchOptimistic
  rs.Open
  rs.PageSize  = 1

 

Share this post


Link to post
Share on other sites

  Function Frankenstein(parametro_quantidade,parametro_tipo)

    If parametro_tipo = x Then

      Frankenstein = parametro_tipo * parametro_quantidade

    Else If parametro_tipo = y Then

      Frankenstein = parametro_tipo * parametro_quantidade * 200

    End If : End If
  End Function

Vai brincando com isso que você chega lá...

  • Gostei 1

Share this post


Link to post
Share on other sites
Em 23/06/2018 at 20:41, onedev disse:

  Function Frankenstein(parametro_quantidade,parametro_tipo)

    If parametro_tipo = x Then

      Frankenstein = parametro_tipo * parametro_quantidade

    Else If parametro_tipo = y Then

      Frankenstein = parametro_tipo * parametro_quantidade * 200

    End If : End If
  End Function

Vai brincando com isso que você chega lá...

 

Cara, pode me ajudar a entender o objetivo dessa function?

Vi que faz umas multiplicações mas não entendi o resultado final.

 

Obrigado.

Share this post


Link to post
Share on other sites

Tem uma condição na função, se o "parametro_tipo" for = x a função vai fazer uma ação se for = y fará outra. Você monta da forma que lhe atender melhor, é só passar os valores na função.

Por exemplo    <%Call Frankenstein(500,x)%> daria o resultado de 500x

Se for <%Call Frankenstein(500,y)%> daria o resultado de 100000y

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.