Como incluir, alterar e excluir com a View ?
pessoal
ñ tenho muita experiencia com a questão de montar códigos no direto no banco
utilizo delphi7 e FB 1.5.
criei uma view que possui sua tabela principal e uma série de relacionamentos, tanto relacionamentos obrigatorios (INNER JOIN) como os que podem ter ou não (OUTER JOIN).
essa view é utilizada para pesquisa e exibição dos dados.
eu posso selecionar um registro e editá-lo?
através de umas pesquisas li sobre triggers para isso, mas não captei bem a ideia..
poderiam me ajudar?
Diogo
[color=green:bdfca0aedf]Movido de Delphi para Interbase/Firebird[/color:bdfca0aedf]
ñ tenho muita experiencia com a questão de montar códigos no direto no banco
utilizo delphi7 e FB 1.5.
criei uma view que possui sua tabela principal e uma série de relacionamentos, tanto relacionamentos obrigatorios (INNER JOIN) como os que podem ter ou não (OUTER JOIN).
essa view é utilizada para pesquisa e exibição dos dados.
eu posso selecionar um registro e editá-lo?
através de umas pesquisas li sobre triggers para isso, mas não captei bem a ideia..
poderiam me ajudar?
Diogo
[color=green:bdfca0aedf]Movido de Delphi para Interbase/Firebird[/color:bdfca0aedf]
Diogoalles
Curtidas 0
Respostas
Gandalf.nho
24/10/2005
Veja as minhas explicações nesse tópico [url]http://forum.clubedelphi.net/viewtopic.php?t=63107[/url]
GOSTEI 0
Diogoalles
24/10/2005
Valeu Gandalf, não tinha achado esse topico SSShow !
abraço
Diogo
abraço
Diogo
GOSTEI 0
Diogoalles
24/10/2005
Gandalf,
só uma questão
1º passo é montar a view .. ok
2º passo é montar a trigger.. ok
(não vou ter Insert.. somente Update e Delete)
agora na minha aplicação eu tenho uma Query onde Select * from nome_view.
quando eu for editar, eu teria uma segunda Query2 onde (Select * from nome_view where chave_principal = :chave) e abriria uma tela com os campos DB ligados a está Query2 da view. ok? funciona né?
estou em conflitos de pensamento no seguinte. alguns desses campos trazem valores de outras tabelas, que podem ou não ser obrigatórios.. poderei utilizar o DBlookupCombo pra listar as opções?
mas aí a view está ligada a campos DB, ele ñ vai aceitar a edição por ser query... uhmmm .. ta complicado
como faço? tenho q usar algum componente especifico como foi citado no topico que vc falou ?
obrigado
Diogo
só uma questão
1º passo é montar a view .. ok
2º passo é montar a trigger.. ok
(não vou ter Insert.. somente Update e Delete)
agora na minha aplicação eu tenho uma Query onde Select * from nome_view.
quando eu for editar, eu teria uma segunda Query2 onde (Select * from nome_view where chave_principal = :chave) e abriria uma tela com os campos DB ligados a está Query2 da view. ok? funciona né?
estou em conflitos de pensamento no seguinte. alguns desses campos trazem valores de outras tabelas, que podem ou não ser obrigatórios.. poderei utilizar o DBlookupCombo pra listar as opções?
mas aí a view está ligada a campos DB, ele ñ vai aceitar a edição por ser query... uhmmm .. ta complicado
como faço? tenho q usar algum componente especifico como foi citado no topico que vc falou ?
obrigado
Diogo
GOSTEI 0
Diogoalles
24/10/2005
bom dia pessoal
ainda não consegui resolver a questão acima... resumindo não estou sabendo utilizar os componentes, ou seja , a forma mais fácil de trabalhar.
Além dela, gostaria de saber se existe como Bloquear um registro da View, ou seja, tenho vários usuarios na rede com esta view aberta. Os registros possuem um Status que vai de 0..9, e que se forem status=0 são excluídos senão estiverem sendo usados. Um usuario pode pegar um registro status=0 e alterá-lo, para isso o mesmo não pode ser excluído, então eu teria q bloqueá-lo, como?
se puderem ajudar agradeço..
Diogo
ainda não consegui resolver a questão acima... resumindo não estou sabendo utilizar os componentes, ou seja , a forma mais fácil de trabalhar.
Além dela, gostaria de saber se existe como Bloquear um registro da View, ou seja, tenho vários usuarios na rede com esta view aberta. Os registros possuem um Status que vai de 0..9, e que se forem status=0 são excluídos senão estiverem sendo usados. Um usuario pode pegar um registro status=0 e alterá-lo, para isso o mesmo não pode ser excluído, então eu teria q bloqueá-lo, como?
se puderem ajudar agradeço..
Diogo
GOSTEI 0
Gandalf.nho
24/10/2005
Desculpe pela demora em responder. Quanto a sua pergunta sobre os campos provenientes de outras tabelas, não é recomendado usar DBLookupcombo em ambiente cliente/servidor, por questões de performance. No meu caso eu associei um evento ao meu DBEdit que ao pressionar uma combinaçõa de teclas específicas abre um pequeno form onde vc pode pesquisar o valor que será inserido no campo desejado, como se fosse um Dblookup, com a vantagem que só será aberto nesse curto momento em que uma inserção/edição do campo se fizer necessária. No caso do bloqueio, vc pode fazer isso ou na própria aplicação cliente ou usando triggers no banco de dados
GOSTEI 0
Diogoalles
24/10/2005
bem, ainda estou patinando aqui, mas acho que estou quase lá...
só mais uma ajudinha,
criei o form com uma Query (e um datasource ligado a ela) q realiza o select na view e retorna 1 registro.
nesse form tenho os campos DB todos ligados ao datasource.
criei um trigger de update...
aogra se quero alterar um valor de qualquer desses campos DB ñ consigo, pq a Query ñ pode ser editada. Como faço ?
a cada alteração d campo vou ter q disparar a trigger ?
obrigado
Diogo
só mais uma ajudinha,
criei o form com uma Query (e um datasource ligado a ela) q realiza o select na view e retorna 1 registro.
nesse form tenho os campos DB todos ligados ao datasource.
criei um trigger de update...
aogra se quero alterar um valor de qualquer desses campos DB ñ consigo, pq a Query ñ pode ser editada. Como faço ?
a cada alteração d campo vou ter q disparar a trigger ?
obrigado
Diogo
GOSTEI 0
Gandalf.nho
24/10/2005
Que componentes de acesso vc está usando? Vc precisa usar um componente do tipo UpdateSQL para usar em conjunto com o Query. Se estiver usando IBX, use logo o IBDataSet em vez do IBQuery para manipular os dados.
GOSTEI 0
Diogoalles
24/10/2005
utilizo MDO
no caso posso utilizar MDODataSet certo?
pois é , só que ñ achei nenhum help e ñ to conseguindo usar ele
mas vamos, lá, como Jack (por partes)..
reparei q o MdoDataSet gera os comandos de insert, update, delete automaticamente, mesmo assim tenho que ter a trigger de update? (só vou usar update)....
como funciona o MdoDataSet, posso dar um MdoDataSet1.Edit ? e para gravar é Post ?
obrigado
Diogo
no caso posso utilizar MDODataSet certo?
pois é , só que ñ achei nenhum help e ñ to conseguindo usar ele
mas vamos, lá, como Jack (por partes)..
reparei q o MdoDataSet gera os comandos de insert, update, delete automaticamente, mesmo assim tenho que ter a trigger de update? (só vou usar update)....
como funciona o MdoDataSet, posso dar um MdoDataSet1.Edit ? e para gravar é Post ?
obrigado
Diogo
GOSTEI 0
Gandalf.nho
24/10/2005
Sim, no caso do MDO, vc usa o MDODataset. Em relação aos comandos que ele gera, deixe apenas os comandos que vc irá precisar, os demais vc pode excluir. E para utilizá-lo é como qualquer outro dataset com Edit e Post, não esquecendo de comitar a transação após a alteração ser executada.
GOSTEI 0
Diogoalles
24/10/2005
Blz galera, consegui...
é como uma tabela e muito prático.. recomendo....
só um detalhe,
se eu pega DataSet1.Edit e atribuir um valor ao campo CdCliente, o campo NomeCliente não é preenchido automaticamente até que sej ada do o Post, e ambos os campos eestão na View, sendo que o CdCliente é da tabela principal e o NomeCliente vem de outra tabela relacionada na View... é só dando post ou tem outra maneira ?
valeu
Diogo
é como uma tabela e muito prático.. recomendo....
só um detalhe,
se eu pega DataSet1.Edit e atribuir um valor ao campo CdCliente, o campo NomeCliente não é preenchido automaticamente até que sej ada do o Post, e ambos os campos eestão na View, sendo que o CdCliente é da tabela principal e o NomeCliente vem de outra tabela relacionada na View... é só dando post ou tem outra maneira ?
valeu
Diogo
GOSTEI 0
Gandalf.nho
24/10/2005
O nome só é puxado automaticamente ao se abrir ou dat refresh na view, se vc quiser que mostre o nome na hora faça algo como a sugestão que dei algumas mensagens acima
No meu caso eu associei um evento ao meu DBEdit que ao pressionar uma combinaçõa de teclas específicas abre um pequeno form onde vc pode pesquisar o valor que será inserido no campo desejado, como se fosse um Dblookup, com a vantagem que só será aberto nesse curto momento em que uma inserção/edição do campo se fizer necessária
GOSTEI 0