May 03

Um dos recursos mais importantes de bancos de dados são as Stored Procedures, em muitos projetos que vamos desenvolver já encontramos um banco com estrutura pronta e definida, e que tem nesta estrutura uma série de stored procedures que devem ser utilizadas pelas aplicações que vão consumir este banco de dados.

Pois bem o GASweb possui uma camada que acessa dados bastante completa que abstrai do programador uma infinidade de recursos que estão prontos para serem utilizados.

Toda a página de dados que você cria com o GASweb possui uma PROVIDER, que é uma classe responsável por buscar os dados no banco e entregar para a camada de apresentação da aplicação, é nesta provider que voce vai encontrar os metodos que fazem a preparação de comandos de insert, update e delete. Nesta provider também terá os métodos que fazem os relacionamentos com as tabelas auxiliares que você cria no seu módulo de página de dados.

Para usar uma Stored Procedure do banco de dados você pode aproveitar esta estrutra de provider que o GASweb cria e chamar os métodos da nossa classe de dados para executar a sua procedure.

Vamos a um exemplo prático.

Criamos uma SP que recebe como parâmetro o ID de um produto e um fator de multiplicação, queremos que nossa SP selecione este produto no BD e faça um calculo no preço de custo dele e retorne este valor como resultado para nossa aplicação.

Segue o Código da nossa SP.

USE [Estoque]
GO
/****** Object:  StoredProcedure [dbo].[Calculo_Custo]    Script Date: 05/03/2011 15:21:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[Calculo_Custo]
    @Codigo bigint ,
    @Fator decimal(12,2),
    @Resultado Decimal(12,2) output
AS

BEGIN
    SELECT FD_VALOR_CUSTO FROM TB_PRODUTOS WHERE FD_CODIGO_PRODUTO=@Codigo
    set @Resultado=@Fator * (SELECT FD_VALOR_CUSTO FROM TB_PRODUTOS WHERE FD_CODIGO_PRODUTO=@Codigo)
    return @resultado
END

 

Veja que ele é bem simples , mas abrange bem o que queremos mostrar no GASweb , que é criar os parametros passar para a SP e pegar o resultado, usando a nossa classe de dados.

Vamos fazer uma tela de produtos como a seguinte.

image

No Evento click do botão Calcular Custo vamos colocar o nosso código que irá acessar a nossa SP.

    protected void Button1_OnClick(object sender, EventArgs e)
        {

            DataSet ds = new DataSet();
            object retVal = null;

//Na linha abaixo vamos pegar o objeto que representa o nosso Banco de dados
            DataAccessObject Dao = Settings.GetDataAccessObject(((Databases)HttpContext.Current.Application["Databases"])["Estoque"]);

//aqui começamos a criar nossos parametros
            COMPONENTS.Data.ParameterCollection SQLParam = new COMPONENTS.Data.ParameterCollection();
            SQLParam.Add("Codigo", new SqlParameter("Codigo", Convert.ToDouble(Label14.Text)));
            SQLParam.Add("Fator", new SqlParameter("Fator", Convert.ToDouble(TextBox10.Text)));
            SQLParam.Add("Resultado", new SqlParameter("Resultado", SqlDbType.Float, 10, ParameterDirection.Output, false, 2, 0, "", DataRowVersion.Current, retVal));

//Agora vamos chamar o metodo RunSP que vai executar a nossa SP
            Dao.RunSP("Calculo_Custo", SQLParam,ds);

//Aqui estamos pegando o resultado que retornou da nossa SP
            TextBox7.Text = ((System.Data.SqlClient.SqlParameter)(SQLParam["Resultado"])).Value.ToString();

 

        }

 

Bem era isso, pegue essa solução de exemplo aqui.

Pablo Hadler

Comentarios (2) -

Все проститутки Киева на mister-x.com

Posted on Friday, 17 June 2011 00:46

Молодые проститутки Киева, такие же прекрасные как цветы в Киеве. Насладитесь их незабываемой компанией.

Московские путаны

Posted on Tuesday, 16 August 2011 21:30

Зачетные девочки в Москве и других городах России и Украины только здесь.

Add comment




biuquote
Loading