Eder Postado Junho 18, 2007 Denunciar Share Postado Junho 18, 2007 Ola..Tem como eu formatar campos na query(paradox) sem adicionar os campos diretamento na query??Tipo campo numerico.Grato :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --felipe -- Postado Junho 18, 2007 Denunciar Share Postado Junho 18, 2007 Ola..Tem como eu formatar campos na query(paradox) sem adicionar os campos diretamento na query??Tipo campo numerico.Grato :Dnão entendi muito bem oqe você falou, mas acho que não da pra fazer isso nãoo maximo que voce consegue formatar é o modo de visualizaçao do campo:de 2 cliques na queryclique no campo desejado- se for data altere no DisplayFormat . ex: (dd/MM/yyyy)- se outro altere no EditMask(: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Junho 18, 2007 Autor Denunciar Share Postado Junho 18, 2007 o maximo que voce consegue formatar é o modo de visualizaçao do campo:de 2 cliques na queryclique no campo desejado- se for data altere no DisplayFormat . ex: (dd/MM/yyyy)- se outro altere no EditMaskR. 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);beginquery1.Fields.add := 'Frete'; //aqui não adiciona da Erroquery1FRETE.DisplayFormat := '0.00'; //formatar ta certo funciona.end;Deve ter uma maneira de adicionar via codigo né? B) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --felipe -- Postado Junho 19, 2007 Denunciar Share Postado Junho 19, 2007 o maximo que voce consegue formatar é o modo de visualizaçao do campo:de 2 cliques na queryclique no campo desejado- se for data altere no DisplayFormat . ex: (dd/MM/yyyy)- se outro altere no EditMaskR. 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);beginquery1.Fields.add := 'Frete'; //aqui não adiciona da Erroquery1FRETE.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 adicionouquery1.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 aiabraç =D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Junho 19, 2007 Autor Denunciar Share Postado Junho 19, 2007 amigão fiz como me dissequery1.Fields.add('Frete');deu erro:[Error] Unit1.pas(35): Incompatible types: 'TField' and 'String'query1.Fields.add('Fretekel').AsCurrency;também deu o mesmo erro :( Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Junho 20, 2007 Denunciar Share Postado Junho 20, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Junho 20, 2007 Autor Denunciar Share Postado Junho 20, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Junho 21, 2007 Denunciar Share Postado Junho 21, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Junho 21, 2007 Autor Denunciar Share Postado Junho 21, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Eder
Ola..
Tem como eu formatar campos na query(paradox) sem adicionar os campos diretamento na query??
Tipo campo numerico.
Grato
:D
Link para o comentário
Compartilhar em outros sites
8 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.