Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Silvio Grenzi

Criação de relatórios usando 3 camadas e banco MySQL

Recommended Posts

Bom dia!

 

Pessoal, sou novo no fórum e me cadastrei aqui porque não consegui encontrar ajuda no google ou em qualquer outro lugar sobre como criar relatórios usando uma arquitetura de 3 camadas. A maioria dos exemplos que vi, pede para usar um Dataset criando uma nova conexão de acesso ao banco, mas isso eu não quero. Eu quero usar a camada de acesso ao banco que já possuo, onde tem a string de conexão com o banco e os métodos que uso para consultas, inserts, deletes e updates.

 

Não tenho muita experiência em desenvolvimento de aplicações OO, fiz alguns cursos de Java, C#, mas fuçando no Visual Studio consegui progredir bastante no desenvolvimento em C# Windows Form do sistema que estou criando para minha confecção, mas esbarrei nessa dificuldade com a criação de relatórios usando essa arquitetura.

 

Decidi criar o sistema baseando-me nos conceitos que adiquiri na outra empresa onde trabalhei, separando o desenvolvimento em camadas (dados, negócio e apresentação), pois não queria ficar preso a uma só tecnologia e facilitar também a manutenção do sistema, deixando tudo separado e reutilizando códigos.

 

Na classe que chamo de "banco.cs" tenho a string de conexão com o MySQL e os métodos que criei para consultar e manipular o banco.

 

Nas classes de negócio, tenho as propiredades de acordo com cada classe e o objeto da classe banco que crio para poder chamar os métodos de consulta e manipulação do banco onde defino as querys de consulta de uma determinda tabela, inserts, updates, deletes, carga de combobox, datagridview entre outros.

 

E tenho os Windows Forms que criei para cadastro de pessoas(fisicas ou juridicas), matérias-primas, receitas, despesas, controle de estoque entre outros formulários que criei e outros que ainda estão em desenvolvimento.

 

Minha dúvida é como utilizar essa estrutura para criar relatórios usando os produtos que tenho disponível (crystal reports ou stimulsoft reports ou mesmo o Report do Visual Studio) sem ter que recriar as conexões ao banco a todo relatório que for criar.

 

Criei um método na classe banco que carrega e retorna um Dataset como aparece abaixo:

 

public Banco() {

conexao = @"server=xxxxxxxxx;User Id=xxxx;password=xxxxxx;Persist Security Info=True;database=xxxxxx";

conn = new MySqlConnection(conexao);

cmd = null;

}

 

public DataSet RetornaDataSet(string Sql) {

conn.Open();

cmd = new MySqlCommand(Sql, conn);

cmd.CommandType = CommandType.Text;

MySqlDataAdapter da = new MySqlDataAdapter(cmd);

DataSet dset = new DataSet();

da.Fill(dset);

conn.Close();

return dset;

}

 

Na classe de negócio, chamo o método dessa forma:

 

class Cor : Banco {

 

public int IdCor { get; set; }

public string DescCor { get; set; }

 

Banco objBanco = new Banco();

 

public DataSet ObtemCor() {

return objBanco.RetornaDataSet("select * from cor");

}

}

 

Esse é apenas um exemplo, onde tentei gerar, como um teste, uma relação de cores de um determinado material (cores de tecidos ou aviamentos).

 

No Form do relatório que estou criando, tenho o objeto da classe Cor, mas não sei como chamar o método ObtemCor() dessa classe e atribuir o retorno em um Dataset e usá-lo em um Report. Será que essa é a forma correta ou o melhor caminho? Alguém poderia me ajudar nessa questão?

 

Fico muito grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem, no meu ponto de vista bastaria instanciar sua classe Cor e chamar o método.

 

Cor cor = New Cor();
cor.ObtemCor();

 

Não seria isso?

 

Abraços...

 

Oi quintelab!

Essa instância eu criei. Não sei como atribuir esse retorno no relatório. Por exemplo, quando vou criar o relatório, ele pede para criar um Dataset de onde ele vai buscar esses dados, mas não consigo ou não sei fazer com que o relatório use as informações retornadas da chamada do método.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um tempo que não mexo com relatórios, mas tinha 2 opções, criar um dataset tipado, mesmo que você tenha sua camada de dados não acho que criar esse dataset seja um problema. Ou ainda informar sua classe.

 

Não basta você usar seu método RetornaDataSet ?

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.