FILTRAR POR CÓDIGO E DATAS NO CRYSTAL
Olá, tenho um form em vb6/access/crystal8.5 que emite relatórios. A tabela de origem (tbFormulario) tem os seguintes dados relevantes:
codFormulario - PK
codFunc - (relacionada com a tbFunc para exibir o nome do funcionário)
codClasse
De - data de inicio do formulário
Ate - data final do formulário
dataClasse - (relacionada com a tbContrato)
NroPontos
Se coloco para imprimir TUDO ele imprime; se eu fazer uma seleção por Classe (codClasse) também imprime.O que não to conseguindo fazer é selecionar um intervalo de datas: De (inicial) Ate (final) junto com uma classe (codClasse). Ou seja, selecionar funcionários da classe B (por exemplo) DE 01/01/2012 ATE 31/12/2014. O código parcial que tenho é esse...
Sub ImprimeTudo()
CrystalReport1.Reset
CrystalReport1.DataFiles(0) = App.Path & [Ô]\promove.mdb[Ô]
CrystalReport1.ReportFileName = App.Path & [Ô]ptClassificacao.rpt[Ô]
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowState = crptMaximized
CrystalReport1.WindowShowZoomCtl = True
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowShowNavigationCtls = True
CrystalReport1.WindowShowCloseBtn = True
CrystalReport1.WindowShowPrintSetupBtn = True
CrystalReport1.WindowShowPrintBtn = True
CrystalReport1.Action = 1
End Sub
Sub ImprimeClasse()
CrystalReport1.Reset
CrystalReport1.DataFiles(0) = App.Path & [Ô]\promove.mdb[Ô]
CrystalReport1.ReportFileName = App.Path & [Ô]ptClassificacao.rpt[Ô]
CrystalReport1.SelectionFormula = [Ô]{ConsultaClassificacao.codClasse} =[Ô] & txtCodClasse.Text
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowState = crptMaximized
CrystalReport1.WindowShowZoomCtl = True
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowShowNavigationCtls = True
CrystalReport1.WindowShowCloseBtn = True
CrystalReport1.WindowShowPrintSetupBtn = True
CrystalReport1.WindowShowPrintBtn = True
CrystalReport1.Action = 1
End Sub
Tava tentando assim mas não dá certo:
CrystalReport1.Reset
CrystalReport1.DataFiles(0) = App.Path & [Ô]\promove.mdb[Ô]
CrystalReport1.ReportFileName = App.Path & [Ô]ptClassificacao.rpt[Ô]
[ô]CrystalReport1.SelectionFormula = [Ô]{ConsultaClassificacao.codClasse} =[Ô] & txtCodClasse.Text
[ô]CrystalReport1.SelectionFormula = rptSelecao
CrystalReport1.SelectionFormula = [Ô]({tbFormulario.codClasse} >= [Ô] & (Val(txtDe.Text)) & [Ô] and {tbFormulario.codClasse} <= [Ô] & (Val(txtAte.Text)) & [Ô]) And ({tbFormulario.codClasse} >= Date([Ô] & Format$(txtAte.Text, [Ô]yyyy,mm,dd[Ô]) & [Ô]) and {tbFormulario.codClasse} <= Date([Ô] & Format$(txtAte.Text, [Ô]yyyy,mm,dd[Ô]) & [Ô]))[Ô]
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowState = crptMaximized
CrystalReport1.WindowShowZoomCtl = True
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowShowNavigationCtls = True
CrystalReport1.WindowShowCloseBtn = True
CrystalReport1.WindowShowPrintSetupBtn = True
CrystalReport1.WindowShowPrintBtn = True
CrystalReport1.Action = 1
Valeu...
codFormulario - PK
codFunc - (relacionada com a tbFunc para exibir o nome do funcionário)
codClasse
De - data de inicio do formulário
Ate - data final do formulário
dataClasse - (relacionada com a tbContrato)
NroPontos
Se coloco para imprimir TUDO ele imprime; se eu fazer uma seleção por Classe (codClasse) também imprime.O que não to conseguindo fazer é selecionar um intervalo de datas: De (inicial) Ate (final) junto com uma classe (codClasse). Ou seja, selecionar funcionários da classe B (por exemplo) DE 01/01/2012 ATE 31/12/2014. O código parcial que tenho é esse...
Sub ImprimeTudo()
CrystalReport1.Reset
CrystalReport1.DataFiles(0) = App.Path & [Ô]\promove.mdb[Ô]
CrystalReport1.ReportFileName = App.Path & [Ô]ptClassificacao.rpt[Ô]
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowState = crptMaximized
CrystalReport1.WindowShowZoomCtl = True
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowShowNavigationCtls = True
CrystalReport1.WindowShowCloseBtn = True
CrystalReport1.WindowShowPrintSetupBtn = True
CrystalReport1.WindowShowPrintBtn = True
CrystalReport1.Action = 1
End Sub
Sub ImprimeClasse()
CrystalReport1.Reset
CrystalReport1.DataFiles(0) = App.Path & [Ô]\promove.mdb[Ô]
CrystalReport1.ReportFileName = App.Path & [Ô]ptClassificacao.rpt[Ô]
CrystalReport1.SelectionFormula = [Ô]{ConsultaClassificacao.codClasse} =[Ô] & txtCodClasse.Text
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowState = crptMaximized
CrystalReport1.WindowShowZoomCtl = True
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowShowNavigationCtls = True
CrystalReport1.WindowShowCloseBtn = True
CrystalReport1.WindowShowPrintSetupBtn = True
CrystalReport1.WindowShowPrintBtn = True
CrystalReport1.Action = 1
End Sub
Tava tentando assim mas não dá certo:
CrystalReport1.Reset
CrystalReport1.DataFiles(0) = App.Path & [Ô]\promove.mdb[Ô]
CrystalReport1.ReportFileName = App.Path & [Ô]ptClassificacao.rpt[Ô]
[ô]CrystalReport1.SelectionFormula = [Ô]{ConsultaClassificacao.codClasse} =[Ô] & txtCodClasse.Text
[ô]CrystalReport1.SelectionFormula = rptSelecao
CrystalReport1.SelectionFormula = [Ô]({tbFormulario.codClasse} >= [Ô] & (Val(txtDe.Text)) & [Ô] and {tbFormulario.codClasse} <= [Ô] & (Val(txtAte.Text)) & [Ô]) And ({tbFormulario.codClasse} >= Date([Ô] & Format$(txtAte.Text, [Ô]yyyy,mm,dd[Ô]) & [Ô]) and {tbFormulario.codClasse} <= Date([Ô] & Format$(txtAte.Text, [Ô]yyyy,mm,dd[Ô]) & [Ô]))[Ô]
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowState = crptMaximized
CrystalReport1.WindowShowZoomCtl = True
CrystalReport1.DiscardSavedData = False
CrystalReport1.WindowShowNavigationCtls = True
CrystalReport1.WindowShowCloseBtn = True
CrystalReport1.WindowShowPrintSetupBtn = True
CrystalReport1.WindowShowPrintBtn = True
CrystalReport1.Action = 1
Valeu...
Olhe onde está de vermelho.
CrystalReport1.SelectionFormula = [Ô]({tbFormulario.codClasse} >= [Ô] & (Val(txtDe.Text)) & [Ô] and {tbFormulario.codClasse} <=[txt-color=#e80000] [Ô] & (Val(txtAte.Text)) & [Ô]) And ({tbFormulario.codClasse} >= Date([Ô] & Format$(txtAte.Text, [Ô]yyyy,mm,dd[Ô]) & [Ô]) and {tbFormulario.codClasse} <= Date([Ô] & Format$(txtAte.Text, [Ô]yyyy,mm,dd[Ô]) & [Ô]))[Ô][/txt-color]
Acredito que tbFormulario.codClasse seja número.
Como vai ficar está consulta codclasse >= ou <= txtAte.Text, [Ô]yyyy,mm,dd[Ô].
Esqueceu do campo Data.
CrystalReport1.SelectionFormula = [Ô]({tbFormulario.codClasse} >= [Ô] & (Val(txtDe.Text)) & [Ô] and {tbFormulario.codClasse} <=[txt-color=#e80000] [Ô] & (Val(txtAte.Text)) & [Ô]) And ({tbFormulario.codClasse} >= Date([Ô] & Format$(txtAte.Text, [Ô]yyyy,mm,dd[Ô]) & [Ô]) and {tbFormulario.codClasse} <= Date([Ô] & Format$(txtAte.Text, [Ô]yyyy,mm,dd[Ô]) & [Ô]))[Ô][/txt-color]
Acredito que tbFormulario.codClasse seja número.
Como vai ficar está consulta codclasse >= ou <= txtAte.Text, [Ô]yyyy,mm,dd[Ô].
Esqueceu do campo Data.
Tô levando o maior laço com isso aqui. O exemplo de código acima tá me deixando mais confuso ainda , exibe vários erros que não estou conseguindo sanar.
Uma dúvida me surgiu : é correto ter na tabela dois campos referente ao perÃodo de datas, um datainicial e outro datafinal.Pois na minha tabela tá assim. Isso não dificulta na hora de criar um código para fazer a seleção do perÃodo? Vários exemplos, inclusive aqui do fórum, a data se refere a um campo só. Estou patinando nesse relatório pois todos exemplos que baixei e verifiquei online ou faz a filtragem por data ou por código do cliente. No meu caso eu preciso juntar esses dois critérios, ex: dataini e datafim onde codclasse= [Ô]. Alguém tem um exemplo que seja compatÃvel com crystal 8.5?? é isso ai...
ALANTB
Uma dúvida me surgiu : é correto ter na tabela dois campos referente ao perÃodo de datas, um datainicial e outro datafinal.Pois na minha tabela tá assim. Isso não dificulta na hora de criar um código para fazer a seleção do perÃodo? Vários exemplos, inclusive aqui do fórum, a data se refere a um campo só. Estou patinando nesse relatório pois todos exemplos que baixei e verifiquei online ou faz a filtragem por data ou por código do cliente. No meu caso eu preciso juntar esses dois critérios, ex: dataini e datafim onde codclasse= [Ô]. Alguém tem um exemplo que seja compatÃvel com crystal 8.5?? é isso ai...
ALANTB
Vou te mostra uma consulta simples entre Datas feito com Access.
rp.Open [Ô] Select * From HistCompra Where Dt_mov between #[Ô] & Format(Text5.Text, [Ô]dd/mm/YYYY[Ô]) & [Ô]# AND #[Ô] & Format(Text6.Text, [Ô]dd/mm/YYYY[Ô]) & [Ô]# And IdCompra= [Ô] & Text7.Text, db, adOpenStatic
Basta substituir.
Quanto a dois campos datainicial e outro datafinal não tem necessidade.
rp.Open [Ô] Select * From HistCompra Where Dt_mov between #[Ô] & Format(Text5.Text, [Ô]dd/mm/YYYY[Ô]) & [Ô]# AND #[Ô] & Format(Text6.Text, [Ô]dd/mm/YYYY[Ô]) & [Ô]# And IdCompra= [Ô] & Text7.Text, db, adOpenStatic
Basta substituir.
Quanto a dois campos datainicial e outro datafinal não tem necessidade.
OMAR2011, mesmo substituindo, segue dando erros. Com uma substituição simples da query acima ou com uma query que eu tinha que inclui todas as tabelas relacionadas referente ao relatório em questão. Sendo assim vou postar o projeto para melhor visualização dos erros. Na toolbar: Relatório Classificação ou menu RELATÓRIOS -->CLASSIFICAÇÃO (frmRelClassificacao). é isso ai.....
CrystalReport1.SelectionFormula = [Ô] Select * From tbFormulario Where dataIni between #[Ô] & Format(txtDe.Text, [Ô]dd/mm/YYYY[Ô]) & [Ô]# AND #[Ô] & Format(txtAte.Text, [Ô]dd/mm/YYYY[Ô]) & [Ô]# And [txt-color=#e80000]tbFormulario.codClasse[/txt-color]= [Ô] & txtCodClasse.Text
Na sua tabela não existe este Campo.
Na sua tabela não existe este Campo.
Achei o código abaixo mas fica dando de runtime error 13 type mismatch na linha marcada com a flecha. Achei que podia ser porque a dataini na tbFormulario estava como texto. Alterei para data/hora mas continua o mesmo erro. O que deve estar errado ou dá para modificar a cosificação???
Sub ImprimeClasse2()
If txtDe.Text = [Ô][Ô] Then
MsgBox [Ô] Campo data inicial nao informado[Ô], vbExclamation
txtDe.SetFocus: Exit Sub
ElseIf txtAte.Text = [Ô][Ô] Then
MsgBox [Ô] Campo data fim nao informado[Ô], vbExclamation
txtAte.SetFocus: Exit Sub
Else
[ô]On Error GoTo SubErro
Dim sCriterio As String, caminho As String, caminhoRel As String
[ô] O ERRO MARCA EM AMARELO ESTAS TRÊS LINHAS ABAIXO ..
sCriterio = [Ô]({ConsultaClassificacaoClasse.dataIni} in #[Ô] & _
Format(txtDe.Text, [Ô]dd/mm/yyyy[Ô]) & [Ô]# to #[Ô] & _
Format(txtAte.Text, [Ô]dd/mm/yyyy[Ô]) & [Ô]#)[Ô] And [Ô]{ConsultaClassificacaoClasse.codClasse}= [Ô] & txtCodClasse.Text [ô] E COLOCA UMA FLECHA DE ERRO NESSA LINHA
caminho = App.Path & [Ô]\promove.mdb[Ô]
With CrystalReport1
.DataFiles(0) = caminho
.Destination = 0
caminhoRel = App.Path & [Ô]ptClassificacao.rpt[Ô]
.ReportFileName = caminhoRel
.SelectionFormula = sCriterio
.Action = 1
End With
End If
[ô]SubErro:
[ô] If Err.Number <> 0 Then
[ô] MsgBox [Ô]O sistema apresentou erro[Ô], vbCritical, [Ô]Erro[Ô]
[ô] End If
End Sub
Sub ImprimeClasse2()
If txtDe.Text = [Ô][Ô] Then
MsgBox [Ô] Campo data inicial nao informado[Ô], vbExclamation
txtDe.SetFocus: Exit Sub
ElseIf txtAte.Text = [Ô][Ô] Then
MsgBox [Ô] Campo data fim nao informado[Ô], vbExclamation
txtAte.SetFocus: Exit Sub
Else
[ô]On Error GoTo SubErro
Dim sCriterio As String, caminho As String, caminhoRel As String
[ô] O ERRO MARCA EM AMARELO ESTAS TRÊS LINHAS ABAIXO ..
sCriterio = [Ô]({ConsultaClassificacaoClasse.dataIni} in #[Ô] & _
Format(txtDe.Text, [Ô]dd/mm/yyyy[Ô]) & [Ô]# to #[Ô] & _
Format(txtAte.Text, [Ô]dd/mm/yyyy[Ô]) & [Ô]#)[Ô] And [Ô]{ConsultaClassificacaoClasse.codClasse}= [Ô] & txtCodClasse.Text [ô] E COLOCA UMA FLECHA DE ERRO NESSA LINHA
caminho = App.Path & [Ô]\promove.mdb[Ô]
With CrystalReport1
.DataFiles(0) = caminho
.Destination = 0
caminhoRel = App.Path & [Ô]ptClassificacao.rpt[Ô]
.ReportFileName = caminhoRel
.SelectionFormula = sCriterio
.Action = 1
End With
End If
[ô]SubErro:
[ô] If Err.Number <> 0 Then
[ô] MsgBox [Ô]O sistema apresentou erro[Ô], vbCritical, [Ô]Erro[Ô]
[ô] End If
End Sub
Tópico encerrado , respostas não são mais permitidas