ERRO AO GERAR RELATORIO REPORTVIWER APLICAÇÃO .NET SQL datetimepicker falha ao converter valor do parametro de string em datetime

02/05/2019

4

Boa tarde amigos,, tudo bem ?
estou com um probleminha que não estou conseguindo solução, seguinte:

tenho um aplicação em .NEt com banco SQL, e nela estou criando vários relatórios no REPORTVIWER. o primeiro relatório é esse

nome= "Vendas por periodo" basicamente ele pela os dados da tabela de venda e filtra por Data.

segue o select usado no dataset para puxar os resultados


SELECT        clientes.Id_cliente, clientes.nome, emitente.fantasia, emitente.endereco, emitente.fone1, emitente.fone2, produtos.Nome AS Expr1, venda_finalizada.Data_venda, itens_venda.Vlr_unit, itens_venda.Quantidade, 
                         venda_finalizada.Id_venda, itens_venda.id_produto
FROM            clientes INNER JOIN
                         venda_finalizada ON clientes.Id_cliente = venda_finalizada.Id_Cliente INNER JOIN
                         itens_venda ON venda_finalizada.Id_venda = itens_venda.id_venda INNER JOIN
                         produtos ON itens_venda.id_produto = produtos.Id_produto CROSS JOIN
                         emitente
WHERE        (venda_finalizada.Data_venda = @data)




e no codigo do FORM eu uso isso:



Public Class Vendas_Por_Periodo
    Private Sub Vendas_Por_Periodo_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        dtdata.Value = Now.Date
        Me.VendasPperiodotableadapterTableAdapter.Fill(Me.vendaPperiododataset.VendasPperiodotableadapter, dtdata.Text)

        Me.ReportViewer1.RefreshReport()
    End Sub

    Private Sub dtdata_ValueChanged(sender As Object, e As EventArgs) Handles dtdata.ValueChanged
        Me.VendasPperiodotableadapterTableAdapter.Fill(Me.vendaPperiododataset.VendasPperiodotableadapter, dtdata.Text)
        Me.ReportViewer1.RefreshReport()
    End Sub
End Class



ATÉ AI TUDO OK .. ESSE RELATORIO FUNCIONA NORMALMENTE
AI VEM O PROBLEMA ,, O SEGUNDO RELATÓRIO

nome = " Movimentação de produto"

Esse relatorio teria que funcionar por 2 parâmetros = "ID_produto" e "data_mov"
segue o select usado no dataset para puxar os resultados

SELECT        emitente.fantasia, emitente.endereco, emitente.fone1, emitente.fone2, movimentacao_produto.id_produto, produtos.Nome, movimentacao_produto.Funcionario, movimentacao_produto.Id_mecanico, mecanicos.nome AS Expr1, 
                         movimentacao_produto.Id_cliente, clientes.nome AS Expr2, movimentacao_produto.id_venda, movimentacao_produto.quantidade, movimentacao_produto.movimentacao, movimentacao_produto.Data_mov, 
                         movimentacao_produto.hora_mov
FROM            movimentacao_produto INNER JOIN
                         produtos ON movimentacao_produto.id_produto = produtos.Id_produto INNER JOIN
                         mecanicos ON movimentacao_produto.Id_mecanico = mecanicos.Id_mecanico CROSS JOIN
                         clientes CROSS JOIN
                         emitente
WHERE        (movimentacao_produto.id_produto = @id_produto) AND (movimentacao_produto.Data_mov = @Data_mov)




e no codigo do FORM eu uso isso:

Public Class Movimentação_de_produto



    Private Sub Movimentação_de_produto_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        dtdata.Value = Now.Date
        'TODO: esta linha de código carrega dados na tabela 'MovimentacaoDoProdutoDataSet1.MovimentacaoDataAdapter'. Você pode movê-la ou removê-la conforme necessário.
        Me.MovimentacaoDataAdapterTableAdapter.Fill(Me.MovimentacaoDoProdutoDataSet1.MovimentacaoDataAdapter, txt_id_produto.Text, dtdata.Text)

        Me.ReportViewer1.RefreshReport()
    End Sub

    Private Sub txt_id_produto_TextChanged(sender As Object, e As EventArgs) Handles txt_id_produto.TextChanged
        Me.MovimentacaoDataAdapterTableAdapter.Fill(Me.MovimentacaoDoProdutoDataSet1.MovimentacaoDataAdapter, txt_id_produto.Text, dtdata.Text)

        Me.ReportViewer1.RefreshReport()
    End Sub

    Private Sub btn_clientes_indica_Click(sender As Object, e As EventArgs) Handles btn_clientes_indica.Click
        Dim form = New Busca_produtos_relatorios(Me)
        form.ShowDialog()
    End Sub

    Private Sub dtdata_ValueChanged(sender As Object, e As EventArgs) Handles dtdata.ValueChanged
        Me.MovimentacaoDataAdapterTableAdapter.Fill(Me.MovimentacaoDoProdutoDataSet1.MovimentacaoDataAdapter, txt_id_produto.Text, dtdata.Text)

        Me.ReportViewer1.RefreshReport()
    End Sub
End Class




quando executo esse segundo relatório da o seguinte erro "falha ao converter valor do parametro de string em datetime"

já não sei mais oque fazer !
Responder

Posts

02/05/2019

Wictor

Boa tarde amigos,, tudo bem ?
estou com um probleminha que não estou conseguindo solução, seguinte:

tenho um aplicação em .NEt com banco SQL, e nela estou criando vários relatórios no REPORTVIWER. o primeiro relatório é esse

nome= "Vendas por periodo" basicamente ele pela os dados da tabela de venda e filtra por Data.

segue o select usado no dataset para puxar os resultados


SELECT        clientes.Id_cliente, clientes.nome, emitente.fantasia, emitente.endereco, emitente.fone1, emitente.fone2, produtos.Nome AS Expr1, venda_finalizada.Data_venda, itens_venda.Vlr_unit, itens_venda.Quantidade, 
                         venda_finalizada.Id_venda, itens_venda.id_produto
FROM            clientes INNER JOIN
                         venda_finalizada ON clientes.Id_cliente = venda_finalizada.Id_Cliente INNER JOIN
                         itens_venda ON venda_finalizada.Id_venda = itens_venda.id_venda INNER JOIN
                         produtos ON itens_venda.id_produto = produtos.Id_produto CROSS JOIN
                         emitente
WHERE        (venda_finalizada.Data_venda = @data)




e no codigo do FORM eu uso isso:



Public Class Vendas_Por_Periodo
    Private Sub Vendas_Por_Periodo_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        dtdata.Value = Now.Date
        Me.VendasPperiodotableadapterTableAdapter.Fill(Me.vendaPperiododataset.VendasPperiodotableadapter, dtdata.Text)

        Me.ReportViewer1.RefreshReport()
    End Sub

    Private Sub dtdata_ValueChanged(sender As Object, e As EventArgs) Handles dtdata.ValueChanged
        Me.VendasPperiodotableadapterTableAdapter.Fill(Me.vendaPperiododataset.VendasPperiodotableadapter, dtdata.Text)
        Me.ReportViewer1.RefreshReport()
    End Sub
End Class



ATÉ AI TUDO OK .. ESSE RELATORIO FUNCIONA NORMALMENTE
AI VEM O PROBLEMA ,, O SEGUNDO RELATÓRIO

nome = " Movimentação de produto"

Esse relatorio teria que funcionar por 2 parâmetros = "ID_produto" e "data_mov"
segue o select usado no dataset para puxar os resultados

SELECT        emitente.fantasia, emitente.endereco, emitente.fone1, emitente.fone2, movimentacao_produto.id_produto, produtos.Nome, movimentacao_produto.Funcionario, movimentacao_produto.Id_mecanico, mecanicos.nome AS Expr1, 
                         movimentacao_produto.Id_cliente, clientes.nome AS Expr2, movimentacao_produto.id_venda, movimentacao_produto.quantidade, movimentacao_produto.movimentacao, movimentacao_produto.Data_mov, 
                         movimentacao_produto.hora_mov
FROM            movimentacao_produto INNER JOIN
                         produtos ON movimentacao_produto.id_produto = produtos.Id_produto INNER JOIN
                         mecanicos ON movimentacao_produto.Id_mecanico = mecanicos.Id_mecanico CROSS JOIN
                         clientes CROSS JOIN
                         emitente
WHERE        (movimentacao_produto.id_produto = @id_produto) AND (movimentacao_produto.Data_mov = @Data_mov)




e no codigo do FORM eu uso isso:

Public Class Movimentação_de_produto



    Private Sub Movimentação_de_produto_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        dtdata.Value = Now.Date
        'TODO: esta linha de código carrega dados na tabela 'MovimentacaoDoProdutoDataSet1.MovimentacaoDataAdapter'. Você pode movê-la ou removê-la conforme necessário.
        Me.MovimentacaoDataAdapterTableAdapter.Fill(Me.MovimentacaoDoProdutoDataSet1.MovimentacaoDataAdapter, txt_id_produto.Text, dtdata.Text)

        Me.ReportViewer1.RefreshReport()
    End Sub

    Private Sub txt_id_produto_TextChanged(sender As Object, e As EventArgs) Handles txt_id_produto.TextChanged
        Me.MovimentacaoDataAdapterTableAdapter.Fill(Me.MovimentacaoDoProdutoDataSet1.MovimentacaoDataAdapter, txt_id_produto.Text, dtdata.Text)

        Me.ReportViewer1.RefreshReport()
    End Sub

    Private Sub btn_clientes_indica_Click(sender As Object, e As EventArgs) Handles btn_clientes_indica.Click
        Dim form = New Busca_produtos_relatorios(Me)
        form.ShowDialog()
    End Sub

    Private Sub dtdata_ValueChanged(sender As Object, e As EventArgs) Handles dtdata.ValueChanged
        Me.MovimentacaoDataAdapterTableAdapter.Fill(Me.MovimentacaoDoProdutoDataSet1.MovimentacaoDataAdapter, txt_id_produto.Text, dtdata.Text)

        Me.ReportViewer1.RefreshReport()
    End Sub
End Class




quando executo esse segundo relatório da o seguinte erro "falha ao converter valor do parametro de string em datetime"

já não sei mais oque fazer !





Consegui ;.... = solução na linha de programação do form

Me.MovimentacaoDataAdapterTableAdapter.Fill(Me.MovimentacaoDoProdutoDataSet1.MovimentacaoDataAdapter, txt_id_produto.Text, dtdata.Value.ToShortDateString)

Me.ReportViewer1.RefreshReport()
Responder