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

[resolvido] Formatar Campo Da Query - Paradox


Eder

Pergunta

8 respostass a esta questão

Posts Recomendados

  • 0
Guest --felipe --
Ola..

Tem como eu formatar campos na query(paradox) sem adicionar os campos diretamento na query??

Tipo campo numerico.

Grato

:D

não entendi muito bem oqe você falou, mas acho que não da pra fazer isso não

o maximo que voce consegue formatar é o modo de visualizaçao do campo:

de 2 cliques na query

clique no campo desejado

- se for data altere no DisplayFormat . ex: (dd/MM/yyyy)

- se outro altere no EditMask

(:

Link para o comentário
Compartilhar em outros sites

  • 0
o maximo que voce consegue formatar é o modo de visualizaçao do campo:

de 2 cliques na query

clique no campo desejado

- se for data altere no DisplayFormat . ex: (dd/MM/yyyy)

- se outro altere no EditMask

R. Ola.?? bza??? Sim Este tipo que você me passou eu sei....mas queria adicionar os campos no braço via codigo e depois formatar..

pra formatar eu já consegui....mas eu queria antes de formatar adicionar via codigo.

fiz assim mas não ta dando:

procedure TForm1.Button1Click(Sender: TObject);

begin

query1.Fields.add := 'Frete'; //aqui não adiciona da Erro

query1FRETE.DisplayFormat := '0.00'; //formatar ta certo funciona.

end;

Deve ter uma maneira de adicionar via codigo né?

B)

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
o maximo que voce consegue formatar é o modo de visualizaçao do campo:

de 2 cliques na query

clique no campo desejado

- se for data altere no DisplayFormat . ex: (dd/MM/yyyy)

- se outro altere no EditMask

R. Ola.?? bza??? Sim Este tipo que você me passou eu sei....mas queria adicionar os campos no braço via codigo e depois formatar..

pra formatar eu já consegui....mas eu queria antes de formatar adicionar via codigo.

fiz assim mas não ta dando:

procedure TForm1.Button1Click(Sender: TObject);

begin

query1.Fields.add := 'Frete'; //aqui não adiciona da Erro

query1FRETE.DisplayFormat := '0.00'; //formatar ta certo funciona.

end;

Deve ter uma maneira de adicionar via codigo né?

B)

ba aqui tudo sussa e ai brother???

da erro porque ta errado o modo como tu adicionou

query1.Fields.add := 'Frete'; //em vez de usar assim tente assim
query1.Fields.add('Frete') ou query1.Fields.add(Frete) //algum dos 2..

qualquer coisa posta ai

abraç =D

Link para o comentário
Compartilhar em outros sites

  • 0

pessoal, Fields representa a lista de campos (TField) do dataset e, sendo assim, espera que se adicione um TField (ou uma classe descendente deste).

Eder, acho que você vai trilhar "o caminho das pedras" com esta abordagem.

Veja bem, não dá para simplesmente "adicionar" o campo pelo nome. Voce tem que adicionar o Field com o mínimo de informação: Tipo, Nome, Dataset e, em alguns casos, Tamanho.

Um exemplo para você perceber o quanto a coisa pode se complicar. Em um TQuery contendo o select de n campos de uma tabela, eu não adiciono nenhum em design-time (como você). Então, para que ao abrir a query eu visualize os campos que desejo visualizar no DBGrid, uso o seguinte código:

procedure TForm1.btnIncluirCamposClick(Sender: TObject);
var
  Field :TField;
begin
  Query1.Close;
  Query1.Fields.Clear;
  Field := TIntegerField.Create(Query1);
  Field.DataSet := Query1;
  Field.FieldName := 'CdPasta';
  Field.Name := 'Query1CdPasta';

  Field := TIntegerField.Create(Query1);
  Field.DataSet := Query1;
  Field.FieldName := 'CdAssunto';
  Field.Name := 'Query1CdAssunto';
  Field.DisplayFormat := '0000';

  Field := TStringField.Create(Query1);
  Field.DataSet := Query1;
  Field.FieldName := 'DsPasta';
  Field.Size := 5;  // ***
  Field.Name := 'Query1DsPasta';

  Query1.Open;
end;

Este seria um dos métodos. Não utilizei Query1.Fields.Add(Field) porque o fato de atribuir Query1 à propriedade DataSet do Field resulta na mesma ação (é uma questão de opção).

Observou com pode se tornar complicado adicionar os campos? você vai ter que saber que classe de field irá instanciar (veja no help do TField - há 31 tipos possíveis no D7).

Não bastasse isto, se você fala de String, então tem que definir o tamanho do campo (como definido no banco).

Acredito que ainda seja mais simples adicionar os campos em design-time e formatá-los ou , então, abrir o dataset primeiro e acessar os fields disponíveis (criados em run-time pelo componente) e modificar as propriedades desejadas.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Ok...Micheus...Entendi...

Carinha!!....e pra formatar será que da no codigo ou cai na mesma situação??

ou seja......não quero formatar no design-time.

tentei assim:

query1FRETE.DisplayFormat := '0.00';

ATÉ FUNCIONA, mas se estiver adicionado via design-time, senão ele nem deixa compilar.

podes dar uma dica?

muito Grato

Link para o comentário
Compartilhar em outros sites

  • 0
Carinha!!....e pra formatar será que da no codigo ou cai na mesma situação??

ou seja......não quero formatar no design-time.

tentei assim:

query1FRETE.DisplayFormat := '0.00';

ATÉ FUNCIONA, mas se estiver adicionado via design-time, senão ele nem deixa compilar.

podes dar uma dica?

Eder, eu até pensei, mas esqueci de dizer que criando o campo em run-time não tem como você acessá-lo pelo nome. O único meio será através de FieldByName ou outros existentes, mas nunca pelo nome do componente da forma como você exemplificou.

Tenha em mente que ao adicionar o campo em design-time, assim como ocorre com qualquer variável declarada, o seu executável terá uma referência a uma posição fixa de memória que foi alocada pelo linkador conforme instrução (seu código). No caso da criação de campos em run-time, esse endereço não era conhecido pelo linkador até este momento, então o seu código não tem uma referência ao mesmo. É certo, apenas, que você alocou uma determinada área de memória (no caso, para uma classe tipo TField) e adicionou esta referência na lista de fields do dataset. Assim, só percorrendo esta lista você irá encontrá-lo.

Não sei se me expressei bem, mas é mais ou menos isso que ocorre.

Quanto a formatação em run-time, se a implementação utilizar a idéia que propus anteriormente, não há qualquer problema. Observe esta parte do código que postei antes - estou formatando em run-time (via código), não?!

Field := TIntegerField.Create(Query1);
  Field.DataSet := Query1;
  Field.FieldName := 'CdAssunto';
  Field.Name := 'Query1CdAssunto';
  Field.DisplayFormat := '0000';  // <== ****

Na verdade, neste código há uma "gaffe". :rolleyes:

A propriedade DisplayFormat não existe na classe ancestral - TField, logo não irá compilar sem que seja feito um type-cast, ou a menos que ao invés de utilizar um variável do tipo TField eu a tivesse declarado como sendo TIntegerField.

Mas, ainda via código, você pode utilizar os métodos de acesso aos fields para setar a propriedade DisplayFormat, por ex.:

TIntegerField(Query1.Fields[0]).DisplayFormat := '0.00';

TIntegerField(Query1.FieldByName(CdPasta)).DisplayFormat := '0.00';

Observe apenas, que nem todos os tipos de fields possuem esta propriedade. Apenas o que possuem são:

No D3: TDateTimeField e TNumericField;

No D7: TAggregateField, TDateTimeField, TNumericField e TSQLTimeStampField;

Então, este é mais um ponto a ser levado em conta, pois pode gerar erro de execução caso você faça um type-cast errado.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Carinha...ótima explicação.

:D

TIntegerField(Query1.Fields[0]).DisplayFormat := '0.00';

TIntegerField(Query1.FieldByName(CdPasta)).DisplayFormat := '0.00';

R. testei e funcionou.....haaa..tinha um errinho aqui ('cdpasta') faltou as aspas simples..acho que é esse o nome né!!!

TIntegerField(Query1.FieldByName('FRETE')).DisplayFormat := '0.00';
também testei a parte do DisplayLabel...também funcionou:

TIntegerField(Query1.FieldByName('FRETE')).DisplayLabel := 'FRETE XXXX';

Valeu ....muito Grato pela ajuda mais uma vez...t+

:D

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,3k
×
×
  • Criar Novo...