ola sou novo por aqui..
situação... estou tentando criar uma trigger When-validate-item, para quando digitar os campos abaixos se completarem, mas da o erro Ora-01422, sei que esse é porque o valor que ele busca é mais que uma linha, mas é isso mesmo, quero preencher os campos com varias linhas, mas não da certo se digito um codigo que busca só uma linha da certo, mas quero que busque todas as linhas
valeu
Validação
-
- Rank: Analista Pleno
- Mensagens: 108
- Registrado em: Qua, 12 Nov 2008 6:01 pm
- Localização: Campo Mourão PR
o sistema é de uma locadora
valeu
begin
select SEQ_LOCACAO,COD_MIDIA,DAT_A_DEVOLVER,sysdate
into :cvl_devolucao.seq_locacao, :cvl_devolucao.COD_MIDIA, :cvl_devolucao.DAT_A_DEVOLVER, :cvl_devolucao.DAT_DEVOLUCAO
from cvl_locacao_midia
where seq_locacao=(select seq_locacao from cvl_locacao_midia
where cod_midia=:cvl_devolucao.va_cod_midia);
end;
-
- Rank: Programador Sênior
- Mensagens: 52
- Registrado em: Qua, 15 Out 2008 4:05 pm
- Localização: taquara-RS
tenta assim..
valeu
BEGIN
--
SELECT seq_locacao
, cod_midia
, dat_a_devolver
, sysdate
INTO :CVL_DEVOLUCAO.seq_locacao
, :CVL_DEVOLUCAO.cod_midia
, :CVL_DEVOLUCAO.dat_a_devolver
, :CVL_DEVOLUCAO.dat_devolucao
FROM cvl_locacao_midia
WHERE seq_locacao = (SELECT seq_locacao
FROM cvl_locacao_midia
WHERE cod_midia = :CVL_DEVOLUCAO.va_cod_midia
AND rownum = 1);
--
END;
-
- Rank: Programador Sênior
- Mensagens: 52
- Registrado em: Qua, 15 Out 2008 4:05 pm
- Localização: taquara-RS
BEGIN
--
SELECT seq_locacao
, cod_midia
, dat_a_devolver
, sysdate
INTO :CVL_DEVOLUCAO.seq_locacao
, :CVL_DEVOLUCAO.cod_midia
, :CVL_DEVOLUCAO.dat_a_devolver
, :CVL_DEVOLUCAO.dat_devolucao
FROM cvl_locacao_midia
WHERE seq_locacao = (SELECT seq_locacao
FROM cvl_locacao_midia
WHERE cod_midia = :CVL_DEVOLUCAO.va_cod_midia
AND rownum = 1);
--
END;
-
- Rank: Analista Pleno
- Mensagens: 110
- Registrado em: Ter, 24 Mai 2005 9:16 pm
- Localização: Dongguan - Guangdong - China
O problema é que você esta fazendo uma validação de campo onde está retornando mais de uma linha para validar e por isso o form te retorna esse erro. Se você quiser popular os campos tera que fazer com que cada linha retornada da sua query abra um novo registro no form.
-
- Rank: Analista Pleno
- Mensagens: 110
- Registrado em: Ter, 24 Mai 2005 9:16 pm
- Localização: Dongguan - Guangdong - China
Primeiro tenho que entender o que você realmente quer fazer...
Se quiser popular outros campos do form quando validar 1 determinado campo, tera que fazer com que sua consulta retorne somente 1 registro com todas as colunas que deseja.
Ou você deseja gerar varios registros no form apartir da validacao ???
Explique melhor o que você precisa fazer que é mais facil para a gente poder te ajudar
Se quiser popular outros campos do form quando validar 1 determinado campo, tera que fazer com que sua consulta retorne somente 1 registro com todas as colunas que deseja.
Ou você deseja gerar varios registros no form apartir da validacao ???
Explique melhor o que você precisa fazer que é mais facil para a gente poder te ajudar
-
- Rank: Analista Pleno
- Mensagens: 108
- Registrado em: Qua, 12 Nov 2008 6:01 pm
- Localização: Campo Mourão PR
ola.. boa noite, desde já agradeço pela ajuda:
seguinte essa é a tela que estou desenvolvendo, a idéia é que quando digitar o cod_midia no primeiro campo, já carregar o nome do cliente, e todas as midias locadas juntas (nos campos dentro do frame devolução) com esta primeira que digitei o codigo.
Obrigado[/img]
seguinte essa é a tela que estou desenvolvendo, a idéia é que quando digitar o cod_midia no primeiro campo, já carregar o nome do cliente, e todas as midias locadas juntas (nos campos dentro do frame devolução) com esta primeira que digitei o codigo.
Obrigado[/img]
-
- Rank: Analista Pleno
- Mensagens: 110
- Registrado em: Ter, 24 Mai 2005 9:16 pm
- Localização: Dongguan - Guangdong - China
Se eu entendi o que você quer o codigo abaixo pode lhe ajudar, porem o que esta no frame devolucao não pode ser base table. Se for basetable, você não pode executar o codigo abaixo que ira dar erro.
OBS: não testei codigo
OBS: não testei codigo
declare
cursor c1 is
SELECT seq_locacao
, cod_midia
, dat_a_devolver
, sysdate
INTO :CVL_DEVOLUCAO.seq_locacao
, :CVL_DEVOLUCAO.cod_midia
, :CVL_DEVOLUCAO.dat_a_devolver
, :CVL_DEVOLUCAO.dat_devolucao
FROM cvl_locacao_midia
WHERE seq_locacao = (SELECT seq_locacao
FROM cvl_locacao_midia
WHERE cod_midia = :CVL_DEVOLUCAO.va_cod_midia
AND rownum = 1);
--
r1 c1%rowtype;
--
BEGIN
--
open c1;
fetch c1 into r1;
--
while c1%found loop
--
:bloco.nome_campo := r1.cod_midia;
:bloco.nome_campo := r1.dat_a_devolver;
--
exit when :system.last_record = 'TRUE';
fetch c1 into r1;
next_record;
--
end loop;
--
close c1;
--
END;
-
- Rank: Analista Sênior
- Mensagens: 135
- Registrado em: Qui, 04 Out 2007 3:36 pm
- Localização: Belo Horizonte - MG
Caro Tora34,
Então, achei muito interessante essa sua postagem e, a título de aprendizado também, gostaria muito de entender este seu sisteminha, ou seja; no passo a passo, como é que isso funciona?? você criou a tela, a partir de qual tabela? e como você usa esse código?
Lhe agradeço muito pela ajuda!!
Edson
Então, achei muito interessante essa sua postagem e, a título de aprendizado também, gostaria muito de entender este seu sisteminha, ou seja; no passo a passo, como é que isso funciona?? você criou a tela, a partir de qual tabela? e como você usa esse código?
Lhe agradeço muito pela ajuda!!
Edson
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes