[ Resolvido ] Problemas carregamento de campos via ajax

Boa Tarde

Tenho 2 selects, 1 com o nome de “classificação” e outro “nome”. Em classificação tenho 3 opções A,B ou C. No banco tenho 3 tabelas chamadas A,B e C com campos id e nome. Ao selecionar no campo “classificação” a opção A, deveriam aparecer no select nome os nomes cadastrados na tabela A, pois nesse segundo select existe um comando SELECT tal qual:

SELECT nome FROM {classificacao} ORDER BY nome

O campo “classificação” esta com a opção de onChange habilitada e com o campo “nome” marcado, porém, ao carregar o form recebo um erro de sql do tipo:

Erro ao acessar o banco de dados
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ORDER BY nome’ at line 3
Comando Sql informado:

[b]SELECT nome FROM ORDER BY nome[/b]

Nesse comando esta faltando a informação da tabela a ser pesquisada, só que essa tab.ela é o value do campo classificação.

Tenho outros forms com a mesma estrutura funcionando, mas esse em específico não tem jeito. Já deletei-o e recriei-o mais de uma vez e nada funciona. Mudei o campo de referencia no select do campo nome para testar mas o que parece é que ele não esta conseguindo ler o nome do campo que esta entre { }.

Alguma luz ?

Obrigado.

você não pode trocar dinamicamente o nome da tabela, mas pode criar uma view, com 3 select para cada tabela usando union all, e criar uma coluna contendo o nome de cada tabela:

Select ‘tabela-a’ as nome_tabela, caluna1, coluna2, coluna3… from tabelaA
UNION ALL
Select ‘tabela-b’ as nome_tabela, caluna1, coluna2, coluna3… from tabelaB
UNION ALL
Select ‘tabela-c’ as nome_tabela, caluna1, coluna2, coluna3… from tabelaC

assim vc pode trocar a tabela dinamicamente usando um where na view.

Desculpe Haroldo, mas não entendi muito bem a sua solução, mas afirmo que tenho outros formulários com o nome da tabela sendo alterado dinamicamente da mesma forma como estou tentando fazer nesse form, usando o value do campo na consulta, e esta funcionando. Minha dúvida é porque da mesma forma que eu uso nos outros forms não esta funcionando aqui nesse form.

Obrigado.

Pelo que eu conheço do SC, não funciona não, pois ele monta o select dos lookups antes de fazer a carga dos valores dos campos a não ser que você alimente esses campos com um valor pre-determinado na onApplicationInit.

Sabe criar views no Banco de Dados?
Já usou?

veja um exemplo:
http://www.phaneronsoft.com/phaneronsoft/2009/06/08/exemplo-de-como-criar-uma-view-no-mysql-virtual-tables/

em vez de usar a tabela vc utiliza a view no from e acrescenta de forma dinâmica apenas o where.

Haroldo, descobri o problema…

Acontece que, ao iniciar o formulário, o campo “classificação” não possui nenhum value, pois depende da seleção do usuário.
O que eu fiz foi criar uma tabela chamada “classificacao” com um 2 campos, id e nome e um único registro com o conteúdo do nome " — Selecione a Classificação --"
e definindo no evento onLoad do formulário o seguinte:

{classificacao}='classificacao';

Assim, o formulário carrega, o campo “classificação” inicia sem valor selecionado e o campo “nome” aparece preenchido com " — Selecione a Classificação --". No momento que altero a seleção do campo “classificação” o campo “nome” recebe os nomes conforme a tabela selecionada, e o comando SELECT é atualizado:

Inicialmente ele esta assim:

(mysql): SELECT nome FROM usuarios  ORDER BY nome

Assim que seleciono alguma classificação ele muda para:

(mysql): SELECT nome FROM A ORDER BY nome 

ou

(mysql): SELECT nome FROM B ORDER BY nome 

ou

(mysql): SELECT nome FROM C ORDER BY nome 

Assim tenho o select dinâmico mudando a tabela de origem do comando SELECT em tempo de execução.

Obrigado.

Foi como eu disse, mesmo assim não acho uma boa pratica a troca da tabela dinamicamente direto no sc, mas se funcionou, ótimo.

É melhor deixar a decisão para essa troca dinâmica no banco do que pelo SC. Vai que mudam a metodologia na ferramenta, se estiver a decisão no banco você não teria problemas.

Bom Dia Haroldo, entendi o sua teoria e concordo. Com mais tempo vou analisar a sua outra opção e atualizar as aplicações.
Mais uma vez, obrigado pelas ajudas.