Ir para conteúdo
Fórum Script Brasil
  • 0

Mudar Campo De Um Select Em Tempo De Execução


jfranco

Pergunta

Boa tarde,

O problema é o seguinte: estou desenvolvendo uma aplicação em Delphi 7 e Access e um dos formulários precisa exibir o conteúdo de três dbgrids; dois desses dbgrids estão relacionados de forma que, quando o usuário alterar a linha de um deles, o outro deve mudar um dos campos exibidos.

Fiz assim: há para o dbgrid que deve ter sua coluna alterada os seguintes componentes: ADOTable, DataSource e ADOQuery.

O select desse dbgrid é assim:

SELECT TabItemResposta.[1], Count(TabItemResposta.[1]) AS ContaResp, ContaResp/36

FROM TabItemResposta

GROUP BY TabItemResposta.[1]

ORDER BY Count(TabItemResposta.[1]) DESC;

Vejam que o campo tem como nome um número. A tabela TabItemResposta tem campos com nomes de números de 1 a 20. Quando o usuário mudar o registro de outra tabela, quero fazer o seguinte para alterar a coluna do dbgrid:

dbgrdQuestao.Columns[0].FieldName := IntToStr(wInd);

dtmPesquisa.ADOqryPergunta.Close;

dtmPesquisa.ADOqryPergunta.SQL.Clear;

dtmPesquisa.ADOqryPergunta.SQL.Add('SELECT TabItemResposta.[' + IntToStr(wInd) + '], Count(TabItemResposta.[' + IntToStr(wInd) + ']) AS ContaResp, ContaResp/36 FROM TabItemResposta GROUP BY TabItemResposta.[' + IntToStr(wInd) + '] ORDER BY Count(TabItemResposta.[' + IntToStr(wInd) + ']) DESC;');

dtmPesquisa.ADOqryPergunta.Open;

A variável wInd tem o nome do novo campo que deverá ser exibido no dbgrid.

A idéia é fazer um select assim:

SELECT TabItemResposta.[2], Count(TabItemResposta.[2]) AS ContaResp, ContaResp/36

FROM TabItemResposta

GROUP BY TabItemResposta.[2]

ORDER BY Count(TabItemResposta.[2]) DESC;

Só que ao executar a última seqüência de comandos, recebo uma mensagem de erro: "Field '1' not found", sendo que ele deveria apresentar o campo '2'.

Alguém pode me ajudar a resolver o problema?

Obrigado.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Guest --Jonas --
Boa tarde,

O problema é o seguinte: estou desenvolvendo uma aplicação em Delphi 7 e Access e um dos formulários precisa exibir o conteúdo de três dbgrids; dois desses dbgrids estão relacionados de forma que, quando o usuário alterar a linha de um deles, o outro deve mudar um dos campos exibidos.

Fiz assim: há para o dbgrid que deve ter sua coluna alterada os seguintes componentes: ADOTable, DataSource e ADOQuery.

O select desse dbgrid é assim:

SELECT TabItemResposta.[1], Count(TabItemResposta.[1]) AS ContaResp, ContaResp/36

FROM TabItemResposta

GROUP BY TabItemResposta.[1]

ORDER BY Count(TabItemResposta.[1]) DESC;

Vejam que o campo tem como nome um número. A tabela TabItemResposta tem campos com nomes de números de 1 a 20. Quando o usuário mudar o registro de outra tabela, quero fazer o seguinte para alterar a coluna do dbgrid:

dbgrdQuestao.Columns[0].FieldName := IntToStr(wInd);

dtmPesquisa.ADOqryPergunta.Close;

dtmPesquisa.ADOqryPergunta.SQL.Clear;

dtmPesquisa.ADOqryPergunta.SQL.Add('SELECT TabItemResposta.[' + IntToStr(wInd) + '], Count(TabItemResposta.[' + IntToStr(wInd) + ']) AS ContaResp, ContaResp/36 FROM TabItemResposta GROUP BY TabItemResposta.[' + IntToStr(wInd) + '] ORDER BY Count(TabItemResposta.[' + IntToStr(wInd) + ']) DESC;');

dtmPesquisa.ADOqryPergunta.Open;

A variável wInd tem o nome do novo campo que deverá ser exibido no dbgrid.

A idéia é fazer um select assim:

SELECT TabItemResposta.[2], Count(TabItemResposta.[2]) AS ContaResp, ContaResp/36

FROM TabItemResposta

GROUP BY TabItemResposta.[2]

ORDER BY Count(TabItemResposta.[2]) DESC;

Só que ao executar a última seqüência de comandos, recebo uma mensagem de erro: "Field '1' not found", sendo que ele deveria apresentar o campo '2'.

Alguém pode me ajudar a resolver o problema?

Obrigado.

"Field '1' not found", significa Campo 1 não encontrado, a select esta tentanto procurar por um campo chamado 1 e creio ser este o conteudo que voce colocou. porque voce não esperimenta assim:

SELECT TabItemResposta = 2, Count(TabItemResposta = 2) AS ContaResp, ContaResp/36

FROM TabItemResposta

GROUP BY TabItemResposta

ORDER BY Count(TabItemResposta) DESC;

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...