Será que alguém pode me ajudar ai.
Já resolvi esse problema de salvar. Tinha que colocar no key_commit
Porem eu tenho 8 registro do campo cd_bloco1. Quando salva, salva somente a primeira ou o ultimo registro.
Preciso que salve todos que eu colocar. alguém tem uma ideia como fazer????
Ele esta assim
cd_bloco1 LOV
cd_bloco1 LOV
cd_bloco1 LOV
cd_bloco1 LOV
cd_bloco1 LOV
cd_bloco1 LOV
Ajuda
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Se o seu bloco não é BASE TABLE, então você vai ter que percorrer CADA LINHA (com um loop, por exemplo) e inserir manualmente as linhas.
Dai quando você commitar, vai comitar todos.
Era isso ?
Dai quando você commitar, vai comitar todos.
Era isso ?
-
- Rank: DBA Pleno
- Mensagens: 297
- Registrado em: Ter, 21 Dez 2010 8:45 am
- Localização: Florianopolis
Priscila Fernandes
Ola dr_gori
Exatamente isso que eu queria.
Dentro do loop coloco a seguinte forma
:PRA.cd_codigo := aux.cd_codigo;
POrem não salva todas as linhas.
Tenho dois base table. Com esse cd_codigo do mesmo bloco PRA.
Tem algum exemplo pra me ajudar. Onde eu coloco o LOOP em que trigger.... no proprio key_commit?
Att.
Exatamente isso que eu queria.
Dentro do loop coloco a seguinte forma
:PRA.cd_codigo := aux.cd_codigo;
POrem não salva todas as linhas.
Tenho dois base table. Com esse cd_codigo do mesmo bloco PRA.
Tem algum exemplo pra me ajudar. Onde eu coloco o LOOP em que trigger.... no proprio key_commit?
Att.
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Bom, pelo que eu entendi, você ta querendo copiar os dados desse bloco não BASE TABLE, pra um base-table...
Eu acho que não vale a pena fazer isso, pois você tem que fazer assim:
LOOP (pra cada linha do bloco de controle)
1. Ir pro bloco BASE TABLE
2. Criar uma nova linha nesse bloco
3. Copiar as informações do não BASE TABLE
4. Voltar pro bloco não BASE TABLE
5. NEXT RECORD
END LOOP.
Eu acho que é mais facil você simplesmente fazer o INSERT direto na tabela.
LOOP (pra cada linha do bloco de controle)
1. INSERT INTO suatabela ......
2. NEXT RECORD
END LOOP
COMMIT
Não tenho nenhum exemplo aqui, mas o caminho é esse.
Qualquer dúvida, prende o grito !
Eu acho que não vale a pena fazer isso, pois você tem que fazer assim:
LOOP (pra cada linha do bloco de controle)
1. Ir pro bloco BASE TABLE
2. Criar uma nova linha nesse bloco
3. Copiar as informações do não BASE TABLE
4. Voltar pro bloco não BASE TABLE
5. NEXT RECORD
END LOOP.
Eu acho que é mais facil você simplesmente fazer o INSERT direto na tabela.
LOOP (pra cada linha do bloco de controle)
1. INSERT INTO suatabela ......
2. NEXT RECORD
END LOOP
COMMIT
Não tenho nenhum exemplo aqui, mas o caminho é esse.
Qualquer dúvida, prende o grito !
-
- Rank: DBA Pleno
- Mensagens: 297
- Registrado em: Ter, 21 Dez 2010 8:45 am
- Localização: Florianopolis
Priscila Fernandes
Dr_gori
Olha só fiz dessa maneira
e da o erro ORA-01400
Porem todos os campo estão preenchido nenhum esta nulo.
Sabe me dizer o que eu passo estar errado. Coloquei no Pré insert do Base Table do SQL. Porem não aceita também o create_record.
Olha só fiz dessa maneira
LOOP
IF :SYSTEM.RECORD_STATUS <> 'NEW' THEN
if :cd_anticorpo1 is not null and :vl_anticorpo1 is not null then
insert into PRA (nr_amostra, nr_controle, nr_repeticao, cd_anticorpo, vl_anticorpo, cd_servico,
dt_realizacao, dt_atualizacao, cd_usuario) values (:parameter.numero_amostra, :parameter.numero_controle,
:parameter.numero_repeticao, :cd_anticorpo1, :vl_anticorpo1, :parameter.codigo_servico, sysdate,
sysdate, :global.cd_pessoafisica);
end if;
CREATE_RECORD;
END IF;
END LOOP;
Porem todos os campo estão preenchido nenhum esta nulo.
Sabe me dizer o que eu passo estar errado. Coloquei no Pré insert do Base Table do SQL. Porem não aceita também o create_record.
-
- Rank: DBA Pleno
- Mensagens: 297
- Registrado em: Ter, 21 Dez 2010 8:45 am
- Localização: Florianopolis
Dr_gori
Fiz de outra maneira e da o seguinte erro FRM40102
Na trigger Key_commit. do formulario.
Podes me ajudar?
Fiz de outra maneira e da o seguinte erro FRM40102
LOOP
GO_BLOCK('ANTICORPO1');
FIRST_RECORD;
IF :SYSTEM.RECORD_STATUS in ('NEW','INSERT') THEN
if :cd_anticorpo1 is not null and :vl_anticorpo1 is not null
AND :cd_anticorpo2 is not null and :vl_anticorpo2 is not null then
:PRA.cd_anticorpo := :cd_anticorpo1;
:PRA.vl_anticorpo := :vl_anticorpo1;
:PRA.cd_anticorpo := :cd_anticorpo2;
:PRA.vl_anticorpo := :vl_anticorpo2;
end if;
CREATE_RECORD;
END IF;
IF :SYSTEM.LAST_RECORD ='TRUE' THEN
EXIT;
END IF;
NEXT_RECORD;
END LOOP;
-- teste;
commit_form;
Podes me ajudar?
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Bom, no primeiro exemplo, você não precisa fazer CREATE_RECORD.
Você ta inserindo direto no banco.
Daí basta comitar, e quando você for fazer EXECUTE_QUERY, seus dados estarão na tabela. (essa é uma forma, as vezes não é possível fazer isso dependendo do contexto).
No segundo exemplo, tente assim:
Eu não testei isso aqui, é só uma idéia... Provavelmente tem que testar algumas coisas a mais. Eu prefiro usar menos possível o forms, go-BLOCK, essas coisas...
Você ta inserindo direto no banco.
Daí basta comitar, e quando você for fazer EXECUTE_QUERY, seus dados estarão na tabela. (essa é uma forma, as vezes não é possível fazer isso dependendo do contexto).
No segundo exemplo, tente assim:
GO_BLOCK('bloco1');
FIRST_RECORD;
LOOP
--aqui copia pra dentro de alguma var, ou array, etc.
GO_BLOCK('bloco2');
create_record;
-- aqui copia todos os campos
GO_BLOCK('BLOCO1')
Exit when :System.last_record='TRUE';
END LOOP;
-
- Rank: DBA Pleno
- Mensagens: 297
- Registrado em: Ter, 21 Dez 2010 8:45 am
- Localização: Florianopolis
DESCULPA DR_GORI. TA CHATEANDO. MAIS AGORA NÃO DA ERRO NENHUM, POREM SÓ INSERI UMA LINHA. TENHO DOIS NÃO BASE TABLE. ONDE ELES TEM QUE INSERIR NUM MESMO BASE TABLE.
ONDE ESTOU ERRANDO?
GO_BLOCK('ANTICORPO1');
FIRST_RECORD;
LOOP
IF :SYSTEM.RECORD_STATUS in ('NEW','INSERT') THEN
if :cd_anticorpo1 is not null and :vl_anticorpo1 is not null then
:cd_anticorpo1 := a1;
:vl_anticorpo1 := b1;
go_block('PRA');
create_record;
a1 := :cd_anticorpo;
b1 := :vl_anticorpo;
end if;
GO_BLOCK('ANTICORPO2');
NEXT_RECORD;
if :cd_anticorpo2 is not null and :vl_anticorpo2 is not null then
:cd_anticorpo2 := a2;
:vl_anticorpo2 := b2;
go_block('PRA');
create_record;
a2 := :cd_anticorpo;
b2 := :vl_anticorpo;
end if;
go_block('ANTICORPO2');
END IF;
Exit when :System.last_record='TRUE';
END LOOP;
commit_form;
END;
ONDE ESTOU ERRANDO?
-
- Rank: DBA Pleno
- Mensagens: 297
- Registrado em: Ter, 21 Dez 2010 8:45 am
- Localização: Florianopolis
Fiz o loop, esse de baixo. Mais ele só esta salvando 1 linha.
if :cd_anticorpo1 is not null and :vl_anticorpo1 is not null then
insert into PRA(nr_amostra, nr_controle, nr_repeticao, cd_servico, cd_anticorpo, dt_realizacao, dt_atualizacao,
cd_usuario, vl_anticorpo) values (:resultados_gerais.nr_amostra,:resultados_gerais.nr_controle,:resultados_gerais.nr_repeticao,
:resultados_gerais.cd_servico,:cd_anticorpo1, :resultados_gerais.dt_realizacao, :resultados_gerais.dt_atualizacao,
:global.cd_pessoafisica,:vl_anticorpo1);
end if;
alguém pra ajudar...................
if :cd_anticorpo1 is not null and :vl_anticorpo1 is not null then
insert into PRA(nr_amostra, nr_controle, nr_repeticao, cd_servico, cd_anticorpo, dt_realizacao, dt_atualizacao,
cd_usuario, vl_anticorpo) values (:resultados_gerais.nr_amostra,:resultados_gerais.nr_controle,:resultados_gerais.nr_repeticao,
:resultados_gerais.cd_servico,:cd_anticorpo1, :resultados_gerais.dt_realizacao, :resultados_gerais.dt_atualizacao,
:global.cd_pessoafisica,:vl_anticorpo1);
end if;
alguém pra ajudar...................
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 17 visitantes