|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
wjuniordias Profissional
Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Qui Fev 07, 2013 4:40 pm Assunto: Lookup some da grid [Resolvido] |
|
|
Olá pessoal, estou com um pequeno problema.
Quando abro a tela de cadastro temos uma grid com os registros salvos em banco, porém, se eu alterar algum registro, os campos lookup simplesmente somem da grid, eu tenho que fechar o programa e abrir novamente, aí ele volta a mostrar.
Detalhe:
No cadastro de Contato tem a F.K. ID_CIDADE, porém, na grid, eu mostro o nome da cidade ao invés do código, por meio de um lookup que criei no ClientDataSet.
Quem puder me ajudar, ficarei grato, valeu, abraço! _________________ "O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles)
Editado pela última vez por wjuniordias em Sex Fev 08, 2013 3:53 pm, num total de 1 vez |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Fev 07, 2013 5:20 pm Assunto: |
|
|
Boa tarde,
Somente os valores deixam de ser exibidos ou nem a coluna é exibida?
O DataSet utilizado pelo Lookup é mantido aberto o tempo todo?
Editado pela última vez por imex em Qui Fev 23, 2023 12:17 pm, num total de 1 vez |
|
Voltar ao Topo |
|
|
JoaoSHi Experiente
Registrado: Segunda-Feira, 25 de Agosto de 2008 Mensagens: 481
|
Enviada: Qui Fev 07, 2013 6:38 pm Assunto: |
|
|
Colega, quando gravar você precisa alimentar este campo "nome da cidade" ai ele ficar gravado no ClientDataSet. |
|
Voltar ao Topo |
|
|
wjuniordias Profissional
Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Sex Fev 08, 2013 7:46 am Assunto: |
|
|
imex escreveu: | Boa tarde,
Somente os valores deixam de ser exibidos ou nem a coluna é exibida?
O DataSet utilizado pelo Lookup é mantido aberto o tempo todo?
|
Somente os valores deixam de ser exibido, a coluna continua normalmente, dá impressão de que os dados foram perdidos, só que se seu fechar a aplicação e abrir novamente ele mostra os valores que tinha sumido.
Sobre o dataSet, deixo eles aberto o tempo todo...
É um projeto simples, uma agenda de contatos, apenas para treinar meus conhecimentos, se alguém preferir, eu mando o fonte.
Abraço. _________________ "O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles) |
|
Voltar ao Topo |
|
|
wjuniordias Profissional
Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Sex Fev 08, 2013 7:50 am Assunto: |
|
|
JoaoSHi escreveu: | Colega, quando gravar você precisa alimentar este campo "nome da cidade" ai ele ficar gravado no ClientDataSet. |
Só que esse campo é lookup, nas configurações já estou apontando para o dataset, ele deveria alimentar automático, pelo que sei....Abraço. _________________ "O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles) |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Fev 08, 2013 10:07 am Assunto: |
|
|
Experimente, só para teste, adicionar um botão com código semelhante ao que segue:
Código: | ShowMessage('LookupDataSet: ' + ClientDataSet1CampoLookup.LookupDataSet.Name +
sLineBreak +
'Ativo: ' + BoolToStr(ClientDataSet1CampoLookup.LookupDataSet.Active, true) +
sLineBreak +
'LookupKeyFields: ' + ClientDataSet1CampoLookup.LookupKeyFields +
sLineBreak +
'LookupResultField: ' + ClientDataSet1CampoLookup.LookupResultField); |
Quando ocorrer o problema, experimente clicar no botão para verificar as propriedades acima.
Espero que ajude. |
|
Voltar ao Topo |
|
|
wjuniordias Profissional
Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Sex Fev 08, 2013 10:52 am Assunto: |
|
|
imex escreveu: | Experimente, só para teste, adicionar um botão com código semelhante ao que segue:
Código: | ShowMessage('LookupDataSet: ' + ClientDataSet1CampoLookup.LookupDataSet.Name +
sLineBreak +
'Ativo: ' + BoolToStr(ClientDataSet1CampoLookup.LookupDataSet.Active, true) +
sLineBreak +
'LookupKeyFields: ' + ClientDataSet1CampoLookup.LookupKeyFields +
sLineBreak +
'LookupResultField: ' + ClientDataSet1CampoLookup.LookupResultField); |
Quando ocorrer o problema, experimente clicar no botão para verificar as propriedades acima.
Espero que ajude. |
Fiz isso, e na mensagem ele me mostra o seguinte:
LooupDataSet: CDSCidade
Ativo: True
LookupKeyFields: ID_CID
LookupResultField: NOM_CID
onde ID_CID é a PK da tabela Cidade, e o NOM_CID é o campo nome da cidade da tabela cidade. _________________ "O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles) |
|
Voltar ao Topo |
|
|
wjuniordias Profissional
Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Sex Fev 08, 2013 10:57 am Assunto: Re: Lookup some da grid |
|
|
Fazendo o teste do "imex" percebi outra coisa, tipo assim por exemplo:
Tem o José (Fernandópolis), Leandro (Fernandópolis), Carlos (General Salgado), Felipe (Votuporanga) cadastrado, se eu alterar a cidade do Felipe no cadastro para Fernandópolis, só some da grid os contatos cuja cidade seja diferente de Fernandópolis, neste exemplo, quem sumiria da Grid seria o Carlos, porque a cidade é diferente, muito estranho isso, nunca aconteceu comigo antes, também é a primeira vez que tento fazer um campo lookup aparecer numa Grid.... _________________ "O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles) |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Fev 08, 2013 11:02 am Assunto: |
|
|
Será que não está sendo adicionado algum filtro na query utilizada para carregar os registros em CDSCidade?
Ou ainda adicionado algum filtro através da propriedade Filter ou evento OnFilterRecord? |
|
Voltar ao Topo |
|
|
wjuniordias Profissional
Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Sex Fev 08, 2013 11:11 am Assunto: |
|
|
imex escreveu: | Será que não está sendo adicionado algum filtro na query utilizada para carregar os registros em CDSCidade?
Ou ainda adicionado algum filtro através da propriedade Filter ou evento OnFilterRecord? |
O único comando que uso no SQLDataSet da cidade é o "Select * from Cidade", eu uso o ClientDataSet deste para ser o lookup do ClientDataSet do Contato. _________________ "O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles) |
|
Voltar ao Topo |
|
|
wjuniordias Profissional
Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Sex Fev 08, 2013 1:42 pm Assunto: |
|
|
Alguém quer o fonte pra analisar? Help-me....obrigado. _________________ "O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles) |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Fev 08, 2013 2:05 pm Assunto: |
|
|
E o Filter? É utilizado?
Como é feita a alteração da cidade?
No mesmo Form ou em outro?
Com form de pesquisa? DBLookupComboBox? |
|
Voltar ao Topo |
|
|
wjuniordias Profissional
Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Sex Fev 08, 2013 2:20 pm Assunto: |
|
|
imex escreveu: | E o Filter? É utilizado?
Como é feita a alteração da cidade?
No mesmo Form ou em outro?
Com form de pesquisa? DBLookupComboBox? |
Não uso o Filter.
Quanto a alteração é o seguinte.
Pelo menu cadastrar/Contato abre uma tela com uma grid exibindo os registros cadastrados, um edit para pesquisa, e os botões "Novo, alterar, excluir e atualizar", ao clicar no botão "alterar", ele abre a tela de manutenção com as informações do registro selecionado na grid, aí o usuário pode alterar os dados e clicar no botão "salvar", feito isso, ele volta na tela de cadastro, é neste momento que os nomes da cidade somem, só fica os nomes das cidades que for igual ao contato que foi alterado.
_________________ "O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles) |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Fev 08, 2013 2:47 pm Assunto: |
|
|
E como funciona o form de manutenção?
Você utiliza um ClientDataSet com Edit / Post / ApplyUpdates para as alterações ou SQL direto?
Se utiliza DataModule e ClientDataSet, utiliza o mesmo DataModule e ClientDataSet no form com o grid e no form de manutenção?
E para alterar o ID da cidade? É necessário digitar o ID? DBLookupComboBox? Form de pesquisa de cidades?
Se tem um Form de pesquisa de cidades, é utilizado o mesmo DataModule / ClientDataSet dos forms anteriores? |
|
Voltar ao Topo |
|
|
wjuniordias Profissional
Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Sex Fev 08, 2013 3:06 pm Assunto: |
|
|
imex escreveu: | E como funciona o form de manutenção?
Você utiliza um ClientDataSet com Edit / Post / ApplyUpdates para as alterações ou SQL direto?
Se utiliza DataModule e ClientDataSet, utiliza o mesmo DataModule e ClientDataSet no form com o grid e no form de manutenção?
E para alterar o ID da cidade? É necessário digitar o ID? DBLookupComboBox? Form de pesquisa de cidades?
Se tem um Form de pesquisa de cidades, é utilizado o mesmo DataModule / ClientDataSet dos forms anteriores? |
Isso, eu uso o Edit/Post e ApplyUpdates.
Uso DataModule, e uso os mesmos componentes tanto na tela de cadastro (com grid) quanto na tela de manutenção.
Para alterar o ID da cidade, no evento "OnEnter" do EdtCodigoCidade, eu abro a tela de pesquisa cidade, o usuario digita o nome da cidade e ao pressionar Ok, ele automaticamente pega o ID correspondente à cidade e joga no edit, por este motivo não estou usando um DBLookupComboBox.
E sim, o form de pesquisa cidade usa o mesmo datamodule dos anteriores.... _________________ "O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles) |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|