Consulta

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Ninha
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ

Boa tarde.

Fiz uma consulta (código abaixo), mas ao compilar o sistema pede INTO. Como posso resolver este problema?

Selecionar tudo

SELECT DISTINCT X FROM TESTE;
COMMIT;
Ninha.
rodfbar
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 241
Registrado em: Ter, 09 Out 2007 11:15 am
Localização: Batatais - SP

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
Rank: Programador Júnior
Mensagens: 24
Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ

Valeu rodfbar.. me ajudou e muito!!

Obrigada.
Ninha.
Ninha
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ

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
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

Qual o erro Ninha?
Tem como postar aqui pra gente?
Ninha
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ

Tem sim...

está pedindo uma cláusula into na instrução select.
Trevisolli
Moderador
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

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
Rank: Programador Júnior
Mensagens: 24
Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ

Obrigada, Trevisolli.

bjs, Ninha.
Ninha
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ

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.
Avatar do usuário
Porva
Rank: DBA Sênior
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

Ninha, o quê mais especificamente você está querendo fazer? está querendo popular um bloco multirecord???
Ninha
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ

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.
Avatar do usuário
Porva
Rank: DBA Sênior
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

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
Rank: Programador Júnior
Mensagens: 24
Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ

É isso mesmo!!! Quero digitar um código, por exemplo, e quero que apareça a lista de dados relacionados a este código.
Avatar do usuário
Porva
Rank: DBA Sênior
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

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:

Selecionar tudo

Where tabela.campo_codigo = :bloco.codigo
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
Rank: Programador Júnior
Mensagens: 24
Registrado em: Ter, 30 Out 2007 1:19 pm
Localização: Rio de Janeiro - RJ

Ainda não criei a 'Query Data Source Name' . Pra falr a verdade nem sei como criar. :oops:
Avatar do usuário
Porva
Rank: DBA Sênior
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

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
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

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.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes