Jump to content
MarKteus

Como fazer proc Oracle retornar valores para serem usados na aplicação

Recommended Posts

Olá

Alguém sabe como posso fazer a procedure Oracle retornar para serem valores usados na aplicação assim como já acontece no SQL ?

 

Estou tentando conforme abaixo, não há erros na proc, mas não consigo obter os valores dos campos.

 

O que há de errado ?

 

create or replace PROCEDURE SP_SELECIONA_CLIENTE
(
-- Parametros de entrada
P_ID IN CLIENTE.IDCLIENTE%TYPE
) AS

-- Parametros de saida
VIDCLIENTE CLIENTE.IDCLIENTE%TYPE;
VNOMECLIENTE CLIENTE.NOMECLIENTE%TYPE;
VDATACADASTRO CLIENTE.DATACADASTRO%TYPE;

CURSOR regCliente(P_ID IN CLIENTE.IDCLIENTE%TYPE) IS
SELECT "IDCLIENTE", "NOMECLIENTE", "DATACADASTRO"
FROM CLIENTE C WHERE C.IDCLIENTE = P_ID;

regs regCliente%ROWTYPE;

CURSOR regClientes IS
SELECT "IDCLIENTE", "NOMECLIENTE", "DATACADASTRO"
FROM CLIENTE C;

regs regClientes%ROWTYPE;

BEGIN


IF P_ID IS NOT NULL THEN

IF regCliente%ISOPEN THEN
CLOSE regCliente;
END IF;

OPEN regCliente(P_ID);
FETCH regCliente into
VIDCLIENTE, VNOMECLIENTE, VDATACADASTRO;
ELSE

IF regClientes%ISOPEN THEN
CLOSE regClientes;
END IF;

OPEN regClientes;
FETCH regClientes into
VIDCLIENTE, VNOMECLIENTE, VDATACADASTRO;
END IF;

END;

Share this post


Link to post
Share on other sites

O que se quer retornar ? A SP acims só tem 1 parâmetro de entrada não retornando nada.

Share this post


Link to post
Share on other sites

VIDCLIENTE CLIENTE.IDCLIENTE%TYPE;

VNOMECLIENTE CLIENTE.NOMECLIENTE%TYPE;
VDATACADASTRO CLIENTE.DATACADASTRO%TYPE;

 

Quero retornar as variaveis acima, mas esse foi só um dos testes que estou realizando vejo outro:

 

create or replace PROCEDURE SP_SELECIONA_CLIENTEE
(
-- Parametros de entrada
P_ID IN CLIENTE.IDCLIENTE%TYPE
) AS

--DECLARE
-- Parametros de saida
VIDCLIENTE CLIENTE.IDCLIENTE%TYPE;
VNOMECLIENTE CLIENTE.NOMECLIENTE%TYPE;
VDATACADASTRO CLIENTE.DATACADASTRO%TYPE;

CURSOR regClientes IS
SELECT "IDCLIENTE", "NOMECLIENTE", "DATACADASTRO"
into VIDCLIENTE, VNOMECLIENTE, VDATACADASTRO
FROM CLIENTE C;

BEGIN


OPEN regClientes;
loop
fetch regClientes into vidcliente, vnomecliente, vdatacadastro;
exit when regClientes%notfound;
end loop;
close regClientes;

END;

Share this post


Link to post
Share on other sites

Motta, obrigado

 

Estou vendo esses exemplos desde ontem a noite, ta osso,

 

vc tem como me dizer se a minha PROC está correta pq percebi que cada exemplo constrói um cursor diferente

 

Essa minha última não está com erro de compilation e eu já testei e vi que tem dados a serem retornados contudo não consigo capturar esses dados na minha aplicação C#.

 

Fiz de uma outra maneira e também está correto veja abaixo, porém não consigo resgatar a informação na aplicação.

create or replace PROCEDURE SP_SELECIONA_CLIENTEE
(
-- Parametros de entrada
P_ID IN CLIENTE.IDCLIENTE%TYPE,
VIDCLIENTE out CLIENTE.IDCLIENTE%TYPE,
VNOMECLIENTE out CLIENTE.NOMECLIENTE%TYPE,
VDATACADASTRO out CLIENTE.DATACADASTRO%TYPE
) AS

--DECLARE
-- Parametros de saida


CURSOR regClientes IS
SELECT "IDCLIENTE", "NOMECLIENTE", "DATACADASTRO"
into VIDCLIENTE, VNOMECLIENTE, VDATACADASTRO
FROM CLIENTE C;

BEGIN


OPEN regClientes;
loop
fetch regClientes into vidcliente, vnomecliente, vdatacadastro;
exit when regClientes%notfound;
end loop;
close regClientes;

END;



Share this post


Link to post
Share on other sites

VIDCLIENTE CLIENTE.IDCLIENTE%TYPE;

VNOMECLIENTE CLIENTE.NOMECLIENTE%TYPE;

VDATACADASTRO CLIENTE.DATACADASTRO%TYPE;

 

Quero retornar as variaveis acima, mas esse foi só um dos testes que estou realizando vejo outro:

 

create or replace PROCEDURE SP_SELECIONA_CLIENTEE

(

-- Parametros de entrada

P_ID IN CLIENTE.IDCLIENTE%TYPE

) AS

 

--DECLARE

-- Parametros de saida

VIDCLIENTE CLIENTE.IDCLIENTE%TYPE;

VNOMECLIENTE CLIENTE.NOMECLIENTE%TYPE;

VDATACADASTRO CLIENTE.DATACADASTRO%TYPE;

 

CURSOR regClientes IS

SELECT "IDCLIENTE", "NOMECLIENTE", "DATACADASTRO"

into VIDCLIENTE, VNOMECLIENTE, VDATACADASTRO

FROM CLIENTE C;

BEGIN

 

 

OPEN regClientes;

loop

fetch regClientes into vidcliente, vnomecliente, vdatacadastro;

exit when regClientes%notfound;

end loop;

close regClientes;

 

END;

 

 

1º - Não põe o into no cursor

2º - você não esta filtrando a tabela cliente

3º - Como está passando o id, não precisa de um loop, já que o objetivo, suponho, seja de trazer informações de um registro.

reate or replace PROCEDURE SP_SELECIONA_CLIENTEE

(

-- Parametros de entrada

P_ID IN CLIENTE.IDCLIENTE%TYPE,

-- Parametros de saida

VIDCLIENTE out CLIENTE.IDCLIENTE%TYPE,

VNOMECLIENTE out CLIENTE.NOMECLIENTE%TYPE,

VDATACADASTRO out CLIENTE.DATACADASTRO%TYPE

) AS

 

 

CURSOR regClientes IS

SELECT "IDCLIENTE", "NOMECLIENTE", "DATACADASTRO"

FROM CLIENTE C

WHERE ID = P_ID;

 

begin

open regClientes;

fetch regClientes into VIDCLIENTE, VNOMECLIENTE, VDATACADASTRO;

close regCliente;

end;

Share this post


Link to post
Share on other sites

Essa é apenas uma das querys, tbm terei sitiuações de retornos com mais de uma linha

 

Testei a proc que vc enviou Sergio ele não deu erro mas não retorna nada na aplicação

HasRow = false

Share this post


Link to post
Share on other sites

rode isto pra checar se está vindo retorno

caso tenha retorno o problema esta na chamada do c#

 

 

declare

 

v_P_ID cd_firmas.firma%TYPE;
v_VIDCLIENTE cd_firmas.firma%TYPE;
v_VNOMECLIENTE cd_firmas.nome%TYPE;
v_VDATACADASTRO date;

begin

 

 

v_p_id := informe um id aqui pra checagem

SP_SELECIONA_CLIENTEE( v_P_ID ,
v_VIDCLIENTE ,
v_VNOMECLIENTE ,
v_VDATACADASTRO );

dbms_output.put_line('p_id:' || v_p_id);
dbms_output.put_line('VIDCLIENTE:' || v_VIDCLIENTE);
dbms_output.put_line('VNOMECLIENTE:' || v_VNOMECLIENTE);
dbms_output.put_line('VDATACADASTRO:' || v_VDATACADASTRO);



END;

Share this post


Link to post
Share on other sites

qdo for mais de uma linha o retorno terá que ser um tipo table e nao um rowtype da tabela

 

o rowtype seria pra retorna um registro da tabela

 

você terá que criar um um tipo table

Type cliente_tab Is Table Of cliente%Rowtype Index By Binary_Integer;

 

create or replace PROCEDURE SP_LISTA_CLIENTE
( TAB_CLIENTE OUT CLIENTE_TAB


) AS

 

CURSOR regClientes IS
SELECT *
FROM CLIENTE C

;

 

 

v_i number(9);

 

begin

v_i := 1;

for reg in regClientes loop

v_i := v_i + 1;

tab_cliente(v_i).IDCLIENTE := reg.idcliente;
tab_cliente(v_i).NOMECLIENTE := reg.nomecliente;
tab_cliente(v_i).DATACADASTRO := reg.datacadastro;

end loop;

end;

 

se for muita informação, pode ser melhorado com bulk collection

Share this post


Link to post
Share on other sites

Create Type cliente_tab Is Table Of cliente%Rowtype Index By Binary_Integer;

 

a linha acima está retornando o erro a seguir:

 

Error at line 0: PL/SQL: Compilation unit analysis terminated

Share this post


Link to post
Share on other sites
Tentando conforme abaixo o erro muda para:
Error at line 21: PLS-00103: Encountered the symbol ""
1. create or replace PROCEDURE SP_SELECIONA_CLIENTES2. ( 3.     P_TB_CLIENTE OUT CONTAINER_CLIENTE4. )

create or replace type "CONTAINER_CLIENTE" as table of CLIENTE%RowType
create or replace PROCEDURE SP_SELECIONA_CLIENTES
(
P_TB_CLIENTE OUT CONTAINER_CLIENTE
)
AS
CURSOR regClientes IS
SELECT IDCLIENTE, NOMECLIENTE, DATACADASTRO FROM CLIENTE C;
v_i number(9);
BEGIN
v_i := 1;
FOR reg IN regClientes LOOP
v_i := v_i + 1;
P_TB_CLIENTE (v_i).IDCLIENTE := reg.idcliente;
P_TB_CLIENTE (v_i).NOMECLIENTE := reg.nomecliente;
P_TB_CLIENTE (v_i).DATACADASTRO := reg.datacadastro;
END LOOP;
END;​

Share this post


Link to post
Share on other sites

Será que estes erros podem estar sendo causados pelo Oracle Application Express a GUI do Oracle que roda no Browser ?

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

  • Similar Content

    • By rtavix
      Estou realizando uma implementação de um determinado relatório, e implementei a estrutura(html da pagina) do mesmo dinamicamente, entretanto quando vou tentar imprimir ele com os dados preenchidos o mesmo não abre uma aba a parte mostrando toda essa estrutura da pagina. Estou tentando fazer via JavaScript, porém não funciona. meu ação do clique do botão de imprimir é esse:
      <div class="box-footer"> <button class="btn btn-padrao" id="btnImprime" runat="server" visible="false" onserverclick="btnImprimir_ServerClick">Imprimir</button></i>Novo</button> </div> Meu javaScript é esse:
      function Imprimir() { var panel = document.getElementById("ConteinerImprimir"); var printWindow = window.open('', '', ''); printWindow.document.write('<html><head><script src="JsRelatorioFinanciamento.js"></script>'); printWindow.document.write('<link href="../StyleJs.RelFinanciamento.css" rel="stylesheet"/>'); printWindow.document.write('</head><body>'); printWindow.document.write('<div class="conteiner" style="width: 700px">' + panel.innerHTML + '</div>'); printWindow.document.write('</body></html>'); printWindow.document.close(); setTimeout(function () { printWindow.print(); }, 500); return false; e meu código .cs que realiza a implementação da estrutura da pagina em html dinâmico é esse: 
      #region html #region Header private string header = @" <table style = 'margin-bottom: 0px;'> <tr id='topLogo'> <img src = 'http://internet.sefaz.es.gov.br/imagens/topo_brasao.png' alt=''> <td style = 'border: 0px; padding-bottom: 5px;'> <h2 style='margin-top: 15px;' class='center'> TESTE 1 </h2> <h3 style = 'margin-top: 15px;' class='center'> TESTE 2 - 2<br/> </h3> <h3 style = 'margin-top: 15px;' class='center'> TESTE 3<br/> </h3> <h3 style = 'margin-top: 15px;' class='center'> FINANCIAMENTO LIBERADO - TODAS EMPRESAS<br/> </h3> <h3 style = 'margin-top: 15px;' class='center'> Base {1}<br/> </h3> <h1 style = 'margin-top: 15px;' class='left'> EmpresasTESTE4 - {2}<br/> </h1> </td> </tr> </table>"; #endregion #region Conteudo private const string dadosFinanciamento = @" <table style='padding: 0px; margin: 0px;' class='no-bold'> <tr class='tr-center'> <tr> <td colspan = '4' > Razão Social <h4> {0}</h4> </td> </tr> <tr> <td>Inscrição Estadual <h4 class='center'>{1}</h4> </td> <td colspan ='2'> C.N.P.J <h4> {2} </h4> </td> <td colspan='2'>Nome Fantasia <h4>{3}</h4> </td> </tr> </table> <br/>"; #endregion #region ValoresFin private const string dadosValores = @" <table style='padding: 0px; margin: 0px;'class='no-bold'> <tr> <td rowspan = '3' style=border-bottom: 3px solid black> <h5>Faturamento Dezembro 2014</h5> <h4>Saldo</h4> </td> <td class='center'> <h2>ICMS Previsto</h2> </td > <td class='center'> <h2>ICMS Recolhido</h2> </td> <td class='center'> <h2>Contratado</h2> </td> <td class='center'> <h2>Liberado</h2> </td> </tr> <tr> <td class='center'> {0} </td> <td class='center'> {1} </td> <td class='center'> {2} </td> <td class='center'> {3} </td> </tr> </table> <br/>"; #endregion #endregion e estou utilizando o StringBuilder:
      StringBuilder strConstrution = new StringBuilder(); Alguém saberia me instruir como eu posso fazer para conseguir visualizar meu relátorio por completo?
    • By Isabel Ferreira
      Olá, bom dia
       
      Estou tendo um pequeno problema na instalação e configuração do Boleto.net, mesmo lendo no gith deles, aparentemente não estou sabendo mexer, pois é a primeira vez que eu o utilizo. Teria como alguém me explicar o passo a passo de como fazer? Para eu ver o que de errado eu possa ter feito.
       
      Muito obrigada
    • By Ana Caroline Candido
      Boa Tarde pessoal.
      Estou no 3 semestre do curso ciência da computação, e estou com muita dificuldade de achar uma forma de realizar um programa solicitado em meu trabalho semestral.
      Alguém poderia me ajudar, dar alguma luz de como posso começar a desenvolver?
      Segue :

      Deverá ser realizado um trabalho utilizando algoritmos considerando o seguinte exemplo: o geoprocessamento de imagens da floresta amazônica permite a fiscalização de ações de crimes ambientais. Os satélites geram cerca de 100 mil imagens de toda a região a cada 24 horas, essas imagens são armazenadas o catalogadas. Os agentes de fiscalização fazem buscas frequentes de imagens especificas nestas imagens. Cerca de 1000 buscas são feitas no intervalo de 24 horas. Deverá ser selecionado três ou mais estruturas de dados (Pilha ou Fila, Arvores, Vetor) e desenvolver um sistema computacional completo que obtenha os dados catalogados das imagens capturadas dos satélites e compare os desempenhos entre eles. A unidade de medida para efeito de comparação deverá ser o tempo total de ordenação. Deverá ser contabilizado o tempo de aquisição dos dados e o processo específico de busca) Os dados que serão utilizados para as ordenações deverão ser externos (obtidos a partir de valores previamente armazenados, tais como arquivos texto) e internos (valores aleatórios gerados pelo próprio programa ou fornecidos diretamente pelo usuário).  
    • By Rluz2019
      Avaliação Discursiva 4 - Calouros
      Questão A
      Na programação de computadores é muito comum o uso de estruturas iterativas para resolver problemas que envolvem coleções de dados (vetores, matrizes, listas). Considerando o seguinte trecho de código (notado em C#), que define a classe Funcionario:
      class Funcionario
      {
            public  int  Matricula  { get; set;  }
            public  string  Nome  { get; set;  }
            public static List< Funcionario> Funcionarios  {get; set;  }
      }
      Crie, na classe Funcionário:
      1.   Um método estático, denominado GerarLista, que cria e retorna uma lista com 10 registros de funcionários, sendo que:
      a)   A lista gerada será utilizada para preencher o atributo Funcionários, que é uma lista;
      b)   A matrícula deve ser um número inteiro sequencial (de 1 a 10);
      c)   O nome deve ser uma sequência de caracteres gerada aleatoriamente (podem ser nomes sorteados de uma lista pré-armazenada ou uma sequência qualquer de caracteres).
      2.   Um método estático, denominado BuscarFuncionario, que recebe um nome (string) por parâmetro, localiza o funcionário pelo nome na lista, e retorna a matrícula (int) do funcionário encontrado.
      ·       Caso o nome não seja encontrado, o retorno para a matrícula deve ser -1 (menos um).
       
      Meu Código!

      Estou com dificuldades de realizar algum poderia me ajudar a estruturar:
       CODIGO PRINCIPAL
      using System;
      //Using - Biblioteca do C#
      //___________________________________________________________//
      //           Aluno: Rodrigo Fernando da Luz                  //
      //           Faculdade - Fael                                //
      //___________________________________________________________//
      //Aula 02: Atributos e Métodos Unidade 04
      namespace Avaliação_Discursiva_4
      {
          class Program
          {
              static void Main(string[] args) // algoritmo Função ao metodo main
              {
                  GerarLista();
                  Console.ReadKey();
              }
              static void GerarLista()
              {
                  //Instanciar a Classe
                  Funcionario Nome_funcionario = new Funcionario(); //variavel #Nome_funcionario#
                  //Passar o conteudo que vai ser digitado para As Variaveis!!!
         
                  string[] Nomes = new string[10];
                  
                  Console.WriteLine("");
                  Console.WriteLine(" Lista gerada será utilizada para preencher o atributo Funcionários, que é uma lista:");
                  Console.WriteLine("");
                  char[] Xmatricula = new char[10];//Arry
                  char[] Xnome = new char[10];
                  int i;
                  //string Xnomes;
           
                  Console.WriteLine("");
                  Console.WriteLine("Digite Seu Nome: ");
                  Console.WriteLine("");
                  for (i = 0; i < 10; i++)
                  { //Contador 1 até 10.
                      Console.WriteLine("Informe Nome do  " + (i + 1) + " ª Funcionário:");
                      Xnome = char.Parse(Console.ReadLine());
                   
                  }
                  Console.WriteLine("");
                  Console.WriteLine("Lista de Funcionarios: ");
                  Console.WriteLine("");
                  for (i = 0; i < 10; i++)
                  {//Escreve na Tela o Numero 1 ate 10 e Nome do Funcionario.
                      Console.WriteLine("A Matricula: " + (i + 1) + "  ª Funcionario:  " + Nomes);
                  }
              }
          }
      }
       
       
      // CRIADO A CLASSE FUNCIONARIO:
      using System;
      using System.Collections.Generic;
      using System.Text;
      namespace Avaliação_Discursiva_4
      {
          //Atributos da minha Classe
          class Funcionario
          {
              //metodos Get e Set
              //Get Vai Pegar
              //Set vai Gravar
              public string Nome { get; set; }
              
              public int Matricula { get; set;}
              public string Materia { get; set; }
              public string Notas { get; set; }
              public static List<Funcionario> Funcionarios { get; set; }
              public void setNome(string Nome) //metodos //Set vai Gravar
              {
                  this.Nome = Nome;
              }
              public string getNome(string Nome) //metodos //Get vai Pegar
              {
                  return this.Nome;
              }
              public int getMatricula()//metodos //Get vai Pegar
              {
                  return this.Matricula;
              }
          }
      }
       
       
       
      Alguém pode me ajudar?
    • By rtavix
      Pessoal eu sou iniciante na programação, e irei detalhar todo o processo resumidamente que estou fazendo no momento. Eu tenho uma pagina web que realiza uma consulta através de uma determinada data. Tenho um dropdow e dentro dele eu tenho a Opção Mês base e Período, caso eu selecione o Mês base devo carregar um campo de data informando o mes e o ano e em seguida eu tenho dois radio button escrito a opção Sim e Não e caso escolho fazer o filtro por periodo, deverei carregar um capo de data automaticamente para informar um determinado periodo preenchendo a data de inicio dd/MM/yyyy até a data final dd/MM/yyyy, após escolher Mês base ou por Período dentro do dropDow e carregar o campo de data automaticamente onde o usuário informará a data, consequentemente o mesmo irá escolher se a opção é de Liberação Sim ou Não (radio button) acho que é assim que se escreve rs, caso ele realiza sua escolha, deverá carregar os seguintes dados na grid:
      AnoMêsBase, inscEstadual, razaoSocial e NME_ABREV.
      Observação: No meu banco de dados a coluna AnoMesBase está dessa forma por exemplo 032018, sempre irá vir dessa forma, a data nunca será formatado o campo.
      Porém não estou conseguindo trazer as informações que está no banco de dados.
      Até agora implementei as seguintes classes:
       
      using System; using System.Collections.Generic; using System.Linq; using System.Text; using NHibernate.Mapping.Attributes; namespace Dominio.Domain { [Serializable] [Class(Table = "DAP_EMPRESA", NameType = typeof(Empresa), Lazy = false)] public class Empresa { private int codigo; private string inscEstadual; private string razaoSocial; private string nomeAbreviado; private DateTime dataCadastro; private string cnpj; [Id(Column = "ID_EMPRESA", Name = "Codigo", Generator = "increment", UnsavedValue = "0")] public int Codigo { get { return codigo; } set { codigo = value; } } [Property(Column = "INSC_ESTADUAL", Lazy = false)] public string InscEstadual { get { return inscEstadual; } set { inscEstadual = value; } } [Property(Column = "RAZAO_SOCIAL", Lazy = false)] public string RazaoSocial { get { return razaoSocial; } set { razaoSocial = value; } } [Property(Column = "NME_ABREV", Lazy = false)] public string NomeAbreviado { get { return nomeAbreviado; } set { nomeAbreviado = value; } } [Property(Column = "DAT_CADASTRO", Lazy = false)] public DateTime DataCadastro { get { return dataCadastro; } set { dataCadastro = value; } } [Property(Column = "CNPJ", Lazy = false)] public string Cnpj { get { return cnpj; } set { cnpj = value; } } } } using NHibernate.Mapping.Attributes; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Dominio.Domain { [Serializable] [Class(Table = "DAP_FINANCIAMENTO", NameType = typeof(Financiamento), Lazy = false)] public class Financiamento { private int codigo; // private Empresa empresa; // private decimal vlrFinanciamento;// private string inscEstadual;// private string anoMesBase; // private string anoMesFaturamento; // private decimal vlrICMSPrevisto; // private decimal totalRecolhimento; // private DateTime datUltimoRecolhimento; // private decimal totalLiberacao; // private DateTime datLiberacao; // private DateTime datUltimaLiberacao; // private decimal totalDevolucao; // private string descObservacao; // private DateTime dataDevolucao; // private DateTime dataCadastramento; // private int mesBase; // private int mesFat; // [Id(Column = "ID_FINANCIAMENTO", Name = "Codigo", Generator = "increment", UnsavedValue = "0")] public int Codigo { get { return codigo; } set { codigo = value; } } [ManyToOne(0, Name = "Empresa", ClassType = typeof(Empresa), Column = "ID_EMPRESA", Lazy = Laziness.False)] public Empresa Empresa { get { return empresa; } set { empresa = value; } } [Property(Column = "VLR_FINANCIAMENTO", Lazy = false)] public decimal VlrFinanciamento { get { return vlrFinanciamento; } set { vlrFinanciamento = value; } } [Property(Column = "INSC_ESTADUAL", Lazy = false)] public string InscEstadual { get { return inscEstadual; } set { inscEstadual = value; } } [Property(Column = "ANO_MES_BASE", Lazy = false)] public string AnoMesBase { get { return anoMesBase; } set { anoMesBase = value; } } [Property(Column = "ANO_MES_FATURA", Lazy = false)] public string AnoMesFaturamento { get { return anoMesFaturamento; } set { anoMesFaturamento = value; } } [Property(Column = "VLR_ICMS_PREVISTO", Lazy = false)] public decimal VlrICMSPrevisto { get { return vlrICMSPrevisto; } set { vlrICMSPrevisto = value; } } [Property(Column = "TOTAL_RECOLHIDO", Lazy = false)] public decimal TotalRecolhimento { get { return totalRecolhimento; } set { totalRecolhimento = value; } } [Property(Column = "DATA_ULTIMO_RECOL", Lazy = false)] public DateTime DatUltimoRecolhimento { get { return datUltimoRecolhimento; } set { datUltimoRecolhimento = value; } } [Property(Column = "TOTAL_LIBERACAO", Lazy = false)] public decimal VlrTotalLiberacao { get { return totalLiberacao; } set { totalLiberacao = value; } } [Property(Column = "DAT_ULTIMA_LIBERACAO", Lazy = false)] public DateTime DatUltimaLiberacao { get { return datUltimaLiberacao; } set { datUltimaLiberacao = value; } } [Property(Column = "TOTAL_DEVOLUCAO", Lazy = false)] public decimal TotalDevolucao { get { return totalDevolucao; } set { totalDevolucao = value; } } [Property(Column = "DSC_OBSERVACAO", Lazy = false)] public string DescObservacao { get { return descObservacao; } set { descObservacao = value; } } [Property(Column = "DAT_LIBERACAO", Lazy = false)] public DateTime DatLiberacao { get { return datLiberacao; } set { datLiberacao = value; } } [Property(Column = "MES_BASE", Lazy = false)] public int MesBase { get { return mesBase; } set { mesBase = value; } } } } using Dominio.Domain; using NHibernate; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Dominio.DataAccess { public class FinanciamentoDAO { public static List<Financiamento> ListarTodos() { try { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); return criterios.List<Financiamento>().ToList(); } catch (Exception e) { throw new Exception(e.ToString()); } } public static void InserirOuAtualizar(Financiamento financiamento) { ISession sessao = NhibernateHelper.SessaoCorrente; ITransaction transacao = sessao.BeginTransaction(); try { sessao.SaveOrUpdate(financiamento); transacao.Commit(); } catch (Exception e) { transacao.Rollback(); throw new Exception(e.ToString()); } } public static void Deletar(Financiamento financiamento) { ISession sessao = NhibernateHelper.SessaoCorrente; ITransaction transacao = sessao.BeginTransaction(); try { sessao.Delete(financiamento); transacao.Commit(); } catch (Exception e) { transacao.Rollback(); throw new Exception(e.ToString()); } } internal static Financiamento BuscarPorInscEstadual(string InscEstadual) { try { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); criterios.Add(NHibernate.Criterion.Expression.Eq("InscEstadual", InscEstadual)); return criterios.UniqueResult() as Financiamento; } catch (Exception e) { throw new Exception(e.ToString()); } } internal static Financiamento BuscarPorIDFinanciamento(int COD_FINANCIAMENTO) { try { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); criterios.Add(NHibernate.Criterion.Expression.Eq("Codigo", COD_FINANCIAMENTO)); return criterios.UniqueResult() as Financiamento; } catch (Exception e) { throw new Exception(e.ToString()); } } internal static List<Financiamento> ListarPorEmpresa(int ID_EMPRESA) { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento; try { financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); criterios.CreateAlias("Empresa", "e").Add(NHibernate.Criterion.Expression.Eq("e.Codigo", ID_EMPRESA)); return criterios.List<Financiamento>().ToList(); } catch (Exception e) { throw new Exception(e.ToString()); } } } } using Dominio.DataAccess; using Dominio.Domain; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Dominio.APL { public class AplFinanciamento { public void gravar(Financiamento financiamento) { FinanciamentoDAO.InserirOuAtualizar(financiamento); } public void deletar(Financiamento financiamento) { FinanciamentoDAO.Deletar(financiamento); } public List<Financiamento> listarTodas() { return FinanciamentoDAO.ListarTodos(); } public Financiamento buscarPorInscEstadual(string InscEstadual) { return FinanciamentoDAO.BuscarPorInscEstadual(InscEstadual); } public Financiamento buscarPorIDFinanciamento(int IDFinanciamento) { return FinanciamentoDAO.BuscarPorIDFinanciamento(IDFinanciamento); } public List<Financiamento> listarFinanciamentoPorEmpresa(int idEmpresa) { return FinanciamentoDAO.ListarPorEmpresa(idEmpresa); } } }  
      Esse é meu .cs porém não estou conseguindo fazer funcionar, porque me retorna tudo null ao compilar o código e desconfio que a minha lógica esteja errada.
       
      using Dominio.APL; using Dominio.Domain; using dap.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; namespace dapView.Relatorios.RelFinancLiberadoMesBase { public partial class RelFinancLiberadoMesBase : System.Web.UI.Page { private AplFinanciamento aplFinanciamento = new AplFinanciamento(); private List<Financiamento> financiamento = new List<Financiamento>(); private static bool keyJS { get; set; } protected void Page_Load(object sender, EventArgs e) { keyJS = true; // CarregarComboLiberado(); if (!IsPostBack) { GerenciadorUsuarioPagina.funcao = "RELFIN01"; //btnImprime.Visible = false; } } //Carrega os dados relacionando o tipo de liberação por data //private void CarregarComboLiberado() // { // ddlLiberado.Items.Add("---------Selecione----------"); // ddlLiberado.Items.Add("Mês Base"); // ddlLiberado.Items.Add("Período"); // } protected void btnConsultar_Click(object sender, EventArgs e) { CarregaRelatorio(); } protected void ddlLiberado_SelectedIndexChanged(object sender, EventArgs e) { } public void CarregaRelatorio() { financiamento = aplFinanciamento.listarTodas(); var dados = (from financiamento in financiamento where DateTime.Compare(financiamento.DatUltimaLiberacao, Convert.ToDateTime(txtMesBase.Text.ToString())) == 0 group financiamento by new { financiamento.Codigo, financiamento.Empresa.InscEstadual, financiamento.Empresa.RazaoSocial, financiamento.Empresa.Cnpj, financiamento.Empresa.NomeAbreviado, financiamento.AnoMesBase } into g select new { codigo = g.Key.Codigo, AnoMesBase = g.Key.AnoMesBase, InscricaoEstadual = g.Key.InscEstadual, RazaoSocial = g.Key.RazaoSocial, Cnpj = g.Key.Cnpj, NmeAbreviado = g.Key.NomeAbreviado }).OrderBy(o => o.codigo).ToList(); if (dados.Count() > 0) { //Carrega os dados da gridview de consulta gv.DataSource = dados; gv.DataBind(); gv.UseAccessibleHeader = true; gv.HeaderRow.TableSection = TableRowSection.TableHeader; //Carrega os dados da gridview usada para imprimir gvImprimir.DataSource = dados; gvImprimir.DataBind(); gvImprimir.UseAccessibleHeader = true; gvImprimir.HeaderRow.TableSection = TableRowSection.TableHeader; //mostra botão imprimir //btnImprime.Visible = true; } else { if (keyJS) chamarSwal("aviso", "Não foram encontrados financiamentos para essa data."); // btnImprime.Visible = false; } } private void chamarSwal(string tipo, string mensagem) { var body = (HtmlGenericControl)(Page.Master.FindControl("body")); body.Attributes["onload"] = $"{tipo}(\"{mensagem}\")"; keyJS = false; } } } Esse é o meu html
       
      <%@ Page Title="" Language="C#" MasterPageFile="~/Content/MasterPage.Master" AutoEventWireup="true" CodeBehind="RelFinanciamento.aspx.cs" Inherits="dapView.Relatorios.RelFinancLiberadoMesBase.RelFinancLiberadoMesBase" %> <asp:Content ID="head" ContentPlaceHolderID="headPlaceHolder" runat="server"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css"> <script src="../JsRelatorioFinancLiberadoMesBase.js"></script> <script> var d = "16/09/2019" // date received from card function filldate() { document.getElementById('cardexpirydate').value = d.split('/').reverse().join("-"); } </script> <script> function exibir_ocultar(val) { if (val.value == 'LiberadoMesBase') { document.getElementById('periodo').style.display = 'none'; document.getElementById('MesBase').style.display = 'block'; document.getElementById('periodo').style.display = 'none'; } else { document.getElementById('periodo').style.display = 'block'; document.getElementById('MesBase').style.display = 'none'; } }; </script> </asp:Content> <asp:Content ID="ContentForm" ContentPlaceHolderID="formPlaceHolder" runat="server"> <asp:ScriptManager runat="server"></asp:ScriptManager> <div class="row"> <div class="col-md-12"> <div class="content-box"> <div class="box-title">Financiamento</div> <div class="box-body"> <div id="triage"> <label for="category">Liberado:</label> <div class="form-inline"> <div class="col-md-2"> <label class="radio-inline control-label"> <input checked="checked" name="TaskLog.TaskTypeId" type="radio" value="2"> SIM </label> <label class="radio-inline control-label"> <input id="TaskLog_TaskTypeId" name="TaskLog.TaskTypeId" type="radio" value="1"> NÃO </label> </div> <div id="category-select"> <select onchange="exibir_ocultar(this)" class="col-md-3 form-control" id="category" name="category" style="width: auto"> <option value="LiberadoMesBase">-----------Selecione----------</option> <option value="LiberadoMesBase">Mês Base</option> <option value="LiberadoPeriodo">Período</option> </select> </div> </div> <br /> <div class="row"> <div class="form-group"> <label class="radio-inline control-label"> <input type="radio" name="optradio" checked>Sim</label> <label class="radio-inline"> <input type="radio" name="optradio">Não</label> </div> <br /> <div id="periodo"> <asp:TextBox type="Month" Style="width: 10%" runat="server" ClientIDMode="Static" class="form-control " ID="TextBox1" MaxLength="30"></asp:TextBox> <br /> </div> <br /> <div id="MesBase"> <asp:TextBox type="date" Style="width: 10%" runat="server" ClientIDMode="Static" class="form-control " ID="TextBox2" MaxLength="30"></asp:TextBox> <br /> </div> </div> </div> <div class="row"> <div class="content-box content-box-tabela" id="tabela" style="visibility: hidden"> <asp:GridView class="col-md-12" CssClass="tabela-padrao tabela-padrao-borda dataTable" runat="server" AutoGenerateColumns="False" PageSize="9" ID="gv" Width="100%"> <Columns> <asp:TemplateField HeaderText="Empresa" ItemStyle-HorizontalAlign="Left"> <ItemTemplate> <asp:Label ID="lblCodigo" runat="server" Text='<%# Bind("Codigo") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Valor Financiamento" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblValorFinanciamento" runat="server" Text='<%# Bind("ValorFinanciamento") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Inscricao Estadual" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblInscricaoEstadual" runat="server" Text='<%# Bind("InscricaoEstadual") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Ano mes base" ItemStyle-HorizontalAlign="Right"> <ItemTemplate> <asp:Label ID="lblAnoMesBase" runat="server" Text='<%# Bind("AnoMesBase") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> <PagerStyle CssClass="" HorizontalAlign="Center" /> </asp:GridView> </div> </div> </div> <div class="box-footer"> <button runat="server" class="btn btn-padrao" id="btnConsultar" onserverclick="btnConsultar_Click">Consultar</button> </div> </div> <%--IMPRIMIR--%> <div class="container" style="visibility: hidden" id="ConteinerImprimir"> <div class="table" runat="server" style="margin: 0 auto; width: auto;"> <div class="row"> <div class="col-lg-12"> <img src="http://internet.sefaz.es.gov.br/imagens/topo_brasao.png" alt=""> <br> <br> </div> </div> <div class="row" runat="server" style="border-bottom: 2px solid #B0BEC5"> <div class="col-lg-5"> <strong>Financiamento</strong> </div> <div class="col-lg-5" style="text-align: end;" runat="server" id="totalRegistros"></div> </div> </div> <div class="row"> <div class="content-box content-box-tabela"> <asp:GridView class="col-md-12 grid" runat="server" AutoGenerateColumns="False" PageSize="9" ID="gvImprimir" GridLines="None" RowStyle-HorizontalAlign="Center" Width="100%"> <Columns> <asp:TemplateField HeaderText="Empresa" ItemStyle-HorizontalAlign="Left"> <ItemTemplate> <asp:Label ID="lblCodigo" runat="server" Text='<%# Bind("Codigo") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Valor Financiamento" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblValorFinanciamento" runat="server" Text='<%# Bind("ValorFinanciamento") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Inscricao Estadual" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblInscricaoEstadual" runat="server" Text='<%# Bind("InscricaoEstadual") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Ano mes base" ItemStyle-HorizontalAlign="Right"> <ItemTemplate> <asp:Label ID="lblAnoMesBase" runat="server" Text='<%# Bind("AnoMesBase") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> <PagerStyle CssClass="" HorizontalAlign="Center" /> </asp:GridView> </div> </div> </div> </div> </div> </asp:Content>  
      Se alguém puder me ajudar, agradeço.
×

Important Information

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