Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Ninha
Rank: Programador Júnior
Mensagens: 24 Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ
Qui, 22 Nov 2007 4:31 pm
Boa tarde.
Fiz uma consulta (código abaixo), mas ao compilar o sistema pede INTO. Como posso resolver este problema?
Ninha.
rodfbar
Rank: DBA Pleno
Mensagens: 241 Registrado em: Ter, 09 Out 2007 11:15 am
Localização: Batatais - SP
Qui, 22 Nov 2007 4:38 pm
o select retorna um valor... você deve setar em alguma variavel e trabalhar com ela...
se o select retonar mais de um valor deve usar o cursor ou um loop para trabalhar valor a valor...
ex:
Selecionar tudo
declare
v_count number :=0;
begin
begin
select count(1)
into v_count
from produto
where cd_produto = :produto.cd_produto;
exception
when ... then
.
.
end;
--
if v_count = 0 then
message('Código do produto não cadastrado');
message(' ',no_acknowledge);
raise form_trigger_failure;
end if;
end;
Ninha
Rank: Programador Júnior
Mensagens: 24 Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ
Sex, 23 Nov 2007 8:06 am
Valeu rodfbar.. me ajudou e muito!!
Obrigada.
Ninha.
Ninha
Rank: Programador Júnior
Mensagens: 24 Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ
Ter, 04 Dez 2007 4:44 pm
Oi pessoal.
Fiz uma consulta, mas está dando erro!!!
O que pode estar errado?
Selecionar tudo
MESSAGE ('CONSULTADO');
SELECT * FROM TESTE WHERE X=:BLOCO3.XX;
COMMIT;
Bjs
Ninha.
Trevisolli
Moderador
Mensagens: 2016 Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Ter, 04 Dez 2007 4:50 pm
Qual o erro Ninha?
Tem como postar aqui pra gente?
Ninha
Rank: Programador Júnior
Mensagens: 24 Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ
Ter, 04 Dez 2007 4:55 pm
Tem sim...
está pedindo uma cláusula into na instrução select.
Trevisolli
Moderador
Mensagens: 2016 Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Ter, 04 Dez 2007 5:14 pm
Isso mesmo Ninha...
Quanto se popula um SELECT num BLOCO, é necessária a cláusula INTO ou, que este select seja um cursor (implícito - loop ou explícito - open, loop, fetch, close).
Tenta criar uma variável e jogar no into.
Nota:Verifique antes, se teu select não retorna mais de uma linha, dai tem que se tratar como cursor.
No teu exemplo:
Selecionar tudo
DECLARE
V_TOTAL NUMBER;
BEGIN
MESSAGE ('CONSULTADO');
SELECT VALOR
INTO V_TOTAL
FROM TESTE WHERE X=:BLOCO3.XX;
COMMIT;
END;
Ninha
Rank: Programador Júnior
Mensagens: 24 Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ
Qua, 05 Dez 2007 11:11 am
Obrigada, Trevisolli.
bjs, Ninha.
Ninha
Rank: Programador Júnior
Mensagens: 24 Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ
Qui, 06 Dez 2007 4:14 pm
Trevisolli,
Achei que estivesse rodando normalmente, mas ainda não está..
O que seria v_total, pois não tenho este dado ou dado parecido com este em meu banco de dados.
Porva
Rank: DBA Sênior
Mensagens: 342 Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
Qui, 06 Dez 2007 4:23 pm
Ninha, o quê mais especificamente você está querendo fazer? está querendo popular um bloco multirecord???
Ninha
Rank: Programador Júnior
Mensagens: 24 Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ
Qui, 06 Dez 2007 4:38 pm
Rafael,
Estou tentando fazer uma simples consulta.
Eu digito os dados da consulta, clico no botão, mas os dados não aparecem!
Não sei de onde vem o V_total do exemplo acima.
Porva
Rank: DBA Sênior
Mensagens: 342 Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
Sex, 07 Dez 2007 7:18 am
certo, mas essa consulta você está querendo exibir onde? num bloco tabular/multirecord??
tipo, você faz um filtro/consulta e os registros são exibidos na "grid" do Forms? é isso?
Ninha
Rank: Programador Júnior
Mensagens: 24 Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ
Sex, 07 Dez 2007 8:13 am
É isso mesmo!!! Quero digitar um código, por exemplo, e quero que apareça a lista de dados relacionados a este código.
Porva
Rank: DBA Sênior
Mensagens: 342 Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
Sex, 07 Dez 2007 8:38 am
suponhamos que você já tenha criado seu bloco base table com a propriedade 'Query Data Source Name' apontando para a tabela em questão..
deixe a propriedade 'Where Clause' (do bloco) de acordo com a comparação que você quer fazer: ex:
aí no botão que você irá disparar a consulta, faça:
Selecionar tudo
GO_BLOCK('nome_do_seu_bloco'); --Aqui não precisa colocar os dois pontos ':'
CLEAR_BLOCK(NO_VALIDATE); --Limpa a consulta cada vez que você clicar, para exibir uma nova
EXECUTE_QUERY; --Executa a consulta
Ninha
Rank: Programador Júnior
Mensagens: 24 Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ
Sex, 07 Dez 2007 9:32 am
Ainda não criei a 'Query Data Source Name' . Pra falr a verdade nem sei como criar.
Porva
Rank: DBA Sênior
Mensagens: 342 Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
Sex, 07 Dez 2007 9:35 am
mas o bloco você já está sabendo criar? tipo pelo Wizar mesmo?
se sim, aí é só colocar o nome da tabela em questão nessa propriedade que falei (Query Data Source Name)
Query Data Source Name é uma propriedade do bloco, não precisar criar ela!, você precisa criar o bloco somente
Trevisolli
Moderador
Mensagens: 2016 Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Sex, 07 Dez 2007 10:23 am
Só complementando, QUERY DATA SOURCE NAME, é o nome do teu Objeto (Tabela, View ou Procedure), caso este bloco seja Base Table.
Segue uma breve descrição do Help do próprio forms:
Specifies the name of the block's query data source.
The Query Data Source Name property is valid only when the Query Data Source Type property is set to Table, Sub-Query, or Procedure.
Caso não seja Base Table, esta opção não é preenchida.
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante