Amigos,
como faço para que quando preencher o primeiro campo em um form (que um primary key), preencha automaticamente os outros campos se o registro já existir na base ?
obrigado,
Pesquisar registro existente
-
- Rank: DBA Pleno
- Mensagens: 248
- Registrado em: Sex, 06 Fev 2009 3:02 pm
- Localização: ERECHIM - RS
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Você esta efetuando uma consulta?
Se sim, utilize o POST-QUERY.
Caso seja um cadastro, utilize a when-validate-item (trigger nesse campo que você esta preenchendo).
Monte um bloco pl/sql e faça as consultas que vão preencher os outros campos.
Se sim, utilize o POST-QUERY.
Caso seja um cadastro, utilize a when-validate-item (trigger nesse campo que você esta preenchendo).
Monte um bloco pl/sql e faça as consultas que vão preencher os outros campos.
-
- Rank: DBA Pleno
- Mensagens: 248
- Registrado em: Sex, 06 Fev 2009 3:02 pm
- Localização: ERECHIM - RS
ok funciona para when-validate-item .
Mas no caso eu tenho uma Master/Detail. O procedimento é o mesmo para preencher o Detail também? Devo colocar when-validate-item para i Detail também ?
obrigado,
Mas no caso eu tenho uma Master/Detail. O procedimento é o mesmo para preencher o Detail também? Devo colocar when-validate-item para i Detail também ?
obrigado,
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
se você fizer um relation, o detail não é exibido não?
-
- Rank: DBA Pleno
- Mensagens: 248
- Registrado em: Sex, 06 Fev 2009 3:02 pm
- Localização: ERECHIM - RS
Sim, é exibido todos os campos do Master e do Detail se eu pressionar a tecla F8.
Mas oque eu gostaria de fazer é que quando digitado algum valor no primeiro campo, pesquisa, e se o registro já existir na base, que preencha todos os campos do mesmo modo que faz o F8.
Tem como ?
Mas oque eu gostaria de fazer é que quando digitado algum valor no primeiro campo, pesquisa, e se o registro já existir na base, que preencha todos os campos do mesmo modo que faz o F8.
Tem como ?
-
- Rank: Estagiário Sênior
- Mensagens: 11
- Registrado em: Ter, 30 Jun 2009 4:54 pm
- Localização: Brusque - SC
Bom dia.
Eu sugiro em você criar uma package na base...a package(ou procedure) faz a pesquisa no banco retornando os valores q você quer...
sugiro o seguinte comando:
function get_cliente ( vcod_cliente in cliente.cod_cliente % type ) return cliente % rowtype is
aux cliente % rowtype;
begin
select * into aux from cliente where cod_cliente = vcod_cliente;
return aux;
exception
when no_data_found then
raise_application_error( -20002 , 'Cliente não cadastrado: ' || nvl( to_char( vcod_cliente ) , 'NULL' ) || '.' );
end;
--===================================================================================================================
--Função: retorna demais campos
procedure get_valores_cliente( vcod_cliente in number ,
vdes_cliente out varchar2,
vdes_endereco out varchar2) is
aux cliente % rowtype := get_cliente( vcod_cliente => vcod_cliente );
begin
vdes_cliente := aux.des_cliente;
vdes_endereco := aux.des_endereco;
end ;
espero ter ajudado.
Abraços
Eu sugiro em você criar uma package na base...a package(ou procedure) faz a pesquisa no banco retornando os valores q você quer...
sugiro o seguinte comando:
function get_cliente ( vcod_cliente in cliente.cod_cliente % type ) return cliente % rowtype is
aux cliente % rowtype;
begin
select * into aux from cliente where cod_cliente = vcod_cliente;
return aux;
exception
when no_data_found then
raise_application_error( -20002 , 'Cliente não cadastrado: ' || nvl( to_char( vcod_cliente ) , 'NULL' ) || '.' );
end;
--===================================================================================================================
--Função: retorna demais campos
procedure get_valores_cliente( vcod_cliente in number ,
vdes_cliente out varchar2,
vdes_endereco out varchar2) is
aux cliente % rowtype := get_cliente( vcod_cliente => vcod_cliente );
begin
vdes_cliente := aux.des_cliente;
vdes_endereco := aux.des_endereco;
end ;
espero ter ajudado.
Abraços
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Bom, você tem duas opções...
1. No when-validate-item você fazer um cursor com join entre todas as tabelas que deseja popular e então ir preenchendo tudo.
2.Por um campo onde você digita o valor e um botão que você precisa clicar, no when-button-press você coloca um set_block_property default_where passando esse campo que você preencheu como default_where, fazendo o go_block / go_item e em seguida o execute query.
ex:
Dessa forma, todos os details serão preenchidos, pois, você esta efetuando uma consulta, porém, terá que apertar o botão pra coisa rodar... no when-validate-item não funciona dessa forma pois você esta inserindo valores e na when-validate não da para usar go_block nem go_item e acredito que também não da para usar execute_query...
espero ter ajudado.
1. No when-validate-item você fazer um cursor com join entre todas as tabelas que deseja popular e então ir preenchendo tudo.
2.Por um campo onde você digita o valor e um botão que você precisa clicar, no when-button-press você coloca um set_block_property default_where passando esse campo que você preencheu como default_where, fazendo o go_block / go_item e em seguida o execute query.
ex:
declare
vsql varchar2(100);
begin
vsql := 'codigo = '||:bloco.codigo;
set_block_property (bloco, default_where, vsql);
go_block('bloco');
go_item('bloco.codigo');
execute_query;
end;
espero ter ajudado.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 19 visitantes