Ajuda Pesquisa em SQL
Bom dia,
Estou tendo dificuldades em um consulta SQL. Estou utilizando uma tabela Access e componente ADO. Por exemplo:
No Access a tabela ASCCC009 está assim:
NUMCON____DATLAN______DESCRI______QTDE____VALOR
763________04/05/12_____CARTOES______16______3,20
765________07/05/12_____DIGITALIZ._____20_____6,75
763________12/05/12_____COPIAS________30____16,90
E a tabela ASCCCTAB está assim
NUNCOM________NOMCON
763___________ED TORINO
765___________ED PANORAMA
763____________ED TORINO
Preciso fazer uma pesquisa filtrando pelo campo NUMCON. Por exemplo
ao digitar no edit o número 763, mostre no grid a seguinte consulta:
NUMCON__NOMCON_____DATLAN_____DESCRI___QTDE____VALOR
763_____ED TORINO____04/05/12____CARTOES___16_______3,20
_____________________12/05/12_____COPIAS____30______16,90
SUBTOTAL___________________________________46______20,10
O que fiz até o momento:
SELECT a.NUMCON, b.NOMCON, a.DATLAN, a.VALOR,a.DESCRI, a.QTDE FROM ASCCC009 AS a LEFT JOIN ASCCCTAB AS b ON (a.NUMCON = b.NUMCON) ORDER BY a.NUMCON
E mostra no grid da seguinte forma:
NUMCON____NOMCON_____DATLAN_____DESCRI___QTDE_____VALOR
763_______ED TORINO____04/05/12____CARTOES___16_______3,20
763_______ED TORINO____12/05/12____COPIAS____30_______16,90
Desde já agradeço a atenção de todos.
Estou tendo dificuldades em um consulta SQL. Estou utilizando uma tabela Access e componente ADO. Por exemplo:
No Access a tabela ASCCC009 está assim:
NUMCON____DATLAN______DESCRI______QTDE____VALOR
763________04/05/12_____CARTOES______16______3,20
765________07/05/12_____DIGITALIZ._____20_____6,75
763________12/05/12_____COPIAS________30____16,90
E a tabela ASCCCTAB está assim
NUNCOM________NOMCON
763___________ED TORINO
765___________ED PANORAMA
763____________ED TORINO
Preciso fazer uma pesquisa filtrando pelo campo NUMCON. Por exemplo
ao digitar no edit o número 763, mostre no grid a seguinte consulta:
NUMCON__NOMCON_____DATLAN_____DESCRI___QTDE____VALOR
763_____ED TORINO____04/05/12____CARTOES___16_______3,20
_____________________12/05/12_____COPIAS____30______16,90
SUBTOTAL___________________________________46______20,10
O que fiz até o momento:
SELECT a.NUMCON, b.NOMCON, a.DATLAN, a.VALOR,a.DESCRI, a.QTDE FROM ASCCC009 AS a LEFT JOIN ASCCCTAB AS b ON (a.NUMCON = b.NUMCON) ORDER BY a.NUMCON
E mostra no grid da seguinte forma:
NUMCON____NOMCON_____DATLAN_____DESCRI___QTDE_____VALOR
763_______ED TORINO____04/05/12____CARTOES___16_______3,20
763_______ED TORINO____12/05/12____COPIAS____30_______16,90
Desde já agradeço a atenção de todos.
Natanael Ferreira
Curtidas 0
Respostas
Joao Moreira
22/05/2012
qual a dificuldade ?
GOSTEI 0
Joel Rodrigues
22/05/2012
Bem, a consulta está correta e, eu diria, completa. Agora, vocÊ não vai conseguir omitir nomes repetidos e colocar um subtotal apenas com uma consulta SQL. No Delphi, você precisará de rotinas e formatações para isso. Se você usa o DBGrid nativo, ele não possui essas funcionalidades.
Eu sugiro que você deixe a consulta como está e ponha algum controle abaixo do grid para exibir o somatório. Tal valor pode ser obtido com a função SUM no SQL ou através de uma rotina que leia todos os registros da tabela e calcule a soma.
Eu sugiro que você deixe a consulta como está e ponha algum controle abaixo do grid para exibir o somatório. Tal valor pode ser obtido com a função SUM no SQL ou através de uma rotina que leia todos os registros da tabela e calcule a soma.
GOSTEI 0
Natanael Ferreira
22/05/2012
Bem, a consulta está correta e, eu diria, completa. Agora, vocÊ não vai conseguir omitir nomes repetidos e colocar um subtotal apenas com uma consulta SQL. No Delphi, você precisará de rotinas e formatações para isso. Se você usa o DBGrid nativo, ele não possui essas funcionalidades.
Eu sugiro que você deixe a consulta como está e ponha algum controle abaixo do grid para exibir o somatório. Tal valor pode ser obtido com a função SUM no SQL ou através de uma rotina que leia todos os registros da tabela e calcule a soma.
Eu sugiro que você deixe a consulta como está e ponha algum controle abaixo do grid para exibir o somatório. Tal valor pode ser obtido com a função SUM no SQL ou através de uma rotina que leia todos os registros da tabela e calcule a soma.
Boa tarde Joel,
É isso mesmo que eu precisava: omitir os nomes repetidos e colocar um subtotal para cada condomínio (NUMCON) no próprio DBGrid... Como eu suspeitava isso não é possível... Tinha pensado em utilizar o SUM em algum controle abaixo, como mencionado por você, mas não seria viável pois a consulta que pretendo filtrará um intervalo de condomínios e precisaria de um sub-total para cada condomínio (NUMCON)...
Acho que o jeito é fazer a pesquisa em apenas um condomínio de cada vez e utilizar o SUM num edit ou label abaixo do DBGRID.
GOSTEI 0
Joel Rodrigues
22/05/2012
Se você puder usar componentes de terceiros, eu indico o CXGrid da DevExpress, ela faz esse subtotal de acordo com o agrupamento que você escolher. Mas infelizmente, no DBGrid você não consegue, quer dizer, até onde eu sei, não. Pode ser que exista alguma rotina na internet para te auxiliar, mas eu particularmente nunca vi um uso tão complexo deste componente.
Boa sorte em seus projetos.
Boa sorte em seus projetos.
GOSTEI 0
Natanael Ferreira
22/05/2012
Se você puder usar componentes de terceiros, eu indico o CXGrid da DevExpress, ela faz esse subtotal de acordo com o agrupamento que você escolher. Mas infelizmente, no DBGrid você não consegue, quer dizer, até onde eu sei, não. Pode ser que exista alguma rotina na internet para te auxiliar, mas eu particularmente nunca vi um uso tão complexo deste componente.
Boa sorte em seus projetos.
Boa sorte em seus projetos.
Joel, onde consigo este componente CxGrid da DevExpress ?
GOSTEI 0
Joel Rodrigues
22/05/2012
Rapaz, é uma biblioteca paga, mas sabe como é... de repente você encontra crackeado. Sugiro procurar no blog ProgramadorOnline. Não é só um grid, você verá que são vários componentes, uma suíte muito completa.
Boa sorte.
Boa sorte.
GOSTEI 0