MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Consulta sql entre Datas, e cliente na mesma consulta.

    avatar
    PabloSousa1977
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 15/08/2017

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  PabloSousa1977 15/8/2017, 15:54

    Bom Dia Pessoal,

    Sou novo por aqui, é estou precisando de ajuda em relação a uma consulta sql no visual studio 2010 com banco de dados access, fazendo a consulta por data da tudo certo mas quando tento incluir pesquisar clientes junto no periodo da retorna nada, vou colocar abaixo o código que estou usando para fazer a consulta entre as datas.

    Private Sub ConsultaData()
           Dim DtaInicial As String
           Dim DtaFinal As String
           Dim tabela As New DataTable
           Dim Cliente As String
           Dim strsql As String

           DtaInicial = txtdtainicial.Text.ToString
           DtaFinal = txtdtafinal.Text.ToString
           Cliente = Me.txtcliente.Text

           ' essa consulta e por data - aqui funciona certinho.
           strsql = "Select * from XmlNfeProduto Where DtaEmissão between @DtaInicial And @DtaFinal order by DtaEmissão"



           Dim con As New OleDbConnection
           Dim cmd As New OleDbCommand
           Try
               con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Central-BancoDados\BdControleXml.accdb"
               con.Open()
               cmd.Connection = con
               cmd.Parameters.AddWithValue("@DtaInicial", DtaInicial)
               cmd.Parameters.AddWithValue("@DtaFinal", DtaFinal)
               cmd.Parameters.AddWithValue("@NomeCliente", Cliente)
               cmd.CommandText = strsql

               Using reader As OleDbDataReader = cmd.ExecuteReader()
                   tabela.Load(reader)
                   Me.dgvvendas.DataSource = tabela
               End Using

           Catch ex As Exception
               MessageBox.Show("Erro : " & ex.Message, "Dados Não Existe, Favor verificar Datas!!!")
           Finally
               con.Close()
           End Try

           Dim SomaColunaQuantidade As String = tabela.Compute("SUM(Quantidade)", Nothing).ToString
           Me.txttotalqntd.Text = Convert.ToInt32(SomaColunaQuantidade)

           Dim SomaColunaValorProduto As String = tabela.Compute("SUM(ValorProduto)", Nothing).ToString
           Me.txttotalproduto.Text = FormatCurrency(SomaColunaValorProduto)

           Me.txttotalregistro.Text = Me.dgvvendas.RowCount - 1


           Me.XmlNfeProdutoBindingSource.DataSource = tabela
           Me.ReportViewerVendas.RefreshReport()

       End Sub

    agora se eu incluir na consulta por cliente também no periodo, não retorna nada e nem erro, o que pode estar acontecendo, segue abaixo com consulta do cliente junto,

    strsql = "Select * from XmlNfeProduto Where RazãoSocial=@NomeCliente and DtaEmissão between @DtaInicial And @DtaFinal order by DtaEmissão"

    não funciona, ai tentei assim

    strsql = "SELECT  TOP 20 RazãoSocial,DtaEmissão FROM XmlNfeProduto WHERE  RazãoSocial = @NomeCliente AND DtaEmissão BETWEEN @DtaInicial AND @DtaFinal ORDER BY DtaEmissão,RazãoSocial"

    também não funciona assim,

    Alguem pode me dar uma ajuda para resolver esse problema, preciso fazer uma consulta por periodo e cliente na mesma consulta, como seria isso.

    Desde já agradeço, muito obrigado.

    Pablo Sousa
    Cláudio Más
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1278
    Registrado : 21/01/2012

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  Cláudio Más 15/8/2017, 16:36

    Olá,

    Faz essa consulta diretamente no banco Access, substituindo os dados de teste:

    Select * from XmlNfeProduto Where RazãoSocial="XYZ" and DtaEmissão between #01/01/2017# And #01/01/2017# order by DtaEmissão

    Talvez o problema esteja nas datas, que devem ser passadas para a instrução sql no formato mm/dd/yyyy.
    avatar
    PabloSousa1977
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 15/08/2017

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  PabloSousa1977 15/8/2017, 16:59

    Boa Tarde Claudio,

    Vou fazer o teste o logo coloco a resposta.
    Desde já muito obrigado.

    Pablo Sousa.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7871
    Registrado : 05/11/2009

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  Alexandre Neves 15/8/2017, 17:12

    Boa tarde, e bem-vindo ao fórum
    Por não de se tratar de Access, a dúvida foi movida para esta sala


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    PabloSousa1977
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 15/08/2017

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  PabloSousa1977 15/8/2017, 17:36

    Boa Tarde Claudio,

    Realmente era formato de data, converti a data antes de passar o parametro funcionou certinho, mas indicando o nome do cliente, segue abaixo

    strsql = "SELECT * FROM(XmlNfeProduto) WHERE (RazãoSocial = 'fuladodetAL') AND (DtaEmissão BETWEEN @DtaInicial AND @DtaFinal)"

    mas quero que pega o nome da caixa de texto igual o parametro das datas, mas não quer da certo, tentei assim segue abaixo,

    strsql = "SELECT * FROM(XmlNfeProduto) WHERE (RazãoSocial = @NomeCliente) AND (DtaEmissão BETWEEN @DtaInicial AND @DtaFinal)"

    com o parametro para cliente mas não quer dar certo, somente se eu colocar o nome dele direto na consulta, da para resolver isso também o que será que dando errado.

    Desde já agradeço, muito obrigado.

    Pablo Sousa.
    Cláudio Más
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1278
    Registrado : 21/01/2012

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  Cláudio Más 15/8/2017, 19:37

    Boa tarde Pablo,

    Poderia enviar uma cópia do banco de dados?
    Iria facilitar com a solução.
    avatar
    PabloSousa1977
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 15/08/2017

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  PabloSousa1977 15/8/2017, 20:00

    Boa Tarde Claudio,

    Segue em anexo o banco de dados.
    Desde já agradeço, muito obrigado.


    Última edição por PabloSousa1977 em 15/8/2017, 20:02, editado 1 vez(es) (Razão : nao foi o anexo)
    Cláudio Más
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1278
    Registrado : 21/01/2012

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  Cláudio Más 15/8/2017, 20:02

    Parece que esqueceu de anexar o arquivo.
    avatar
    PabloSousa1977
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 15/08/2017

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  PabloSousa1977 15/8/2017, 20:07

    Boa Tarde Claudio,

    Não sei porque não foi,
    Vamos ver se agora vai,
    Obrigado,
    Anexos
    Consulta sql entre Datas, e cliente na mesma consulta. AttachmentArquivo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (20 Kb) Baixado 5 vez(es)
    Cláudio Más
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1278
    Registrado : 21/01/2012

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  Cláudio Más 15/8/2017, 22:04

    A ordem dos parâmetros deve ficar de acordo com a ordem em que aparecem na instrução sql:

    cmd.Parameters.AddWithValue("@NomeCliente", Cliente)
    cmd.Parameters.AddWithValue("@DtaInicial", DtaInicial)
    cmd.Parameters.AddWithValue("@DtaFinal", DtaFinal)
    avatar
    PabloSousa1977
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 15/08/2017

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  PabloSousa1977 15/8/2017, 22:53

    Boa Noite Claudio,

    Claudio agora deu certo, segue o código abaixo caso alguém venha a precisar,

    Private Sub ConsultaData()
    Dim DtaInicial As String
    Dim DtaFinal As String
    Dim tabela As New DataTable
    Dim Cliente As String
    Dim strsql As String

    DtaInicial = txtdtainicial.Value
    DtaInicial = Convert.ToDateTime(DtaInicial).ToString("MM/dd/yyyy")
    DtaFinal = txtdtafinal.Value
    DtaFinal = Convert.ToDateTime(DtaFinal).ToString("MM/dd/yyyy")
    Cliente = Me.txtcliente.Text

    ' essa consulta e por data
    strsql = "SELECT * FROM(XmlNfeProduto) WHERE RazãoSocial=@NomeCliente AND (DtaEmissão BETWEEN @DtaInicial AND @DtaFinal)"


    Dim con As New OleDbConnection
    Dim cmd As New OleDbCommand
    Try
    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Central-BancoDados\BdControleXml.accdb"
    con.Open()
    cmd.Connection = con

    cmd.Parameters.AddWithValue("@NomeCliente", Cliente)
    cmd.Parameters.AddWithValue("@DtaInicial", DtaInicial)
    cmd.Parameters.AddWithValue("@DtaFinal", DtaFinal)

    cmd.CommandText = strsql

    Using reader As OleDbDataReader = cmd.ExecuteReader()
    tabela.Load(reader)
    Me.dgvvendas.DataSource = tabela
    End Using

    Catch ex As Exception
    MessageBox.Show("Erro : " & ex.Message, "Dados Não Existe, Favor verificar Datas!!!")
    Finally
    con.Close()
    End Try

    Dim SomaColunaQuantidade As String = tabela.Compute("SUM(Quantidade)", Nothing).ToString
    Me.txttotalqntd.Text = Convert.ToInt32(SomaColunaQuantidade)

    Dim SomaColunaValorProduto As String = tabela.Compute("SUM(ValorProduto)", Nothing).ToString
    Me.txttotalproduto.Text = FormatCurrency(SomaColunaValorProduto)

    Me.txttotalregistro.Text = Me.dgvvendas.RowCount - 1


    Me.XmlNfeProdutoBindingSource.DataSource = tabela
    Me.ReportViewerVendas.RefreshReport()

    End Sub

    Claudio percebi que na consulta do nome do cliente tenho que digitar o nome todo do cliente, será que tem como colocar no parametro do nome cliente um "like" para pegar por parte do nome, ai fecha a consulta fica top do verão.

    Desde já agradeço demais a ajuda, muito obrigado.

    Pablo Sousa.
    Cláudio Más
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1278
    Registrado : 21/01/2012

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  Cláudio Más 16/8/2017, 12:41

    Bom dia,

    strsql = "Select * from XmlNfeProduto Where RazãoSocial like '%' & @NomeCliente & '%' And DtaEmissão between @DtaInicial And @DtaFinal order by DtaEmissão"
    avatar
    PabloSousa1977
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 15/08/2017

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  PabloSousa1977 16/8/2017, 15:44

    Bom Dia Claudio,

    Obrigado pelo exemplo vou fazer o teste agora na hora do almoço e manda a resposta.
    Desde já agradeço demais a ajuda, muito obrigado.

    Pablo Sousa.
    avatar
    PabloSousa1977
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 15/08/2017

    Consulta sql entre Datas, e cliente na mesma consulta. Empty Re: Consulta sql entre Datas, e cliente na mesma consulta.

    Mensagem  PabloSousa1977 16/8/2017, 16:28

    Boa Tarde Claudio,

    Claudio deu tudo certo, segue o código abaixo caso alguém venha precisar.
    Código=

    Private Sub ConsultaDataCliente()
    Dim DtaInicial As String
    Dim DtaFinal As String
    Dim tabela As New DataTable
    Dim Cliente As String
    Dim strsql As String

    DtaInicial = txtDtaInicialPC.Value
    DtaInicial = Convert.ToDateTime(DtaInicial).ToString("MM/dd/yyyy")
    DtaFinal = txtDtaFinalPC.Value
    DtaFinal = Convert.ToDateTime(DtaFinal).ToString("MM/dd/yyyy")
    Cliente = Me.txtclienteperiodo.Text

    ' essa consulta e por data e por nome do cliente
    strsql = "Select * from XmlNfeProduto Where RazãoSocial like '%' & @NomeCliente & '%' And DtaEmissão between @DtaInicial And @DtaFinal order by DtaEmissão"

    Dim con As New OleDbConnection
    Dim cmd As New OleDbCommand
    Try
    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Central-BancoDados\BdControleXml.accdb"
    con.Open()
    cmd.Connection = con

    cmd.Parameters.AddWithValue("@NomeCliente", Cliente)
    cmd.Parameters.AddWithValue("@DtaInicial", DtaInicial)
    cmd.Parameters.AddWithValue("@DtaFinal", DtaFinal)

    cmd.CommandText = strsql

    Using reader As OleDbDataReader = cmd.ExecuteReader()
    tabela.Load(reader)
    Me.dgvvendas.DataSource = tabela
    End Using

    Catch ex As Exception
    MessageBox.Show("Erro : " & ex.Message, "Dados Não Existe, Favor verificar Datas!!!")
    Finally
    con.Close()
    End Try

    Dim SomaColunaQuantidade As String = tabela.Compute("SUM(Quantidade)", Nothing).ToString
    Me.txttotalqntd.Text = Convert.ToInt32(SomaColunaQuantidade)

    Dim SomaColunaValorProduto As String = tabela.Compute("SUM(ValorProduto)", Nothing).ToString
    Me.txttotalproduto.Text = FormatCurrency(SomaColunaValorProduto)

    Me.txttotalregistro.Text = Me.dgvvendas.RowCount - 1


    Me.XmlNfeProdutoBindingSource.DataSource = tabela
    Me.ReportViewerVendas.RefreshReport()

    End Sub

    Desde já muito obrigado pela ajuda, agora com esses exemplos da para brincar muito.
    Ate a próxima.

    Pablo Sousa.

      Data/hora atual: 7/3/2021, 02:49