Não Consigo fazer Select Count via Programação!!!
Ola Galera...
Preciso fazer um Select Count via Programação usando alguns parâmetros numa ado Query com Banco Access.
Não dá certo de jeito nenhum.
o Select Count só funciona se eu fizer direto na query lá no datamodule
e não via programação. Só que eu precisava que fosse pq eu uso um if no meio da consulta pra definir os parâmetros
Alguém poderia ajudar ?
Preciso fazer um Select Count via Programação usando alguns parâmetros numa ado Query com Banco Access.
Não dá certo de jeito nenhum.
o Select Count só funciona se eu fizer direto na query lá no datamodule
e não via programação. Só que eu precisava que fosse pq eu uso um if no meio da consulta pra definir os parâmetros
Alguém poderia ajudar ?
Info.wtomfs
Curtidas 0
Respostas
Lucas Silva
30/01/2004
coloca o código da sua consulta ai....
vai ficar bem mais fácil.
vai ficar bem mais fácil.
GOSTEI 0
Info.wtomfs
30/01/2004
esta é a consulta com select count que estou fazendo.
A consulta tá certa, mas só funciona se eu colocar direto no componente
só que eu preciso destes ifs para definir os parâmetros.
With Dm_Questionario.Qry_ContaRespostas do
Begin
Close;
With Sql do
Begin
Clear;
Add(´SELECT Count(a.Cd_Resposta) as Nr_Respostas´);
Add(´FROM Respostas a,´);
Add(´ Cad_Gabarito b,´);
Add(´ Cad_Questionario c,´);
Add(´ Cad_Pergunta d,´);
Add(´ Cad_Resposta e,´);
Add(´ Loja f,´);
Add(´ Produto_Cor_tamanho g,´);
Add(´ Produto h´);
Add(´WHERE f.CdLoja = a.Cd_Loja and´);
Add(´ g.CdProduto = a.Cd_Produto and´);
Add(´ h.CdProduto = g.CdProduto and´);
// PARÂMETROS DO RELATÓRIO
if RadioButton_Grupo.Checked = true then
Add(´ f.CdGrupoLoja = ´+ #39 + Dm_Questionario.Qry_LeGrupoCdGrupo.Value + 39 + ´and´);
if RadioButton_Linha.Checked = True then
Add(´ h.Cdlinha = ´+ Dm_Questionario.Qry_LeLinhaProdutoCdLinha.Value + ´and´);
if RadioButton_Praca.Checked = True then
Add(´ f.CdPraca = ´+ Dm_Questionario.Qry_LePracaCdPraca.AsString + ´and´);
Add(´ a.CD_PERGUNTA = d.CD_PERGUNTA and´);
Add(´ a.CD_PERGUNTA = ´+ Dm_Questionario.Qry_PerguntaCD_PERGUNTA.AsString + ´and´);
Add(´ c.CD_QUESTIONARIO = a.CD_QUESTIONARIO and´);
Add(´ a.CD_QUESTIONARIO = b.CD_QUESTIONARIO and´);
Add(´ e.CD_RESPOSTA = a.CD_RESPOSTA and´);
Add(´ a.CD_RESPOSTA = b.CD_RESPOSTA and´);
Add(´ a.CD_GABARITO = ´+ Dm_Questionario.Qry_SelecionaGabaritoCd_Gabarito.AsString);
End;
A consulta tá certa, mas só funciona se eu colocar direto no componente
só que eu preciso destes ifs para definir os parâmetros.
With Dm_Questionario.Qry_ContaRespostas do
Begin
Close;
With Sql do
Begin
Clear;
Add(´SELECT Count(a.Cd_Resposta) as Nr_Respostas´);
Add(´FROM Respostas a,´);
Add(´ Cad_Gabarito b,´);
Add(´ Cad_Questionario c,´);
Add(´ Cad_Pergunta d,´);
Add(´ Cad_Resposta e,´);
Add(´ Loja f,´);
Add(´ Produto_Cor_tamanho g,´);
Add(´ Produto h´);
Add(´WHERE f.CdLoja = a.Cd_Loja and´);
Add(´ g.CdProduto = a.Cd_Produto and´);
Add(´ h.CdProduto = g.CdProduto and´);
// PARÂMETROS DO RELATÓRIO
if RadioButton_Grupo.Checked = true then
Add(´ f.CdGrupoLoja = ´+ #39 + Dm_Questionario.Qry_LeGrupoCdGrupo.Value + 39 + ´and´);
if RadioButton_Linha.Checked = True then
Add(´ h.Cdlinha = ´+ Dm_Questionario.Qry_LeLinhaProdutoCdLinha.Value + ´and´);
if RadioButton_Praca.Checked = True then
Add(´ f.CdPraca = ´+ Dm_Questionario.Qry_LePracaCdPraca.AsString + ´and´);
Add(´ a.CD_PERGUNTA = d.CD_PERGUNTA and´);
Add(´ a.CD_PERGUNTA = ´+ Dm_Questionario.Qry_PerguntaCD_PERGUNTA.AsString + ´and´);
Add(´ c.CD_QUESTIONARIO = a.CD_QUESTIONARIO and´);
Add(´ a.CD_QUESTIONARIO = b.CD_QUESTIONARIO and´);
Add(´ e.CD_RESPOSTA = a.CD_RESPOSTA and´);
Add(´ a.CD_RESPOSTA = b.CD_RESPOSTA and´);
Add(´ a.CD_GABARITO = ´+ Dm_Questionario.Qry_SelecionaGabaritoCd_Gabarito.AsString);
End;
GOSTEI 0
Jorgeboo
30/01/2004
Tenta passar parâmetros de um jeito diferente.
Ex. O SQL da sua Query pode fica mais ou menos assim.
´SELECT COUNT (A.CD_RESPOSTA) FROM RESPOSTAS A, CAD_GABARITO B , CAD_QUESTIONARIO C, ...
WHERE A.CD_PERGUNTA = :A AND A.CD_GABARITO = :B´ ...
Depois você usa assim.
Dm_Questionario.Qry_ContaRespostas.Close;
Dm_Questionario.Qry_ContaRespostas.ParambyName(´A´).asString := Dm_Questionario.Qry_PerguntaCD_PERGUNTA.AsString;
Dm_Questionario.Qry_ContaRespostas.ParambyName(´B´).asString := Dm_Questionario.Qry_SelecionaGabaritoCd_Gabarito.AsString;
Dm_Questionario.Qry_ContaRespostas.Open;
O WHERE e o FROM não estão certos, coloca todas aquelas condições e tabelas que você descreveu.
É mais ou menos isso, espero que possa te ajudar
Ex. O SQL da sua Query pode fica mais ou menos assim.
´SELECT COUNT (A.CD_RESPOSTA) FROM RESPOSTAS A, CAD_GABARITO B , CAD_QUESTIONARIO C, ...
WHERE A.CD_PERGUNTA = :A AND A.CD_GABARITO = :B´ ...
Depois você usa assim.
Dm_Questionario.Qry_ContaRespostas.Close;
Dm_Questionario.Qry_ContaRespostas.ParambyName(´A´).asString := Dm_Questionario.Qry_PerguntaCD_PERGUNTA.AsString;
Dm_Questionario.Qry_ContaRespostas.ParambyName(´B´).asString := Dm_Questionario.Qry_SelecionaGabaritoCd_Gabarito.AsString;
Dm_Questionario.Qry_ContaRespostas.Open;
O WHERE e o FROM não estão certos, coloca todas aquelas condições e tabelas que você descreveu.
É mais ou menos isso, espero que possa te ajudar
GOSTEI 0
Info.wtomfs
30/01/2004
È que o meu problema é que eu vou usar um parâmetro de cada vez.
Na tela antes da consulta o usuário vai selecionar as opções entre :
CdGrupoLoja => Código do Grupo da Loja ou
CdLinha => Código da linha do produto ou
CdPraca => Código da Praça que ela faz parte (SP,RJ)
Então por isso que eu não fiz na query no DataMódule
Como vou fazer para não usar um ou outro por exemplo
Na parte do Parâmetros do Reletório eu escolho entre incluir na cláusula Where ou CdGrupoLoja ou CdLinha ou CdPraca não pode ser os três
Via Programação eu teria que deletar as linhas que não serção usadas
Agora eu não entendo pq o select count não funciona via programação
WHERE f.CdLoja = a.Cd_Loja and
g.CdProduto = a.Cd_Produto and
h.CdProduto = g.CdProduto and
// PARÂMETROS DO RELATÓRIO
f.CdGrupoLoja = :Cd_Grupo and
h.Cdlinha = :Cd_Linha and
f.CdPraca = :Cd_Praca and
a.CD_PERGUNTA = d.CD_PERGUNTA and
a.CD_PERGUNTA and
c.CD_QUESTIONARIO = a.CD_QUESTIONARIO and
a.CD_QUESTIONARIO = b.CD_QUESTIONARIO and
e.CD_RESPOSTA = a.CD_RESPOSTA and´);
a.CD_RESPOSTA = b.CD_RESPOSTA and´);
a.CD_GABARITO = :Cd_Gabarito
Na tela antes da consulta o usuário vai selecionar as opções entre :
CdGrupoLoja => Código do Grupo da Loja ou
CdLinha => Código da linha do produto ou
CdPraca => Código da Praça que ela faz parte (SP,RJ)
Então por isso que eu não fiz na query no DataMódule
Como vou fazer para não usar um ou outro por exemplo
Na parte do Parâmetros do Reletório eu escolho entre incluir na cláusula Where ou CdGrupoLoja ou CdLinha ou CdPraca não pode ser os três
Via Programação eu teria que deletar as linhas que não serção usadas
Agora eu não entendo pq o select count não funciona via programação
WHERE f.CdLoja = a.Cd_Loja and
g.CdProduto = a.Cd_Produto and
h.CdProduto = g.CdProduto and
// PARÂMETROS DO RELATÓRIO
f.CdGrupoLoja = :Cd_Grupo and
h.Cdlinha = :Cd_Linha and
f.CdPraca = :Cd_Praca and
a.CD_PERGUNTA = d.CD_PERGUNTA and
a.CD_PERGUNTA and
c.CD_QUESTIONARIO = a.CD_QUESTIONARIO and
a.CD_QUESTIONARIO = b.CD_QUESTIONARIO and
e.CD_RESPOSTA = a.CD_RESPOSTA and´);
a.CD_RESPOSTA = b.CD_RESPOSTA and´);
a.CD_GABARITO = :Cd_Gabarito
GOSTEI 0