Flecha Postado Abril 29, 2009 Denunciar Share Postado Abril 29, 2009 Olá, Para meu projetinho ficar completo, falta variar os tipos de relatorios.Ai eu descobri o tal de SelectionFormula do Cristal.Pergunto: Posso criar variavel para receber uma string para armazenar o campo de seleção e a opção a selecionar para depois passa-las na formula do SelectionFormula;Tipo Um imputBox pergunta qual campo quer e outro qual Valor.Reort1.SelectionFormula = {minhaTabela.VARIAVEL do campo} = "VARIAVEL do valor"Pode isso?Flecha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 29, 2009 Denunciar Share Postado Abril 29, 2009 pode ue.so q você trocou as aspas ne. a string fica entre aspa, a variavel não. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Flecha Postado Abril 29, 2009 Autor Denunciar Share Postado Abril 29, 2009 (editado) KuroiFicou assimPrivate Sub Command1_Click()Dim strCargo As StringDim strValor As StringstrCargo = InputBox("Entre com o Campo, Cargo", "Nome do Campo")strValor = InputBox("Entre valor, Qual Cargo", "Qual Cargo")With CrystalReport1 .DataFiles(0) = GetAppPath() & "Cust.MDB" .SelectionFormula = "{Customer.strCargo}"= strValor .ReportFileName = GetAppPath() & "Report1.rpt" '.Destination = 0 (para tela) '.SortFields(0) = "+{Cust.Nome}" (Ordena) '.Action = 1 ' 1 = "Run the Report" CrystalReport1.Action = 1 End With'CrystalReport1.Action = 1 ' Ativa relatórioEnd SubEsta retornando o relatorio sem dadosE agora onde esta errado?Postei o projeto aquihttp://www.4shared.com/file/102477095/41cf...unc_ADO_ok.htmlFlecha Editado Abril 29, 2009 por Flecha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 29, 2009 Denunciar Share Postado Abril 29, 2009 não, mas a formula vai pra dentro da string. assim:.SelectionFormula = "{Customer.strCargo} = " & strValor Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Flecha Postado Abril 29, 2009 Autor Denunciar Share Postado Abril 29, 2009 Karoi,Fiz a alteração retorna errorun-time error 20515'{Customer.strCargo} = INVESTIGADOR'This field name is not knowndeve ser na aspa dupla ou simples, pois na tela do erro a condição aparece o valor da strValor que eu coloquei INVESTIGADORe no começo da frase aparece Customer.strCargoFlecha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 29, 2009 Denunciar Share Postado Abril 29, 2009 é verdade, se o campo é texto você tem q por entre aspa, assim:.SelectionFormula = "{Customer.strCargo} = '" & strValor & "'" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Flecha Postado Abril 29, 2009 Autor Denunciar Share Postado Abril 29, 2009 (editado) Kuroi,Ainda nãoMesmo erropega o projeto no site acima é pequeninho.flecha Editado Abril 29, 2009 por Flecha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 29, 2009 Denunciar Share Postado Abril 29, 2009 a mas você quer q o cara selecione o campo, digitando o nome dele??ai o codigo teria q ser assim:.SelectionFormula = "{Customer." & strCargo & "} = '" & strValor & "'"mas se o cara digitar o nome do campo errado, vai dar erro de qualquer jeito. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Flecha Postado Abril 29, 2009 Autor Denunciar Share Postado Abril 29, 2009 kUROI,Você é o cára.Deu certo, agora eu vou criar várias opções de relatorios e bolar o modo de escolhe-los em um outro form.Posso também colocar a instrução AND no selection?Até a próxima EMPACADA.você pegou o projeto?Felcha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 30, 2009 Denunciar Share Postado Abril 30, 2009 pode usar o and sim. o selection formula é como a clausula WHERE de uma query.peguei o projeto sim. so ai percebi q strCargo era uma variavel (apesar de você ter postado o codigo). Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Flecha Postado Abril 30, 2009 Autor Denunciar Share Postado Abril 30, 2009 (editado) Kuroi,Tinha dado um erro em outro report mas refis o relatorio e deu certo.FlechaNão sei se tenho que criar outro tópico ou continuo aqui se continuar com erro em crystal report, me corrija!! Editado Abril 30, 2009 por Flecha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 30, 2009 Denunciar Share Postado Abril 30, 2009 flecha, se for o mesmo assunto, ou continuacao dele, pode postar aqui.tipo, se for erro na formula do selection, pode postar ai. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Flecha Postado Maio 1, 2009 Autor Denunciar Share Postado Maio 1, 2009 (editado) kuroi, boa noite.Na verdade é continuação, mas se não for o local favor remover para o local certo.Eu não sei como colocar o código como aparece nas suas respostas, não sei se é possível para você.Então eu vou copiar e colar aqui.É o codigo do btClick da impressão Tem uma sequência de Ifs, pois no form da impressão coloquei 3 Options e quando a pessoa escolhe a opção os Ifs executam o comandode seleção do relatorio.rpt e imprime.o primeiro If é para imprimir todos do BD pelo relatório Report1.rpt OK?o segundo If é para imprimir aquela escolha que fizemos pelo selectionFormula que usa a limha abaixo.SelectionFormula = "{Customer." & strCargo & "} = '" & strValor & "'" Ok?o terceiro If imprime o Nome, RG, CARGO, Classe, e Posiçao de todos os registro do BD usando o relatório Report2.rpt OK?Todos funcionam, mas deve ter um erro, pois se imprimo a 1ª opção imprime correto. Agora escolho a 3ª Opção imprime correto TODOS OS CARGOS e os demais campos do relatório. Como o esperado. Agora quero imprimir pela 2ª Opção, aquela que pede o CAMPO para montar a formula eu escolho CARGO, depois pergunta o valor para o campo CARGO eeu ecolho CARCEREIRO ai ele executa o esperado certinho.Aqui vem o problema: Agora vou escolher a 3ª Opção novamente que deveria imprimir todo o BD com os campos do relatorio Report2.rpt, mas ele imprime só os CARGOS CARCEREIRO, que foi fornecido e atribuido a strValor na opção 2 e deixa de enxergar os outros cargos que deveria imprimir também.Como melhoro meus IFs nesse exemplo ou outra forma de executá-losSegue o codigo:Private Sub cmdOK_Click() '------------------------------------------------------------------------ On Error GoTo cmdOK_Click_Error If optreport(0).Value = True Then With CrystalReport1 .DataFiles(0) = GetAppPath() & "Cust.MDB" .ReportFileName = GetAppPath() & "Report1.rpt" .Action = 1 End With End If If optreport(1) = True Then Dim strCargo As String Dim strValor As String strCargo = InputBox("Escolha um Campo: Nome, Cargo ou Exercicio.", "Nome do Campo") strValor = InputBox("Entre com o texto em LETRAS MAIUSCULAS a coincidir no campo escolhido anterior.", "Opção de Impressão") With CrystalReport1 .DataFiles(0) = GetAppPath() & "Cust.MDB" .SelectionFormula = "{Customer." & strCargo & "} = '" & strValor & "'" .Action = 1 End With End If If optreport(2) = True Then With CrystalReport1 .DataFiles(0) = GetAppPath() & "Cust.MDB" .ReportFileName = GetAppPath() & "Report2.rpt" .Action = 1 End With End If Exit Sub cmdOK_Click_Error: MsgBox "The following error has occurred:" & vbNewLine _ & Err.Number & " - " & Err.Description, _ vbCritical, _ "cmdOK_Click" End SubDesulpe ficou longo...Flecha Editado Maio 1, 2009 por kuroi Adicionar tag CODE Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Maio 1, 2009 Denunciar Share Postado Maio 1, 2009 pra fazer o codigo dentro do box, ponha dentro da tag CODE. tipo assim:[C.O.D.E]codigo[/C.O.D.E]so q sem os pontos.o problema ai deve ser porque como você usa o mesmo objeto CRControl pra todos os relatorios, quando você altera a selection formula pra um deles, continua alterado pro outro.tenta limpar a formula. insira a seguinte linha nas opcoes 0 e 2:.SelectionFormula = "" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Flecha Postado Maio 1, 2009 Autor Denunciar Share Postado Maio 1, 2009 (editado) Kuroi,Mais uma vez, funciomou.Vou testar mais.Devo voltar, pois vou tentar colocar as opções de Campo e valores por combox para pegar o valor exato porque se digitado errado ou nimusculo nãoacha ou retorna erro, acho que é possivel não é??[C.O.D.E].SELECTIONFORMULA=""fLECHA Editado Maio 1, 2009 por Flecha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Flecha Postado Maio 2, 2009 Autor Denunciar Share Postado Maio 2, 2009 (editado) Kuroi,Falei que voltava!!O código Load do form de tipos de impressãoPrivate Sub Form_Load() '------------------------------------------------------------------------ CenterForm Me Combo1Rel.AddItem "CARGO" Combo1Rel.AddItem "EXERCICIO" Combo2Rel.AddItem "AGENTE POLICIAL" Combo2Rel.AddItem "AUXILIAR DE PAP." Combo2Rel.AddItem "CARCEREIRO" Combo2Rel.AddItem "INVESTIGADOR" Combo2Rel.AddItem "PAPILOSCOPISTA" End Sub Codigo do botão OK do Form de Tipos de impressão para as Opções On Error GoTo cmdOK_Click_Error If optreport(0).Value = True Then With CrystalReport1 .DataFiles(0) = GetAppPath() & "Cust.MDB" .ReportFileName = GetAppPath() & "Report1.rpt" .SelectionFormula = "" .Action = 1 End With ElseIf optreport(1) = True Then Dim strCargo As String Dim strValor As String 'strCargo = InputBox("Escolha um Campo: Nome, Cargo ou Exercicio.", "Nome do Campo") 'strValor = InputBox("Entre com o texto em LETRAS MAIUSCULAS a coincidir no campo escolhido anterior.", "Opção de Impressão") strCargo = Combo1Rel.Text strValor = Combo2Rel.Text With CrystalReport1 .DataFiles(0) = GetAppPath() & "Cust.MDB" .SelectionFormula = "{Customer." & strCargo & "} = '" & strValor & "'" .Action = 1 End With Else: optreport(2) = True With CrystalReport1 .DataFiles(0) = GetAppPath() & "Cust.MDB" .ReportFileName = GetAppPath() & "Report2.rpt" .SelectionFormula = "" .Action = 1 End With End If Exit Sub cmdOK_Click_Error: MsgBox "The following error has occurred:" & vbNewLine _ & Err.Number & " - " & Err.Description, _ vbCritical, _ "cmdOK_Click" End SubEu estou retirando as perguntas ao usuário de o que imprimir (inputBox)Acrecentei duas combobox combo1Rel para o campo da tabela "cargo" exercicio" e combo2Rel para o conteudo do campo ondese escolher cargo na combo1Rel na outra tem que escolher os conteudos na combo2Rel "agente policial" carcereiro" etc...No form as opções estão agrupadas na sequência abaixo:Imprimir geral (usa o Report1)Imprimir com a escolha pela combos (esta usa o SelectionReport)Imprimir por classe e carreiras. (usa o Report2)O erroQuando eu entro no form de imprssão a 1ª opção já vem marcada.Eu mudo para a segunda, a das combos e escolho as opções das combos, clico OK para imprimir e vem o erro:Invalid fila name - 20507 não sei porque.Fecho a tela o erro no OK, o programa volta para a tela do form de impressão e escolho a 1ª opção imprimir geral e funciona ok. Volto para o form clico na opção 2 da combo que até já estão preenchidas quando do erro e só clico na opção 2 e ok funciona perfeito sem erros e ai posso escolher o que quiser das combos.Resumindo : Para não dar o erro na 2ª opção sempre que chamar o form tenho que usar primeiro a 1ª opção ou a ultima e só depois optar pela dos combos.Depois de resolvido isso tenho uma pergunta para os combos, você diz se pode ser aqui.Flecha Editado Maio 3, 2009 por kuroi Adicionar tag CODE Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Maio 3, 2009 Denunciar Share Postado Maio 3, 2009 porque se digitado errado ou nimusculo não acha ou retorna erro, acho que é possivel não é??flecha, acho q não faz diferenca maiusculo e minusculo não. isso varia de banco pra banco, mas acho q dentro do crystal não tem esse problema.mas pra garantir você podia por um UCase() na formula. exemplo:.SelectionFormula = "UCase({Customer." & strCargo & "}) = UCase('" & strValor & "')"assim ele converte os dois pra maiuscula e não vai ter problema.Quando eu entro no form de imprssão a 1ª opção já vem marcada.Eu mudo para a segunda, a das combos e escolho as opções das combos, clico OK para imprimir e vem o erro:Invalid fila name - 20507 não sei porque.Fecho a tela o erro no OK, o programa volta para a tela do form de impressão e escolho a 1ª opção imprimir geral e funciona ok. Volto para o form clico na opção 2 da combo que até já estão preenchidas quando do erro e só clico na opção 2 e ok funciona perfeito sem erros e ai posso escolher o que quiser das combos.Resumindo : Para não dar o erro na 2ª opção sempre que chamar o form tenho que usar primeiro a 1ª opção ou a ultima e só depois optar pela dos combos.mas então flecha, no optreport(1) você não ta passando o ReportFileName, não é esse o problema??Depois de resolvido isso tenho uma pergunta para os combos, você diz se pode ser aqui.isso é aquele tópico q você já postou ne?? então pode dexar la, não tem relacao com o crystal mesmo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Flecha Postado Maio 4, 2009 Autor Denunciar Share Postado Maio 4, 2009 kuroi,Quanto as combos já responderam e esta OK.Quanto ao Ucase vou testar.Mas nas opcões não entendi e vou repetir aqui as Opções da procedure:Se for a primeira que é optreport(0) ---->funciona legal usa o report1 criado If optreport(0).Value = True Then With CrystalReport1 .DataFiles(0) = GetAppPath() & "Cust.MDB" .ReportFileName = GetAppPath() & "Report1.rpt" .SelectionFormula = "" .Action = 1 End WithSe for a segunda optreport(1) -----> é a que dá o erro se for escolhida quando eu abro o form de impressão e escolho qual delas. entre 1, 2, e 3. Usa o report2 criado para opção 2 mas coloca o selectionFormula.ElseIf optreport(1) = True Then Dim strCargo As String Dim strValor As String strCargo = Combo1Rel.Text strValor = Combo2Rel.Text With CrystalReport1 .DataFiles(0) = GetAppPath() & "Cust.MDB" .SelectionFormula = "{Customer." & strCargo & "} = '" & strValor & "'" .Action = 1 End WithSe for a opção optreport(2) ------> funciona legal usa o report2 criadoElse: optreport(2) = True With CrystalReport1 .DataFiles(0) = GetAppPath() & "Cust.MDB" .ReportFileName = GetAppPath() & "Report2.rpt" .SelectionFormula = "" .Action = 1 End With End If Exit SubAcho que é isso, onde esta o erro?Flecha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Maio 4, 2009 Denunciar Share Postado Maio 4, 2009 olha essa daqui:ElseIf optreport(1) = True Then Dim strCargo As String Dim strValor As String strCargo = Combo1Rel.Text strValor = Combo2Rel.Text With CrystalReport1 .DataFiles(0) = GetAppPath() & "Cust.MDB" .SelectionFormula = "{Customer." & strCargo & "} = '" & strValor & "'" .Action = 1 End With[/code]você não passa o ReportFileName. como ele vai saber q relatorio tem q abrir da primera vez??nas otras opcoes você passa o ReportFileName, então quando você imprime a opcao 1 depois de ter impresso a 2 por exemplo, o ReportFileName ta setado, por isso não da erro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Flecha Postado Maio 4, 2009 Autor Denunciar Share Postado Maio 4, 2009 (editado) Kuroi,Eu estava estudando o código e os relatorios,Eu criei o Report1 que foi meu primeiro relatorio.depois criei o Report2 que foi o segundo.Depois foi criado a opção que usa a formula, mas não foi criado um relatório para colocar a formula e notei que pelos dados que sai impresso no detalhe ele usa o report1.SOLUÇÃOÉ isso ai, coloquei o reportFileName na linha da opção com o nome do report1 e deu certo o UCase na fórmula dá erro, ai eu transformei a variavelç strValor depois do inputBoxstrValor = Ucase(strValor)ai deu certo.Funcionou Quem sabe sabe....Até a próxima. Flecha Editado Maio 4, 2009 por Flecha Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Flecha
Olá, Para meu projetinho ficar completo, falta variar os tipos de relatorios.
Ai eu descobri o tal de SelectionFormula do Cristal.
Pergunto: Posso criar variavel para receber uma string para armazenar o campo de seleção e a opção a selecionar para depois passa-las na formula do
SelectionFormula;
Tipo Um imputBox pergunta qual campo quer e outro qual Valor.
Reort1.SelectionFormula = {minhaTabela.VARIAVEL do campo} = "VARIAVEL do valor"
Pode isso?
Flecha
Link para o comentário
Compartilhar em outros sites
19 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.