Jump to content
Fórum Script Brasil
  • 0

Data Report - Relatório Entre Datas


Gabriel Cabral
 Share

Question

Olá pessoal...

estou com uma grande duvida aqui....

já vasculhei todos os topicos aki no forum e em outros também, mas não encontrei nada

Eu estou precisando gerar um relatório especificando uma data inicial[textbox], uma data final[textbox] e um nome[combobox]....

como fazer isso em data report ???

a consulta eu sei fazer......eu a faço e mostro o resultado numa MSHFlexGrid....

tem como também gerar um relatorio desse resultado que está no MSHFlexGrid???

Quem puder me ajudar, serei muito grato

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Com certeza gabriel!

Coloque um DataReport em seu projeto, insira na seção Details(section1) as textbox referentes aos campos de sua consulta, ponha na propriedade DATAFIELD das textbox o nome do campo ao qual cada uma se refere, daí é só por no botão que chama o relatorio o seguinte código

With Rpt_RELATORIO                          '(rpt_relatorio) é o nome do relatório
    Set .DataSource = RS_recordset      '(rs_recordset)é o nome do recordset
    .DataMember = ""
    .Refresh
    .Show
End With

Pronto!

Link to comment
Share on other sites

  • 0
Com certeza gabriel!

Coloque um DataReport em seu projeto, insira na seção Details(section1) as textbox referentes aos campos de sua consulta, ponha na propriedade DATAFIELD das textbox o nome do campo ao qual cada uma se refere, daí é só por no botão que chama o relatorio o seguinte código

With Rpt_RELATORIO                          '(rpt_relatorio) é o nome do relatório
    Set .DataSource = RS_recordset      '(rs_recordset)é o nome do recordset
    .DataMember = ""
    .Refresh
    .Show
End With

Pronto!

Então Macêdo, eu precisaria colocar duas textbox pra indicar a data inicial e a data final.....

só que essas datas não precisam necessariamente estar gravadas no banco de dados....

elas podem ser datas aleatorias que serão informadas pra se gerar um relatorio de todos os registros cadastrados entre essas datas.....

Então eu teria mesmo que relacionar a texbox com o BD atraves do DataField???

Eu até fiz isso....mas deu o seguinte erro

Run-time error '8577':

Failed getting Rowset(s) from current data source

Não teria algo como comando SQL com BETWEEN ou coisa do tipo??

Link to comment
Share on other sites

  • 0

Deixa eu explicar melhor, na propriedade datafield das text você coloca o nome dos campos da sua tabela, para gerar o relatorio:

digamos que seu select seja assim:

select campo1, campo2, campo3 from tabela

então você põe 3 text's no relatório e põe na propriedade datafield das text's

text1 = campo1

text2 = campo2

text3 = campo3

isso é para gerar o relatório, pois digamos que o campo1 seja (nome) campo2 (cpf) campo3 (endereço) ok ?

as datas serão informadas da mesma forma que você informa no seu Flexgrid, isso porque você irá usar o mesmo recordset ok ?

Link to comment
Share on other sites

  • 0

Gabriel, esse erro (Failed getting Rowset(s) from current data source) geralmente ocorre quando a textbox informada está passando um valor inválido para o campo da tabela informado na SQL. Por exemplo, você informa um texto (string) com letras na textbox e o campo da DB é numérico. Lembre-se que textos e datas devem se acompanhados de aspas simples ('SEU TEXTO AQUI') na montagem da SQL.

Aproveitando a dúvida do Gabriel, quero perguntar algo com relação a Data Report tb. Estou aprendendo a usar filtros nos relatórios com o comando "FILTER". Um exemplo de código:

deComercial.rsProdutos.Filter = "CODIGO=" & Text1

rptProdutos.Show

Com isso, eu filtro meu relatório pelo código desejado. O problema é quando eu preciso de mais de um filtro. Se eu coloco vários comandos FILTER na minha linha de comando, o último código substitui todos os outros =/ Alguém sabe como montar um relatório com mais de um filtro?

Link to comment
Share on other sites

  • 0

Respondendo a sua pergunta Dudhu_capixaba:

você pode usufruir de todas as condições existentes nas instuções SQL para implementar seu Filtro nos relatórios, e pode fazê-los da mesma forma que se faz com os outros controles vinculados como o ADODC por exemplo, ou mesmo via código. Pelo que vi você está utilizando o DataReport com DataEnvironment exemplo de filtro com mais condições:

Filtrar pelo campo NOME, onde os nomes comecem com as letras iniciais que estão na TextNOME onde o campo MUNICIPIO seja igual ao informado na text_municipio

deComercial.rsProdutos.Filter =" nome like '" & TextNOME.Text & "%' where municipio = '" & text_municipio & "'" 
rptProdutos.Show
Filtrar registros entre DATAS colocadas em duas textbox, uma para data_inicial e outra Data_final
deComercial.rsProdutos.Filter = "data >= '" & Txtdatainicial & "' and data<= '" & Txtdatafinal & "'"
rptProdutos.Show

Link to comment
Share on other sites

  • 0

Macêdo, funcionou velho (só que precisei trocar o WHERE por AND)! Mas surgiu outra dúvida: e se eu não quiser preencher um dos dois campos? Esse código funciona apenas se eu tiver os dois campos preenchidos, caso contrário dá erro.

Vou pensar em um jeito aqui, mas agradeceria se puder me ajudar. Vlw, obrigado pela resposta!

Link to comment
Share on other sites

  • 0

Instruções condidionais:

Private Sub Cmd_Relatorio()

if text1 <> "" and combo1 = ""
um tipo de filtro
rpt.show

if text1 = "" and comb 1 <> ""
outro filtro
rpt.show

if text1 <> "" and combo1 <> ""
outro filtro
rpt.show

end if

End Sub
Existem mil maneiras de fazer NESTON! eu costumo criar uma SUB com filtros e chamo os filtros no botão que quero, exemplo:
Private Sub FILTROS()

coloco minhas possibilidades de filtro

End Sub
Chamo os filtros no botão:
Private Sub Cmd_Impimir()

FILTROS

End Sub

Link to comment
Share on other sites

  • 0

Venho eu com mais uma...

Quando eu monto um relatório pelo Data Report eu uso um Data Environment e monto um Command com um comando SQL. Certo, depois é só puxar o relatório no projeto com o comando SHOW. Minha dúvida:

Posso montar minha SQL em um TextBox, por exemplo, e fazer o Data Report enxergar esse TextBox? Eu gostaria de poder variar minha SQL para montagem do relatório.

Link to comment
Share on other sites

  • 0

Já que estamos falando de datas, alguém sabe como faço pra puxar o primeiro dia do mês corrente em um textbox? Tipo:

Data Inicial: [PRIMEIRO DIA DO MÊS]

Data Final : [DIA CORRENTE]

Assim o usuário não precisaria ficar digitando as datas a toda hora.

Link to comment
Share on other sites

  • 0
Já que estamos falando de datas, alguém sabe como faço pra puxar o primeiro dia do mês corrente em um textbox? Tipo:

Data Inicial: [PRIMEIRO DIA DO MÊS]

Data Final : [DIA CORRENTE]

Assim o usuário não precisaria ficar digitando as datas a toda hora.

no text box você tem a data toda ou só o mes??

se for a data toda, faca assim:

datainicial = DateSerial(Year(CDate(Text1.Text)), Month(CDate(Text1.Text)), 1)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...