Fórum Ajuda em uma Consulta Sql #260094
26/11/2004
0
do Tipo Alfanumetico
Ao Longo do Aplicativo este Campo Varia Muito Pouco e se torna muito [b:a6e74a167d]repetitivo[/b:a6e74a167d] nos registros.. eu gostaria de fazer uma consulta que me retorna-sse os [b:a6e74a167d]Valores [/b:a6e74a167d]Deste [b:a6e74a167d]Campo...[/b:a6e74a167d]
Na verdade eu preciso , em um momento do aplicativo , saber quais são os tipos diferentes do Status Contido No Meu Banco
Por Exemplo , suponha que em [b:a6e74a167d]10.000 [/b:a6e74a167d]Registro esse campo so tem os esses Possíveis Valores :
Status:= ´Origem : Fabricação´ .... 1 Valor Status:= ´Origem : Cepem´ .....2 Valor Status:= ´Origem : Shopping´ .....3 Valor Status:= ´Origem:Confecção Des:Cepem´ ...4 Valor Status:= ´Origem:Confecção Des:Shopping´ ... 5 Valor
Se eu voce percorrer os 10.000 Registros Da Tabela Procurando Valores Diferentes Para O Campo Status , Seria Uma Opção.. Mas Esta, [b:a6e74a167d]So em Último ,Caso[/b:a6e74a167d]. Eu pensei em uma [b:a6e74a167d]istrução Sql[/b:a6e74a167d] :lol: :lol: , mas não to sabendo Fazer :cry:
O que importa nesta consulta e o so o valor deste campo, e que ele não seje repetidos :P :P
Beleza...
Marco Salles
Curtir tópico
+ 0Posts
26/11/2004
Gandalf.nho
GROUP BY Status
Gostei + 0
26/11/2004
Marco Salles
Isto Mesmo :P :P :P ... Mas surgiu um outro incoveniente :cry: :cry: . Esta Query , eu uso tb para um outro tipo de consultas...
E nesta consulta eu uso os outros campos da tabela.. Então eu adicionei estes campos no Fields Editor :arrow: Quando Vou fazer a Consulta usando so o campo Status eu recebo uma mensagem de erro assim:
Project PCadastro.exe raised exception class EDabaseError with message ´Query1:field ´Codigo´ not found´.Process stopped. use Step or Run to continue.
A consulta que eu Fiz Foi esta
FormRelatorioEntradasSaidas.Query1.Sql.Add(´Select *From TabMovimentoProdutos´); FormRelatorioEntradasSaidas.Query1.Sql.Add(´GROUP BY Status_Operacao´); FormRelatorioEntradasSaidas.query1.prepare; FormRelatorioEntradasSaidas.Query1.open;
Tambem Fiz Assim e deu a Mesma mensagem :cry: :cry: :cry:
FormRelatorioEntradasSaidas.Query1.Sql.Add(´Select Status_Operacao From TabMovimentoProdutos´); FormRelatorioEntradasSaidas.Query1.Sql.Add(´GROUP BY Status_Operacao´); FormRelatorioEntradasSaidas.query1.prepare; FormRelatorioEntradasSaidas.Query1.open;
e nas duas consultas eu recebo esta mesma mensagem :cry: :cry:
o que fazer para resolver isto :?: :?: :?:
Gostei + 0
26/11/2004
Gandalf.nho
Gostei + 0
26/11/2004
Marco Salles
Mas como eu vou agrupar para todos se so me interresa o Agrupamento Do Campo Status :cry: :cry:
Isto e verdade. Pois Tenho Outra Consultas Que Usam estes Campos
Isto e Fato :?: :?: :?: :?:
Então , voce ta me dizendo que , tenho que colocar neste Formulário mais Um Componente TQuery :?: :?: ...
[b:274ba68ae8]Desse modo eu ja tinha feito antes e dá.[/b:274ba68ae8]
So achei Estranho o Delphi Nã o ter mais recurso neste sentido :cry: :cry:
Então , antes de colocar no formulário um [b:274ba68ae8]outro componenente Query[/b:274ba68ae8], so para fazer esta consulta de agrupamento, queria saber a opinião de voces , se é isto mesmo... :?: :?: :?: :?:
Gostei + 0
26/11/2004
Gandalf.nho
Gostei + 0
26/11/2004
Marco Salles
Ou eu nao to te entendendo, ou voce nao esta me entendendo...
eu quero fazer dois tipos de pesquisa..[size=18:d5bfaaa901]Esta pesquisa não e simultanea[/size:d5bfaaa901]
Eu nao posso usar o mesmo componente para isto.. Um So TQuery :?: :?:
o erro acontece porque , eu criei , a nivel de projeto os meus TFields.
Se Não tive-sse feito isto, acho que Poderia Usar o Mesmo Componente Query Para estas Duas consultas..... naõ sei se voce esta me entendendo,
Mas eu não vejo como pode [b:d5bfaaa901]ser caracteristica do Sql [/b:d5bfaaa901], o Porque de não se poder usar o mesmo Query Para Estas Duas Pesquisas se elas não sao [b:d5bfaaa901]SIMULTANEAS.. [/b:d5bfaaa901]..
Gostei + 0
28/11/2004
Carlosrm
veja se eu entendi sua pergunta:
Vc não precisa instanciar uma segunda query no formulário ou datamodule. Que me ocorre agora, você pode criar uma query temporária OU usar a mesma query que você já tem.
Usando a mesma query, vc pode executar o primeiro select e manipular os dados obtidos. Se esses dados forem necessários por mais tempo, vc pode passá-los para variáveis ou campos de uma tabela.
Em seguida, troque o conteúdo sql dessa mesma query, fazendo agora a segunda consulta. (use o .clear para limpar a sql anterior)
Só não se esqueça de fechar a query, andes de trocar o conteúdo sql.
Resumindo
...
query1.close;
query1.sql.clear;
query1.sql.add(suaprimeirasql);
query1.open;
// manipule os dados retornados, se for o caso.
query1.close;
query1.sql.clear;
query1.sql.add(suasegundasql);
query1.open;
// manipule os dados retornados, se também for o caso.
Note que essas duas queries não são executadas simultaneamente, mas em seguida.
Ainda como outra opção, vc pode ter dois botões, ambos ativando a mesma instância de TQuery, mas com sql diferentes. (A rigor, poderia ser um botão apenas, utilizando parâmetros...).
Há outras possibilidades... espero que isso possa ajudar...
carlosrm
Gostei + 0
28/11/2004
Gandalf.nho
Gostei + 0
29/11/2004
Marco Salles
Não da amigo... Pode ter certeza... O problema e exatamente este:
Eu Tenho que me referir dinamicamente usando o FieldByName. e não em tempo de projeto , usando o nome dos campo...
Isto eu ja tinha notado, mas eu so questionei , porque o delphi , não permite ter este recurso... :cry: :cry: :cry: :cry:
Então , eu nao crio o Campos a nivel de projeto e se eu precisar de acessar um campo eu o faço a nivel de execução (Com a instruçaõ : FieldByName.)
... Ai sim carlosrm, o que voce disse funcionará...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)