Procedure subconsulta
Bom dia pessoal,
Preciso gerar um subselect em uma consulta, onde esta tabela possui mais de uma linha. Gostaria que as linhas da subconsulta ficasem separadas por Enter.
Ex.:
select codigo, (select nf from tabela2 where tabela2.codTab1 = tabela1.codigo) from tabela1;
via fonte do delphi eu faria assim:
Algem pode me ajudar a traduzir este código para uma procedure em firebird?
Desde já agradeço.
Preciso gerar um subselect em uma consulta, onde esta tabela possui mais de uma linha. Gostaria que as linhas da subconsulta ficasem separadas por Enter.
Ex.:
select codigo, (select nf from tabela2 where tabela2.codTab1 = tabela1.codigo) from tabela1;
via fonte do delphi eu faria assim:
q_aux.SQL.Clear;
q_aux.SQL.Add(select nf from tabela2 where codTab1=:codTab1 );
q_aux.ParamByName(codTab1).AsString:=q_tabela1.FieldByName(codigo).AsString;
q_aux.Open;
if q_aux.FieldByName(nf).AsString<> then
begin
q_aux.First;
while not q_aux.Eof do
begin
ppMemo1.Lines.Add(q_aux.FieldByName(nf).AsString);
q_aux.Next;
end;
end;
Algem pode me ajudar a traduzir este código para uma procedure em firebird?
Desde já agradeço.
José Ilha
Curtidas 0
Respostas
Emerson Nascimento
01/12/2011
uma SP é realmente necessária? me parece uma instrução bem simples:
q_aux.SQL.text :=
select t1.codigo, t2.nf from tabela1 t1 +
inner join tabela2 t2 on t2.codTab1 = t1.codigo +
where t1.codigo = :codTab1 );
q_aux.ParamByName(codTab1).AsString := q_tabela1.FieldByName(codigo).AsString;
q_aux.Open;
while not q_aux.Eof do
begin
ppMemo1.Lines.Add(q_aux.FieldByName(nf).AsString);
q_aux.Next;
end;
q_aux.SQL.text :=
select t1.codigo, t2.nf from tabela1 t1 +
inner join tabela2 t2 on t2.codTab1 = t1.codigo +
where t1.codigo = :codTab1 );
q_aux.ParamByName(codTab1).AsString := q_tabela1.FieldByName(codigo).AsString;
q_aux.Open;
while not q_aux.Eof do
begin
ppMemo1.Lines.Add(q_aux.FieldByName(nf).AsString);
q_aux.Next;
end;
GOSTEI 0
José Ilha
01/12/2011
uma SP é realmente necessária? me parece uma instrução bem simples:
q_aux.SQL.text :=
select t1.codigo, t2.nf from tabela1 t1 +
inner join tabela2 t2 on t2.codTab1 = t1.codigo +
where t1.codigo = :codTab1 );
q_aux.ParamByName(codTab1).AsString := q_tabela1.FieldByName(codigo).AsString;
q_aux.Open;
while not q_aux.Eof do
begin
ppMemo1.Lines.Add(q_aux.FieldByName(nf).AsString);
q_aux.Next;
end;
q_aux.SQL.text :=
select t1.codigo, t2.nf from tabela1 t1 +
inner join tabela2 t2 on t2.codTab1 = t1.codigo +
where t1.codigo = :codTab1 );
q_aux.ParamByName(codTab1).AsString := q_tabela1.FieldByName(codigo).AsString;
q_aux.Open;
while not q_aux.Eof do
begin
ppMemo1.Lines.Add(q_aux.FieldByName(nf).AsString);
q_aux.Next;
end;
Obrigado pela sua resposta Emersom.
Eu ja estou usando o código que passei no BeforePrint do Detail do ReportBuilder.
O que acontece é que o cliente precisa exportar para xls. Mas na exportação o ReportBuilder, eu não sei o pq, só exporta os dados que estão na query, não exportando o conteudo do ppMemo1.
Att,
GOSTEI 0