FM
SQL na mão para datagrid
Fechado
Boa tarde pessoal. Estou desenvolvendo um sistema para um salão de cabeleireiros. Me deparei com várias limitações do framework ou do meu conhecimento. Uma delas é o seguinte:
Eu preciso rodar essa instrução SQL :
só que a data_atendimento preciso pegar de um TDate e o profissional de um TEntry, e mostrar o resultado que será apenas uma linha em um DataGrid. Depois de eu conseguir isso vem mais um desafio, fazer um loop que execute esse script uma vez para cada nome de profissional cadastrado e exiba em um Datagrid tambem.... em PHP normal eu consigo fazer.... mas no framework usando o tal do TCriteria, como vou criar os campos em tempo de execuçao e exibi-los ? como usa o framework para resolver problemas assim ? Quando precisamos de uma consulta personalizada de VERDADE ? alguém consegue me ajudar nessa ? No aguardo !!!
Eu preciso rodar essa instrução SQL :
SELECT data_atendimento, profissional ,count(hora) as atendimentos, sum(valor) as total, sum(valor) * 70 / 100 as profissional, sum(valor) * 30 / 100 as comissao_salao FROM horario
WHERE data_atendimento = '2015-09-25' and profissional = 'Romano' and atendido = 'S'
só que a data_atendimento preciso pegar de um TDate e o profissional de um TEntry, e mostrar o resultado que será apenas uma linha em um DataGrid. Depois de eu conseguir isso vem mais um desafio, fazer um loop que execute esse script uma vez para cada nome de profissional cadastrado e exiba em um Datagrid tambem.... em PHP normal eu consigo fazer.... mas no framework usando o tal do TCriteria, como vou criar os campos em tempo de execuçao e exibi-los ? como usa o framework para resolver problemas assim ? Quando precisamos de uma consulta personalizada de VERDADE ? alguém consegue me ajudar nessa ? No aguardo !!!
veja esse exemplo: www.adianti.com.br/doc-framework-Persistence-Setup-SetupTransaction
O exemplo nem passa perto do que eu preciso... infelizmente... é exatamente o que descrevi acima que preciso. Obrigado mesmo assim :)
Flávio
O Framework tem como princípio usar OO e evitar ao máximo consultas SQL espalhadas pelo sistema o que dificulta na hora de dar manutenção.
De uma olhada nesse artigowww.adianti.com.br/forum/pt/view_876?pensando-em-objetos-nao-em-sql-
Sim...eu ja sei disso e ja li esse artigo... Então é IMPOSSÍVEL fazer o que preciso ?
Desculpe minha ignorancia Flavio, o que tem haver o TCriterio com criar elementos ? o que o Eliezer te mostrou é exatamente a mesma coisa que rodar um sql personalizado, acredito que talvez vc esteja querendo um Grid dentro de uma linha do Grid é isso? eu pego um registro faço um loop e coloco embaixo da linha do grid. vou mostrar o exemplo.
www.adianti.com.br/framework_files/tutor/index.php?class=DatagridCol
Bom... é isso aí que o Felipe falou Flávio.
Inclusive não tem a necessidade de rodar essa instrução para cada usuário separado se vc quiser mostrar no datagrid todos de uma vez quebrado por profissional.
Vai depender inclusive se seu software tem nível de acesso, ou seja, se um usuário tem permissão de ver os atendimentos de outros ou somente o dele.
Para vc pegar os dados como filtros de um TEntry ou TDate é necessário criar um formulário pra isso e não em dificuldade nenhuma. O exemplo que te passei mostra exatamente como fazer para rodar sua instrução sql, agora basta você adaptar em seu sistema e mostrar os resultados.
abs.
Então Felipe, acho que vcs nao estao me entendendo. Vamos la. A tabela que é usada para fazer esse fechamento, nao tem os campos atendimentos ,total, comissao_salao e comissao_profissional, que é o que eu preciso exibir. Esses campos eu crio no select por exemplo :
é apenas um exemplo.... o que nao sei é como fazer isso usando o TCriteria , ou a maneira normal de consulta a banco de dados do framework.... entende?
"resolvi" o problema com o seguinte código: (note que o "resolvi" esta entre aspas :) )
criei pelo pdf designer um "modelo"de ficha de fechamento mas não era o que eu queria.
Então é muito mais simples do que imaginamos repare:
toda essa parte acima pode ser substituida por essa (não aconselho melhor trabalhar com view)
Veja se ajuda.
Então Felipe... Até isso eu tinha chegado... o problema para mim é algo que deve ser bem simples.... Exibir isso em um DataGrid. pra começar... :) Desculpe se pareço grosso as vezes... mas é meu jeito de falar, em momento nenhum eu quis ser indelicado com ninguem aqui, sei que todos estao querendo me ajudar... (minha mulher que falou que parecia grosseria a maneira que eu falei.... ) :)
Valeu Felipe... vou tentar fazer assim.... depois posto aqui se deu certo... Obrigadao mesmo !!!!
Felipe, se quiser dar uma olhada como esta ficando acesse
appdegustacao.pe.hu
login : romano
senha : salao
Criticas são muito benvindas e sugestões também...
Flavio Maidl ->
muito bom a ideia do salão,
qual e o valor que ira cobrar...
tenho um cliente que possa interessar no software ..
me add no skype welitonj.jose
obrigado
Flavio vc pode criar um view no banco, criar a model e depois usar esta view nos forms/grids/relatórios, não sei se te ajuda isso.
Opa, obrigado Leandro Coelho. Consegui resolver o problema. Se quiser conhecer o projeto acesse:
appdegustacao.pe.hu
Login : usuario
Senha : salao