Indexar coluna dbgrid aonde o field é um campo fkLookup
Amigos!
Estou precisando da ajuda de vocês!
Estou fazendo uma consulta SQL aonde me retorna os dados que nescessito. Nescessariamente eu criei campos na minha tabela principal fields que servem para referenciar outra tabela, exemplo:
tabela produtos : CODIGO_ID, NOME, CODIGO_ID_COR, ATIVO, DATA_CADASTRO;
tabela cores : CODIGO_ID, NOME, ATIVO, DATA_CADASTRO;
No meu ClientDataSetProdutos eu criei um novo field chamado NOME_COR e fiz um ´fkLookup´ ligando as duas tabelas. Aonde o ordem de consulta seria através do CODIGO_ID_COR ligada ao CODIGO_ID do ClientDataSetCores e seu resultado seria o NOME da cor, entenderam?
Agora aqui está meu problema e dúvida.
Eu preciso dentro do meu DBGrid aonde mostro o cadastro dos produtos que classifique/ordene pelo campo NOME DA COR.
Se eu fizer isto:
[b:3379c44e94]Ele me resulta que o Field NOME_COR não pode ser localizado.[/b:3379c44e94]
Se eu fizer a ordenação através do ClientDataSet assim:
[b:3379c44e94]Ele me resulta a seguinte mensagem de erro: Field index out of range[/b:3379c44e94]
Alguém pode me responder como proceder?
Ou se não é possível realmente fazer este tipo de ordenação em cima de um campo criado como fkLookup?
Lembrando que se eu colocar qualquer outro campo, funciona corretamente.
*Utilizo : Delphi 2007 for Win32
BD : MySQL 5.0.4
Conexão : SQLConnection / SQLQuery / DataSetProvider / ClientDataSet / DataSource
Agradeço ajuda.
Abraço.
Estou precisando da ajuda de vocês!
Estou fazendo uma consulta SQL aonde me retorna os dados que nescessito. Nescessariamente eu criei campos na minha tabela principal fields que servem para referenciar outra tabela, exemplo:
tabela produtos : CODIGO_ID, NOME, CODIGO_ID_COR, ATIVO, DATA_CADASTRO;
tabela cores : CODIGO_ID, NOME, ATIVO, DATA_CADASTRO;
No meu ClientDataSetProdutos eu criei um novo field chamado NOME_COR e fiz um ´fkLookup´ ligando as duas tabelas. Aonde o ordem de consulta seria através do CODIGO_ID_COR ligada ao CODIGO_ID do ClientDataSetCores e seu resultado seria o NOME da cor, entenderam?
Agora aqui está meu problema e dúvida.
Eu preciso dentro do meu DBGrid aonde mostro o cadastro dos produtos que classifique/ordene pelo campo NOME DA COR.
Se eu fizer isto:
ClientDataSetProdutos.Active := False; SQLQueryProdutos.Close; SQLQueryProdutos.SQL.Clear; SQLQueryProdutos.SQL.Add(´select * from CADASTRO_DE_PRODUTOS order by NOME_COR´); SQLQueryProdutos.Open; ClientDataSetProdutos.Active := True;
[b:3379c44e94]Ele me resulta que o Field NOME_COR não pode ser localizado.[/b:3379c44e94]
Se eu fizer a ordenação através do ClientDataSet assim:
ClientDataSetProdutos.Active := False; SQLQueryProdutos.Close; SQLQueryProdutos.SQL.Clear; SQLQueryProdutos.SQL.Add(´select * from CADASTRO_DE_PRODUTOS´); SQLQueryProdutos.Open; ClientDataSetProdutos.Active := True; ClientDataSet.IndexName := ´NOME_COR´;
[b:3379c44e94]Ele me resulta a seguinte mensagem de erro: Field index out of range[/b:3379c44e94]
Alguém pode me responder como proceder?
Ou se não é possível realmente fazer este tipo de ordenação em cima de um campo criado como fkLookup?
Lembrando que se eu colocar qualquer outro campo, funciona corretamente.
*Utilizo : Delphi 2007 for Win32
BD : MySQL 5.0.4
Conexão : SQLConnection / SQLQuery / DataSetProvider / ClientDataSet / DataSource
Agradeço ajuda.
Abraço.
Devmedia
Curtidas 0
Respostas
Devmedia
18/09/2008
ClientDataSetProdutos.Active := False; SQLQueryProdutos.Close; SQLQueryProdutos.SQL.Clear; SQLQueryProdutos.SQL.Add(´select * from CADASTRO_DE_PRODUTOS´); SQLQueryProdutos.Open; ClientDataSetProdutos.Active := True;
ClientDataSet.[b:7e4083c183]IndexFieldName[/b:7e4083c183] := ´NOME_COR´;
Também resulta a mesma mensagem de erro: [b:7e4083c183]Field index out of range[/b:7e4083c183]
GOSTEI 0
Marco Salles
18/09/2008
lucasfss o clientDataSet não permite Indexar [b:1457ef49a9]campos , LooKup[/b:1457ef49a9] (que é o seu caso) , agregados,calculados, do Tipo Blob e se não me falha a memória de Tipos MEMO
Porém como o seu caso ?
Faça um Join entre a tabela produtos e a Tabela cores
Ai sim , vce poderá Ordenar sua Pesquisa (´consulta´) pelo campo NOME DA COR.
Porém como o seu caso ?
Faça um Join entre a tabela produtos e a Tabela cores
Ai sim , vce poderá Ordenar sua Pesquisa (´consulta´) pelo campo NOME DA COR.
GOSTEI 0
Devmedia
18/09/2008
[quote:a9c4bb27f0=´Marco Salles´] do Tipo Blob e se não me falha a memória de Tipos MEMO
Porém como o seu caso ?
[/quote:a9c4bb27f0]
Amigo, obrigado pela resposta.
Mas o meu campo que criei no ´NEW FIELD´ do ClientDataSetProdutos é [b:a9c4bb27f0]STRING[/b:a9c4bb27f0], desculpe não ter informado isto ateriormente.
Agora, como proceder com este comando join?
Não entendi!
Agradeço à atenção.
Porém como o seu caso ?
[/quote:a9c4bb27f0]
Amigo, obrigado pela resposta.
Mas o meu campo que criei no ´NEW FIELD´ do ClientDataSetProdutos é [b:a9c4bb27f0]STRING[/b:a9c4bb27f0], desculpe não ter informado isto ateriormente.
Agora, como proceder com este comando join?
Não entendi!
Agradeço à atenção.
GOSTEI 0
Edsant
18/09/2008
um exemplo de comando join:
[b:c7736edc26]SELECT * FROM EDLAN LEFT JOIN EDPROPRIETARIO ON
EDLAN.CODPROPRIETARIO=EDPROPRIETARIO.CODPROPRIETARIO
ORDER BY EDPROPRIETARIO.NOMEPROPRIETARIO[/b:c7736edc26]
[b:c7736edc26]SELECT * FROM EDLAN LEFT JOIN EDPROPRIETARIO ON
EDLAN.CODPROPRIETARIO=EDPROPRIETARIO.CODPROPRIETARIO
ORDER BY EDPROPRIETARIO.NOMEPROPRIETARIO[/b:c7736edc26]
GOSTEI 0
Marco Salles
18/09/2008
Amigo, obrigado pela resposta.
Mas o meu campo que criei no ´NEW FIELD´ do ClientDataSetProdutos é STRING, desculpe não ter informado isto ateriormente.
Vc não entendeu...
Veja :
lucasfss o clientDataSet não permite Indexar campos , LooKup (que é o seu caso) .. mesmo ele definido como sendo String
E Acrescentei :
Tb nãp permite indexar campos agregados,calculados, do Tipo Blob e se não me falha a memória de Tipos MEMO .. < e nenhum deles no momento se enquadra ao seu caso. Mas se futuramente tiver esta duvida saiba que não sera possivel , salvo que hala uma evolução no componente clientDataSet >
Entendeu :?: :?: :?: :?:
Agora, como proceder com este comando join?
Não entendi!
Agradeço à atenção.
Então tente seguir o que o colega postou
um exemplo de comando join: SELECT * FROM EDLAN LEFT JOIN EDPROPRIETARIO ON EDLAN.CODPROPRIETARIO=EDPROPRIETARIO.CODPROPRIETARIO ORDER BY EDPROPRIETARIO.NOMEPROPRIETARIO
boa sorte
GOSTEI 0
Devmedia
18/09/2008
Amigos!
Muito obrigado pelas ajudas!
Consegui aqui utilizando o comando join.
Muito obrigado mesmo.
Muito obrigado pelas ajudas!
Consegui aqui utilizando o comando join.
Muito obrigado mesmo.
GOSTEI 0