Ir para conteúdo
Fórum Script Brasil
  • 0

Fórmulas No Crystal


Guest tosdev

Pergunta

Oi, boa noite!

Pessoal, estou trabalhando com o Crsytal 8 e, apesar de ler alguns livros, venho tendo dificuldades para obter informações de como usar e ler as fórmulas que o Crystal possui.

Alguém sabe de algum site, fórum, livro ou até qualquer caminho para que eu possa ler e estudar?

Agradeço pela atenção e ajuda de todos.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
cara tem um tópico pendurado só pra apostilas: http://scriptbrasil.com.br/forum/index.php?showtopic=86681

mas explica melhor esse seu problema com as formulas pra ver se a gente aqui consegue ajudar

Kuroi e povo do fórum, o que estou procurando, apesar das apostilas e o próprio livro do SCR 8, são informações sobre uso/sintaxe de fórmulas do Crystal. Não quero usar apenas o script no VB como na versão 8.

Exemplo:

No VB eu tenho este exemplo: Me.lblTime = Format(Date, "long date") & " " & Format(Time, "hh:mm:ss AMPM"). Como poderia fazer isso no Crystal?

Ou exemplo:

If Me.txtData <> "" Then

data_formatada = Campo_data(Me.txtData, Erro, msg, tamanho)

Me.txtData = data_formatada

Me.cmdOk.Enabled = True

Me.cmdLimpar.Enabled = True

'Me.txtDiaSemana.Text = DiaSemana(Me.txtData)

Else

MsgBox msg, vbCritical, "Atenção"

End If

Estes são exemplos. O que eu quero é aprender a usar a fórmula/sintaxe do Crystal.

Valeu pela ajuda. Fico no aguardo

Abs.

Tosdev

Link para o comentário
Compartilhar em outros sites

  • 0

só pra avisar, apaguei o seu post no otro tópico. primeiro porque o outro tópico é sobre apostilas e não sobre duvidas. e depois, você já postou nesse tópico aqui. e postar duas vezes a mesma pergunta é muito ruim pra quem for ler, pra quem for responder, e mtas vezes pra você mesmo. depois um cara responde nesse tópico, otro cara responde otra coisa no otro e fica td confuso. beleza??

respondendo a pergunta, você não precisa usar formula pra formatar data. e se por um acaso tiver q fazer isso, não existe funcao no crystal q formate direto a data ou qualquer outro tipo de valores pra você, você teria q converter pra string e montar a mascara na mao, usando as funcoes de datas (Day(), Month(), Year(), etc) e as funcoes de manipulacao de string (InStr(), Replace(), Len(), Left(), Right(), etc).

pra você formatar uma data, simplesmente adicione-a no relatorio, clique com o botao direito nela, na janelinha q aparecer clique em Format Field. se o campo for realmente do tipo data, vai ter, na janela q abrir, uma aba Date / Time (se o campo for numerico, a aba vai se chamar Number). la você tem varias opcoes de formatos já definidos, mas pode clicar em Customize pra poder montar certinho a data como você quer usando as opcoes q o Crystal da.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --tosdev --
só pra avisar, apaguei o seu post no otro tópico. primeiro porque o outro tópico é sobre apostilas e não sobre duvidas. e depois, você já postou nesse tópico aqui. e postar duas vezes a mesma pergunta é muito ruim pra quem for ler, pra quem for responder, e mtas vezes pra você mesmo. depois um cara responde nesse tópico, otro cara responde otra coisa no otro e fica td confuso. beleza??

respondendo a pergunta, você não precisa usar formula pra formatar data. e se por um acaso tiver q fazer isso, não existe funcao no crystal q formate direto a data ou qualquer outro tipo de valores pra você, você teria q converter pra string e montar a mascara na mao, usando as funcoes de datas (Day(), Month(), Year(), etc) e as funcoes de manipulacao de string (InStr(), Replace(), Len(), Left(), Right(), etc).

pra você formatar uma data, simplesmente adicione-a no relatorio, clique com o botao direito nela, na janelinha q aparecer clique em Format Field. se o campo for realmente do tipo data, vai ter, na janela q abrir, uma aba Date / Time (se o campo for numerico, a aba vai se chamar Number). la você tem varias opcoes de formatos já definidos, mas pode clicar em Customize pra poder montar certinho a data como você quer usando as opcoes q o Crystal da.

Kuroi, com relação ao post no outro tópico, zero problema. Talvez eu não tenho sido claro no meu questionamento. O exemplo q eu citei, foi apnesa ilustrativo. A minha solicitação é de saber se há entre os livros q estou lendo e os links deste fórum, outras fonte de estudo somente sobre fórmulas do Crystal. Os exemplos q eu usei são em VB e como faria isso pela sintaxe Crystal, entende? Quero estudar isso.

//evaluateAfter ({@Reset HistoGram});

WhilePrintingRecords;

NumberVar i;

NumberVar delimit;

StringVar HistoGram;

if {Orders.Ship Date} - {Orders.Order Date} >= 254 then

delimit := 0 else

delimit := {Orders.Ship Date} - {Orders.Order Date};

for i := 0

to delimit do

HistoGram := HistoGram + "6";

HistoGram //:= ""

Veja neste exemplo, acima, a sintaxe desta fómula. Eu quero entender isso. O porque do := (atribuição de valor) etc...é isso.

De qualquer forma valeu pela ajuda e atenção.

Tosdev

Link para o comentário
Compartilhar em outros sites

  • 0

não conheco apostilas do crystal já q nunca utilizei nenhuma, então não tenho nenhuma pra te indicar.

agora quanto as formulas, não tem segredo nenhum, você pode usar a Basic Syntax q é semelhante ao visual basic, td o q você tem q fazer é atribuir um valor à variavel Formula. exemplo, se você tem um campo formula, você pode fazer assim:

Formula = InStr({Tabela.Campo1}, 0, 2) & Left({Tabela.Campo2}, 5)
você pode usar a Crystal Syntax q é muito parecido com a diferenca q você não precisar atribuir o valor pra variavel Formula, é so passa-lo q ele é retornado pra formula. exemplo, essa formula em Basic Syntax:
If {Tabela.Campo} = 1 Then
    Formula = "um"
ElseIf {Tabela.Campo} = 2 Then
    Formula = "dois"
Else
    Formula = "outro"
End If[/code] em Crystal Syntax, ficaria assim:
[code]If {Tabela.Campo} = 1 Then
    "um"
Else If {Tabela.Campo} = 2 Then
    "dois"
Else
    "outro"
e dentro da formula você pode declarar variavies normalmente e atribuir valores pra ela. por exemplo:
Dim x as String
If {Tabela.Campo} = 1 Then
    x = "um"
ElseIf {Tabela.Campo} = 2 Then
    x = "dois"
Else
    x = "outro"
End If
Formula = x[/code]

e você pode usar rotinas de repeticao como For e While e etc.

e td isso vale pra qualquer tipo de formula q você for usar no Crystal, desde campos Formulas, ate formulas de selecao, formulas de formatacao de secoes e texto. so q dependendo da formula o tipo de dado a ser retornado varia. exemplo, em formula de selecao (Record Selection Formula) você deve voltar True ou False obrigatoriamente.

é mais ou menos isso q se tem pra falar sobre formulas no Crystal, veja ai e as duvidas q você tiver, pergunte.

agora quanto a esse seu codigo, não tem muito o q falar, o := simplesmente é atribuicao de valor pra variavel em Crystal Syntax (apesar de, acredito, não ser necessario os dois pontos). fora isso, ele declara variaveis, usa comandos q tdo mundo conhece como if, for, etc. se você tem o minimo conhecimento de programacao, acredito q não tera dificuldade pra entender, talvez você possa ter alguma dificuldade pra entender exatamente como funcionam os campos formula, nesse caso olha a explicacao q eu passei, e tenta trabalahar você mesmo com formulas, q ai as coisas devem entrar na sua cabeca, qualquer duvida q tiver pergunte ai.

alias, acredito q tdo isso q eu falei acima você deva encontrar muito melhor explicado em qualquer apostila ou livro q tenha por ai. talvez você esteja com alguma duvida ou dificuldade especifica, nesse caso explique melhor o q você não entende.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --tosdev --

Kuroi, desculpe-me pela demora.

Já estou usando as fórmulas com a sintax do crystal, apesa de ser mais fácil usar o vb por conhecimento (mas não é o objetivo).

Faço com o Crystal leia um Procedure do meu BD Oracle q me fornece o dia de cada evento que um aluno participou assim como a qtd de horas que cada evento tem que contará para a promoção dele. Até aqui tudo bem. Isso eu já tenho e está ok.

Quero q este mesmo relatório traga para mim todo o histórico (desde o início com o total de horas) - isso eu já faço e está Ok.

O que eu não consigo é o seguinte: Zerar o contador em uma data específica ( que foi a data da promoção dele) e aparecer no relatório esta data da promoção (nesta data não tem evento p/ ele) - deve aparecer somente a data com a informação da promoção e o saldo zerado.

Depois ele começa contando tudo de novo até a próxima promoção e no final ele tratá o saldo - que é o total de horas desde a última promoção até o últim evento.

Conseguiu entender?

Qualquer cois, me mande um e-mail.

Novamente, obrigado pela ajuda.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --tosdev --
o q é o contador?? um campo formula, ou um Running Total Field??

e como você sabe qual a data da promocao??

Kuroi, seguem as respostas aos seus questionamentos:

A data é passada como parâmetro pelo VB à procedure no Oracle. O Crystal lê esta procedure e "faz" o relatório que eu quero. Ele "carrega" as datas de todos os eventos que o aluno participou, assim como as horas que ele acumulou neste evento.

Em uma determinada data ele é promovido. Até esta data ele tem um total de horas (correto?). Logo depois desta data o histórico de horas dele deve ser zerada para começar de novo até uma nova promoção. Caso ocorra, zera novamente as horas. E se não ocorrer uma nova promoção ou nenhuma, o saldo dele será o total de horas computadas.

Ficará mais ou menos assim no relatório:

Evento: Dia: Horas:

Aula de Arte 01/09/2007 8

Aula de Ciências 03/09/2007 6

Aula de Física 07/09/2007 6

Aula de Idiomas 09/09/2007 8

Obs: Total de horas: 28

continuando...

Evento: Dia: Horas:

PROMOÇÃO 12/09/2007 - // Obs: aqui o total de horas deverá ser zerado....

Aula de Arte 13/09/2007 5

Aula de Ciências 14/09/2007 5

Aula de Física 15/09/2007 5

Aula de Idiomas 16/09/2007 5

Obs: Total de horas: 20 (Novo saldo)

Esta é a minha dúvida. A data da promoção só deverá aparecer entre os eventos, ou seja, seguirá a ordem de datas no relatório. E o novo saldo deverá ser mostrado no final do relatório junto com o total.

O total de eventos e horas, eu consigo na procedura que eu criei. Não consigo gerar este saldo remanescente e fazer com que esta data apareça, quando houver.

Obs: Poderá ter mais de 1 promoção.

Ficou melhor agora?

Link para o comentário
Compartilhar em outros sites

  • 0

certo, a data é passada por parametro à procedure. mas e se forem mais de uma data, como os parametros são passados??

e você não tem como pegar esses parametros no crystal??

bom, o q você pode fazer é criar algum campo parametro no crystal e passar o parametro (pelo visual basic) tb para o crystal.

ai você cria um Running Total Field pra ser o seu contador. você vai ver la q tem a opcao Reset, q determina quando ele vai ser zerado. acho q no seu caso você teria q selecionar a opcao Use a Formula e por uma formula q se adequasse ao seu caso.

mas eu não sei muito bem dizer como deveria ser essa formula, já q ficou meio confuso essa parte dos parametros. se fosse uma data só, era simples, você mandaria resetar quando a data do banco passasse a data do parametro. agora com mais de uma fica confuso, talvez se você passasse as datas todas numa string, a gente pudesse separa-las e trata-las, mas vai dar trabalho.

mas explica melhor como funciona essa relacao com o oracle e etc (as perguntas no topo no post).

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...