Fórum Utilização da DBGrid de forma Dinâmica no Delphi #597954
18/10/2018
0
Como vão?
Estou realizando um trabalho no Delphi 7 com o Banco de Dados em Oracle.
Estou realizando um Join em algumas tabelas para que seja mostrado em uma DBGrid Produto, Processo e o Usuário só coloque a resposta de cada processo que ele tem conhecimento.
Porém, quando compilo a aplicação, na primeira linha da Grid, que seria o primeiro processo, consigo colocar a resposta do Usuário. Quando vou colocar a resposta do próximo Processo na segunda linha da DBGrid ela me retorna um erro, conforme segue:
"A linha não pode ser localizada para atualização. Alguns valores podem ter sido alterados desde que ela foi lida pela última vez. "
Pelo o que entendi, a aplicação só esta enxergando o primeiro processo.
Estou utilizando DataSetProvider, ClientDataSet, ADOQUERY e DataSource.
Poderiam me auxiliar nesse problema?
Desde já agradeço!
Vinicius David
Curtir tópico
+ 0Post mais votado
18/10/2018
Se não tiver chave primária faça um teste criando uma.
Outra opção é alterar a propriedade CursorLocation do ADOQuery para clUseServer.
Natanael Ferreira
Gostei + 2
Mais Posts
18/10/2018
Vinicius David
No caso ela não possuí nenhum campo como chave primária, pois são diversos processos que preciso responder.
Em relação a Propriedade CursorLocation, ao ativa-lá aparece a seguinte mensagem:
''DataSet does not support booksmarks, wich are required for multi-record data controls."
Resumindo...
Na Aplicação de Respostas preciso:
Usuário
Setor
Processo A Alternativa 1
Processo B Alternativa 2
Processo C Alternativa 3
Processo D Alternativa 4
Processo E Alternativa 5
Processo F Alternativa 1
Processo G Alternativa 2
Processo H Alternativa 3
Processo I Alternativa 4
Nessa tela faço um Join no ADOQUERY +/- assim:
Select A.SEQPRODUTO, B.SEQPROCESSO, B.DESCRICAO, C.SEQPRODUTO, C.SEQRESPOSTA, D.SEQRESPOSTA, D.ALTERNATIVA
FROM PRODPROCESSO A, PROCESSO B, PRODRESPOSTA C, RESPOSTAS D
WHERE A.SEQPRODUTO = (aqui eu entro com o número do produto que tem relação com os processos)
AND A.SEQPROCESSO = B.SEQPROCESSO
AND C.SEQPRODUTO = (aqui eu entro com o número do produto que tem relação com os processos)
AND C.SEQRESPOSTA = D.SEQRESPOSTA
Estou meio confuso sobre o que fazer.
Gostei + 0
24/10/2018
Vinicius David
Eu consegui resolver o erro que estava aparecendo, porém ocorreu outro erro:
Informações insuficientes sobre a coluna de chave para atualização.
Esse erro da quando tento mudar a opção de um DBLookupComboBox que tenho de Alternativas para os processos cadastrados.
tenho 5 tipos de alternativas diferentes para responder em 200 processos.
O que ocorre é que cada processo esta multiplicando pelo número de respostas.
No caso tenho 200 processos X 5 Tipos de Respostas = 1000 Processos
Só que dessa forma esta errada, pois só tenho 200 processos cadastrados e não quero que apareça duplicado.
Tentei colocar um Distinct no SEQPROCESSO porém mesmo assim ele esta retornando duplicado.
Gostaria muito que me ajudassem nesse grande problema.
Att,
Vinicius
Gostei + 0
24/10/2018
Natanael Ferreira
Gostei + 0
24/10/2018
Vinicius David
No ADOQUERY que ligo na DBGrid realizo o seguinte Select:
SELECT DISTINCT A.SEQPROCESSO, A.SEQPRODUTO, B.DESCRICAO, C.SEQPRODUTO, C.SEQRESPOSTA, D.SEQRESPOSTA, D.ALTERNATIVA
FROM PRODPROCESSO A, PROCESSO B, PRODRESPOSTA C, RESPOSTAS D
WHERE A.SEQPRODUTO = 2
AND A.SEQPROCESSO = B.SEQPROCESSO
AND C.SEQPRODUTO = 2
AND C.SEQRESPOSTA = D.SEQRESPOSTA
O que ocorre quando realizo esse Select:
Os processos ficam repetidos de acordo com a quantidade de respostas que possuem cadastradas na tabela RESPOSTAS.
Gostei + 0
25/10/2018
Vinicius David
A tabela PRODPROCESSO => Liga o Produto ao Processo pelo Código
A tabela PROCESSO => Possuí a descrição do Processo
A tabela PRODRESPOSTA => Liga o Produto a Resposta, pois cada produto pode ter várias respostas diferentes
A tabela RESPOSTAS => Possuí o cadastro de todas as respostas.
No Resultado Final preciso mostrar a Descrição do Processo e a Alternativa que o Usuário escolheu.
Gostei + 0
26/10/2018
Vinicius David
Consegui resolver o problema da mensagem que estava aparecendo, era a ligação do DBLookupComboBox que estava ligada errada.
Porém após mexer na ligação do DBLookupComboBox, não consigo escolher nenhuma opção do componente.
Quando abro o DBLookupComboBox ele aparece as 5 opções cadastradas selecionadas, como se fosse um bloco... uma única alternativa, impossibilitando de escolher alguma opção.
Alguém poderia me auxiliar?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)