Fórum Procedure subconsulta #410038
01/12/2011
0
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
Curtir tópico
+ 0
Responder
Posts
02/12/2011
Emerson Nascimento
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;
Responder
Gostei + 0
02/12/2011
José Ilha
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,
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)