erickramossilva Postado Maio 11, 2011 Denunciar Share Postado Maio 11, 2011 ola amigos estou com um probleminha na aplicação que eu estou montando...o problema é o seguintena minha tabela eu fiz uma consulta com referencias cruzadas para gerar um certo resultadoagora eu queria calcular a porcentagem de cada linha desse resultado. tem jeito de fazer isso??o codigo que estou usando para fazer o cruzamento das informações é adoquery1.Close; adoquery1.SQL.Add('TRANSFORM Count(Tabela1.Código) AS ContarDeCódigo '+' SELECT Tabela1.[01], Count(Tabela1.Código) AS [Total de Código] '+' FROM Tabela1 '+' GROUP BY Tabela1.[01] '+' PIVOT Tabela1.Profissão;'); adoquery1.Active; adoquery1.open;eo que eu queria é ter o valor de total de codigo gerado em porcentagem dentro do DBGRIDestou usando o Access coomo banco de dados e um adoquery para fazer o cruzamento dos camposNão sou muito experiente em Delphi, na realidade, essa é a minha primeira aplicação em Delphinão estou acostumado com normas tecnicas.agradeço desde já :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 11, 2011 Denunciar Share Postado Maio 11, 2011 eu queria calcular a porcentagem de cada linha desse resultadovoce tem que ser mais explicito ... sempre dê um exemplo do que voce quer para faciliar a respostaabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 erickramossilva Postado Maio 11, 2011 Autor Denunciar Share Postado Maio 11, 2011 eu queria calcular a porcentagem de cada linha desse resultadovoce tem que ser mais explicito ... sempre dê um exemplo do que voce quer para faciliar a respostaabraçoolá jonas o meu problema é o seguinte, eu estou montando um programa para realizar estatisticas, eu trabalho com uma tabela com uma media de 150 perguntas e essas perguntas são cruzadas com respostas de acordo com Escolaridade, profissão, renda e sexo.esse cruzamento me gera um resultado de quantas pessoas responderam determinada pergunta.EX:melhor loja total de codigos masculino femininoPernambucanas 50 20 30 lojas cem 10 5 5 casas bahia 3 3 esse é o resultado que eu adiquiro com a minha consultaoque eu quero é transformar o campo total de códigos no meu DBGrid em porcentagemsó que eu não estou conseguindo implementar um campo calculado no DB grid para realizar essa operaçãocomo já disse, eu ainda sou um pouco leigo nesse assuntoespero ter sido mais claro obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 11, 2011 Denunciar Share Postado Maio 11, 2011 vamos ver:melhor loja .........| total de codigos.....| masculino | femininoPernambucanas ..|.........50................|....20.........|......30.....lojas cem ...........|.........10................|.....5.........|.......5......casas bahia.........|.........6..................|.....3.........|.......3......o que eu quero é transformar o campo total de códigos no meu DBGrid em porcentagemvoce vai precisar criar um novo campo calculadomelhor loja .........| total de codigos| masculino | feminino | PercentualPernambucanas ..|.........50......|....20.........|......30.....|.....75,75 %lojas cem ...........|.........10......|.....5.........|.......5......|.....15,16 %casas bahia.........|.........6........|.....3.........|.......3......|.....9,09 %primeiro voce deve entender a lógica de usar campos calculadosveja os linkshttp://www.facape.br/jocelio/es/material_e...poCalculado.pdfhttp://www.devmedia.com.br/post-503-Criand...entdataset.htmlhttp://www.ramosdainformatica.com.br/art_r...s01.php?CDA=612http://www.planetadelphi.com.br/dica/6729/...campo-calculadohttp://www.lula.pro.br/artigo.asp?codigo=209&autor=Naksabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 erickramossilva Postado Maio 11, 2011 Autor Denunciar Share Postado Maio 11, 2011 vamos ver:melhor loja .........| total de codigos.....| masculino | femininoPernambucanas ..|.........50................|....20.........|......30.....lojas cem ...........|.........10................|.....5.........|.......5......casas bahia.........|.........6..................|.....3.........|.......3......o que eu quero é transformar o campo total de códigos no meu DBGrid em porcentagemvoce vai precisar criar um novo campo calculadomelhor loja .........| total de codigos| masculino | feminino | PercentualPernambucanas ..|.........50......|....20.........|......30.....|.....75,75 %lojas cem ...........|.........10......|.....5.........|.......5......|.....15,16 %casas bahia.........|.........6........|.....3.........|.......3......|.....9,09 %primeiro voce deve entender a lógica de usar campos calculadosveja os linkshttp://www.facape.br/jocelio/es/material_e...poCalculado.pdfhttp://www.devmedia.com.br/post-503-Criand...entdataset.htmlhttp://www.ramosdainformatica.com.br/art_r...s01.php?CDA=612http://www.planetadelphi.com.br/dica/6729/...campo-calculadohttp://www.lula.pro.br/artigo.asp?codigo=209&autor=Naksabraçoola Jhonas muito obrigado pela atençãoeu li os artigos e eu li que precisa utilizar um Data set para fazer esse campo calculado, eu estou utilizando o ADO Query para fazer a conexão com a minha tabela no Access(só existe uma tabela)eu tentei utilizar o Data Set provider, ligando-o na minha ADOQuery mas quando eu ligo o DSprovider no Data Set ele não encontra os campos da minha tabela...teria um jeito de criar esse campo calculado utilizando o ADOQuery ?e to meio perdido em como fazer o calculo da porcentagem do campo total de codigoque variaveis usar?sabendo que podem ter 10 respostas, como fazer o Delphi visualizar isso?sabendo que a porcentagem é igual a uma linha do campo*1/ pelo total geralto perdido em como fazer isso...são muitas coisas eu sei...mas se eu fizer isso eu concluo a minha aplicaçãoobrigado pela atenção mais uma vez Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 12, 2011 Denunciar Share Postado Maio 12, 2011 eu tentei utilizar o Data Set provider, ligando-o na minha ADOQuery mas quando eu ligo o DSprovider no Data Set ele não encontra os campos da minha tabela...ADOQuery + DataSetProvider + ClientDataSet + DataSourcedepois de fazer a ligação entre os componentes, 2 cliques no ClientDataSet para adicionar os campos da sua tabelaabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 erickramossilva Postado Maio 12, 2011 Autor Denunciar Share Postado Maio 12, 2011 eu tentei utilizar o Data Set provider, ligando-o na minha ADOQuery mas quando eu ligo o DSprovider no Data Set ele não encontra os campos da minha tabela...ADOQuery + DataSetProvider + ClientDataSet + DataSourcedepois de fazer a ligação entre os componentes, 2 cliques no ClientDataSet para adicionar os campos da sua tabelaabraçovlw Jhonas...consegui fazer a ligação aqui e já criei o campo calculado :lol: mas ainda to em duvida quanto a linha de codigo da porcentagem, você poderia me mostrar dentro da minha aplicação não to sabendo implementar o codigo...(lembrando que eu só quero o total de código, os outros campos vão sumir no meu relatório)obrigado pela atenção grande abraço... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 12, 2011 Denunciar Share Postado Maio 12, 2011 melhor loja .........| total de codigos| masculino | feminino | PercentualPernambucanas ..|.........50......|....20.........|......30.....|.....75,75 %lojas cem ...........|.........10......|.....5.........|.......5......|.....15,16 %casas bahia.........|.........6........|.....3.........|.......3......|.....9,09 %para obter o percentual voce primeiro precisa somar todos os campos do total de codigos 50 + 10 + 6 = 66depois faz-se a regra de 3 para obter os percentuais em cada registro(50 * 100) / 66 = 75,75 %(10 * 100) / 66 = 15,16 %( 6 * 100) / 66 = 9,09 %agora voce deve implementar essa lógica no campo calculado ... leia novamente os links e veja se consegue fazerabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 erickramossilva Postado Maio 12, 2011 Autor Denunciar Share Postado Maio 12, 2011 (editado) para obter o percentual voce primeiro precisa somar todos os campos do total de codigos 50 + 10 + 6 = 66depois faz-se a regra de 3 para obter os percentuais em cada registro(50 * 100) / 66 = 75,75 %(10 * 100) / 66 = 15,16 %( 6 * 100) / 66 = 9,09 %ola denovo...olha só...eu li e reli os artigos que você me mandou e consugui criar o campo calculado e fazer ele aparecer no dbgrid e o único problema que eu to tendo agora é como declarar o campo total de codigo na minha conta...ele não existe na minha tabela...ele faz parte da consulta da tabela. eu estava declarando assimvar total, r:realbegintotal:=strtofloat('total de codigo+ total de codigo')r:=strtofloat('total de codigo')*1/totalcdspercentual.value:=r;porem dá um erro no Delphi assimclientdataservice1.field 'codigo' não pode ser encontrado como eu poderia declarar esse campo ?abraçoobrigado Editado Maio 12, 2011 por erickramossilva Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 12, 2011 Denunciar Share Postado Maio 12, 2011 Um exemploprocedure TForm1.BitBtn1Click(Sender: TObject); VAR S : string; i : integer; tot, perc : real; begin Query1.Active := false; ClientDataSet1.Active := false; Query1.Active := true; ClientDataSet1.Active := true; tot := 0; for i := 1 to ClientDataSet1.RecordCount -1 do tot := tot + ClientDataSet1NUM.Value; ClientDataSet1.First; for i := 1 to ClientDataSet1.RecordCount -1 do begin perc := (ClientDataSet1NUM.Value * 100)/tot; ClientDataSet1.Edit; ClientDataSet1PERC.Value := perc; // campo fkInternalCalc //OBS: UM CAMPO CALCULADO NÃO PODERÁ SER SALVO //ClientDataSet1.Post; //ClientDataSet1.ApplyUpdates(-1); ClientDataSet1.Next; end; end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 erickramossilva Postado Maio 13, 2011 Autor Denunciar Share Postado Maio 13, 2011 Um exemploprocedure TForm1.BitBtn1Click(Sender: TObject); VAR S : string; i : integer; tot, perc : real; begin Query1.Active := false; ClientDataSet1.Active := false; Query1.Active := true; ClientDataSet1.Active := true; tot := 0; for i := 1 to ClientDataSet1.RecordCount -1 do tot := tot + ClientDataSet1NUM.Value; ClientDataSet1.First; for i := 1 to ClientDataSet1.RecordCount -1 do begin perc := (ClientDataSet1NUM.Value * 100)/tot; ClientDataSet1.Edit; ClientDataSet1PERC.Value := perc; // campo fkInternalCalc //OBS: UM CAMPO CALCULADO NÃO PODERÁ SER SALVO //ClientDataSet1.Post; //ClientDataSet1.ApplyUpdates(-1); ClientDataSet1.Next; end; end;abraçoolá amigo... olha só, eu não pude testar o seu codigo ainda porque ta dando muito erro...se você quiser dar uma olhadinha na minha aplicação pra ter uma noção doque eu estou fazendo eu te envio por email...to precisando muito concluir logo essa aplicação...Meu patrão tá me pressionando muitoo :( aguardo resposta...obrigadoabraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 13, 2011 Denunciar Share Postado Maio 13, 2011 Não sou muito experiente em Delphi, na realidade, essa é a minha primeira aplicação em Delphito precisando muito concluir logo essa aplicação...Meu patrão tá me pressionando muitooisso não tá parecendo verdade ... rs que voce não é muito experiente em delphi está claro,mas seu patrão estar pressionando ?? não será o seu professor ?? rs bem de qualquer modo, o exemplo que te passei é para voce tentar modificar o seu código, para obter esse resultadose você quiser dar uma olhadinha na minha aplicação pra ter uma noção doque eu estou fazendo eu te envio por email...eu até poderia olhar o seu código , mas não agora .... pois estou fazendo um serviço para um cliente no momento ..ok ? por enquanto sugiro a voce procurar no google pela palavra "campo calculado delphi"abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 erickramossilva Postado Maio 13, 2011 Autor Denunciar Share Postado Maio 13, 2011 (editado) isso não tá parecendo verdade ... rs que voce não é muito experiente em delphi está claro,mas seu patrão estar pressionando ?? não será o seu professor ?? rsnão é nenhum professor.. eu fiz um curso tecnico em informática em 2005 que foi quando eu aprendi a programar em Delphi, e como o curso era de 18 meses total, a gente chegou a programarem Delphi mesmo no ultimo semestre(1 semestre-logica de programação- 2 semestre- PASCAL - 3 semestre Delphi) a gente não viu muita coisa, o tempo passou e eu não procurei me aperfeiçoar em Delphi, agora eu comecei a trabalhar...e a empresa que eu trabalho é uma empresa de Opinião Publica... (www.dataprevia.com.br-talvez o site esteja em manutenção)e eu to montando um software pra automatizar as coisas por aqui... o que antes teria que fazer no access e depois passar pro Excel e gerar os relatorios, poderia ser mais fácil com esse software... porém oque eu achei que seria uma tarefa fácil, ta se perdendo em meio de um bilhão de dúvidas...me desculpa se eu to sendo insistente, é que foi a única solução que eu encontrei pra isso...vou continuar pesquisando e estudando...já entendi a lógica que voce me passou, to tentando tratar os erros do programa....vlw cara...obrigado por tudo...:)abraçoss Editado Maio 13, 2011 por erickramossilva Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 13, 2011 Denunciar Share Postado Maio 13, 2011 OK ... então como voce está trabalhando , sabe que o prazo dado ao cliente deve ser cumprido a risca ... não é ?desculpe não poder te dar a atenção necessaria, mas tenho que cumprir o prazo do trabalhomas veja essa apostila .... pagina 42, acho que vai te ajudarhttp://pt.scribd.com/doc/20180634/29/Como-...mpos-calculadosabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 erickramossilva Postado Maio 13, 2011 Autor Denunciar Share Postado Maio 13, 2011 desculpe não poder te dar a atenção necessaria, mas tenho que cumprir o prazo do trabalhomas veja essa apostila .... pagina 42, acho que vai te ajudarhttp://pt.scribd.com/doc/20180634/29/Como-...mpos-calculadosabraçovlw cara...e como eu sei como é um prazo...o meu ta ficando apertado já..mas vo dar uma pesquisada...uma analisada melhor nesse programa...vlw pela ajuda... :rolleyes: abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 erickramossilva Postado Maio 16, 2011 Autor Denunciar Share Postado Maio 16, 2011 (editado) desculpe não poder te dar a atenção necessaria, mas tenho que cumprir o prazo do trabalhomas veja essa apostila .... pagina 42, acho que vai te ajudarhttp://pt.scribd.com/doc/20180634/29/Como-...mpos-calculadosabraçoola novamente... olha só eu to com um probleminha...como eu havia dito... o meu client data set não encontra os campos da minha tabela... e mesmo se eu clicar direto no adoquery e selecionar a opção "add all fields" ele me retorna um erro porque não tenho nenhum codigo na propriedade sql...mas enfim...se eu digitar algo nesse campo vai nterferir na minha consulta inteira que eu digitei no botão pesquisar do form...Ocodigo digitado no botão é esse... if edtconsult.text='01' then begin if radiobutton1.Checked then begin adoquery1.Close; adoquery1.SQL.Add('TRANSFORM Count(Tabela1.Código) AS ContarDeCódigo '+' SELECT Tabela1.[01], Count(Tabela1.Código) AS [Total de Código] '+' FROM Tabela1 '+' GROUP BY Tabela1.[01] '+' PIVOT Tabela1.Profissão;'); adoquery1.Active; adoquery1.open;já fiz o teste... eu digito algo na propriedade SQL do ADOQuery e ele não faz as consultas e me retorna um erro assim...." campo código não encontrado"só pra complementar a informação... essa Adoquery está conectada a um ADOConection... tentei fazer a conexão direta do ADOQuery com a minha tabela, mas quando chamo os campos ele me da o mesmo erro...de falta de codigo na SQL;existe uma outra maneira de eu fazer essa conexão ?ou alguma outra forma de fazer essas consultas?agradeço desde já a informação abraços Editado Maio 16, 2011 por erickramossilva Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 16, 2011 Denunciar Share Postado Maio 16, 2011 veja os posts de como usar a instrução selecthttp://scriptbrasil.com.br/forum/index.php...highlite=selectabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
erickramossilva
ola amigos
estou com um probleminha na aplicação que eu estou montando...
o problema é o seguinte
na minha tabela eu fiz uma consulta com referencias cruzadas para gerar um certo resultado
agora eu queria calcular a porcentagem de cada linha desse resultado. tem jeito de fazer isso??
o codigo que estou usando para fazer o cruzamento das informações é
adoquery1.Close;
adoquery1.SQL.Add('TRANSFORM Count(Tabela1.Código) AS ContarDeCódigo '+
' SELECT Tabela1.[01], Count(Tabela1.Código) AS [Total de Código] '+
' FROM Tabela1 '+
' GROUP BY Tabela1.[01] '+
' PIVOT Tabela1.Profissão;');
adoquery1.Active;
adoquery1.open;
eo que eu queria é ter o valor de total de codigo gerado em porcentagem dentro do DBGRID
estou usando o Access coomo banco de dados e um adoquery para fazer o cruzamento dos campos
Não sou muito experiente em Delphi, na realidade, essa é a minha primeira aplicação em Delphi
não estou acostumado com normas tecnicas.
agradeço desde já :rolleyes:
Link para o comentário
Compartilhar em outros sites
16 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.