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

(Resolvido) Dúvida/problema Com Criação De Campo Calculado Com Db


Alisson

Pergunta

Oi pessoal... o meu problema é o cguint:

Preciso adicionar dois campos, seja em um clientdataset ou em um SQLQuery, enfim... para que possam armazenar (temporariamente) o valor da "Data Inicial" e a "Data Final" a serem utilizadas em um relatório no rave.

Vou descrever passo-a-passo o q eu tenho feito:

-> Fields Editor -> New Field -> Name: "Data_Inicial"; Type: "Date"; FieldType "Calculated"; (Repito o mesmo para um novo campo "Data_Final").

Ao passar os valores a um ClientDataSet, ocorre o erro que o DataSet não esta em modo d inserção ou edição e portanto nem gera o relatório!

já quando crio os campos em um SqlQuery e passo os valores ao mesmo, o relatório é gerado perfeitamente, é executado o rave report mas quando fecha e consequentement retorna-se ao delphi, ocorre um erro no qual diz que a operação não é permitida a um dataset unidirecional!

Aqui está a forma q passo os valores, creio q não tenha nada d errado, enfim... to postando também! *Nesse caso utilizando o sqlquery (SQL_Datas).

Modulo.SQL_Datas.Close;

Modulo.SQL_Datas.Open;

Modulo.SQL_Datas.FieldByName('Data_Inicial').AsDateTime := StrToDate(mskDataInicial.Text);

Modulo.SQL_Datas.FieldByName('Data_Final').AsDateTime := StrToDate(mskDataFinal.Text);

Desd já grato pela atenção d todos!

Abr[]

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Alisson, campos calculados só podem ser manipulados no evento OnCalcFields do dataset aonde você os declarou.

Supondo que você está querendo acrescentar os dois campos ao seu dataset, então você teria que escrever o evento OnCalcFields mais ou menos assim:

procedure TModulo.SQL_DatasCalcFields(DataSet: TDataSet);
begin
  DataSet.FieldByName('Data_Inicial').AsDateTime :=  <aqui a data inicial>;
  DataSet.FieldByName('Data_Final').AsDateTime := <aqui a data final>;
end;

Link para o comentário
Compartilhar em outros sites

  • 0

pow... vlw pela dik, mas parec q o problema não era esse!

msmo alterandu para o evento oncalcfields continua informandu

que a operação não é permitida a um dataset unidirecional!

enfim... já li mta coisa a respeito d dbexpress q diz ser unidirecional

e tal! mas daew eu pergunto, c eu não tiveh o campo criado no banco

entaum não é possível eu criar outros temporários via delphi só pra

ksos como ec?

o q quero fazer é simplesmente passar 2 datas pra um relatório!

utilizandu os componentes IBX faço isso tranquilo, nunk tiv problemas,

mas com dbexpress tah complikdo!

C alguém tiveh + alguma sugestao, agradeço...

Link para o comentário
Compartilhar em outros sites

  • 0

Alisson, a dica foi em função desta sua observação:

Ao passar os valores a um ClientDataSet, ocorre o erro que o DataSet não esta em modo d inserção ou edição e portanto nem gera o relatório!

Qual o banco de dados que você está utilizando? Cursor em apenas uma direção pode ser limitação do banco.

Mas acho que a solução adequada, poderia ser você criar parâmetros para estes campos no Rave. Depois você os passa pelo Delphi.

Veja como fazer neste link (ref. Ramos da Informática)

Manual do Rave 5 (ref. Nevrona)

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...