USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  concatenar campo de vários reg. de uma tabela
Agnaldo
não registrado
Postada em 20/01/2005 16:03 hs   
Olá pessoal, por favor, se possível, ajudem-me com uma solução a seguinte questão:
 
Como posso concatenar campo de diversos registros de uma tabela em apenas um registro utilizando Store Procedure para Relatório em Cristal Report ?

Exemplo:

Tabela1
campo : codigo
             1 
             2 
             3 
             4 
             5

Eu queria fazer um select , que me retornasse

Tabela1 
           12345


Gostaria de fazer isso direto pelo SQL

Obrigado
 
Agnaldo
     
Alê
SÃO PAULO
SP - BRASIL
Postada em 20/01/2005 20:49 hs         
Olá Agnaldo,
 
Um comando SELECT faz uma leitura sequencial dentro de uma tabela, respeitando as condições que você passar na cláusula WHERE.
Se você criar uma variável do tipo varchar com um tamanho que suporte a concatenação dos registros desejados, fica bem fácil obter este resultado.
Você pode criar uma procedure que retorne uma string contendo o resultado da seguinte instrução, por exemplo:
 
declare @linha varchar(100)
select @linha = IsNull(@linha,'') + codigo from Tabela1
O resultado obtido será:
 
@linha = '12345'
 
Onde @linha deve ser o valor de retorno da procedure.
 
Espero ter ajudado!
 
Abraço.
 
 
     
Martini
Pontos: 2843 Pontos: 2843
PAROBÉ
RS - BRASIL
Postada em 21/01/2005 08:22 hs         
tenta assim:
Obs.: o meu select é assim porque eu queria fazer um exemplo onde retornasse 1 2 3 4 5, por isso, Cast((ZAO_INVEST - 157) As integer)  ... é só colocar o teu select
 

DECLARE @Sequencia  varchar(10)
DECLARE @Seq1 Integer
SET @Sequencia = ''
DECLARE Seqs CURSOR FORWARD_ONLY FOR
 
Select Cast((ZAO_INVEST - 157) As integer) AS Seq From ZAO010
Where D_E_L_E_T_ <> '*'
And ZAO_INVEST Between 158 And 162
Order By ZAO_INVEST

--ABRE O CURSOR
OPEN Seqs
--POSICIONA NA PRIMEIRA LINHA E CARREGA VARIÁVEIS
FETCH NEXT FROM Seqs INTO @Seq1
--VAMOS PASSAR TODO O CURSOR PARA INSERIR LINHA POR LINHA NA TABELA
--PARA CADA LINHA É NECESSÁRIO CALCULAR O R_E_C_N_O_
WHILE @@FETCH_STATUS = 0
 BEGIN
  SET @Sequencia = @Sequencia + cast(@Seq1 as varchar)
  --POSICIONA NO PRÓXIMO REGISTRO E ATUALIZA VARIÁVEIS
  FETCH NEXT FROM Seqs INTO @Seq1
  
 END
CLOSE Seqs
DEALLOCATE Seqs
Select @Sequencia
     
Agnaldo
não registrado
Postada em 21/01/2005 14:49 hs   
Muito Obrigado a todos quanto tentaram em me ajudar, em especial ao amigo Alexandre Sá, que deu uma excelente dica, a qual tive que fazer apenas algumas modificações para solução de meu problema, abaixo mostro como ficou :
 
CREATE PROCEDURE Teste
as
Declare @NF              VarChar(500)
Declare @Vsql            VarChar(8000)
select @NF = IsNull(@NF,'''')  + '/ ' +  cast(nf1_Num_Fatura as varchar(10))  from Tab_Nota1 Where NF1_Num_Fatura < 64750
set @NF = @NF + ''''
Set @Vsql = 'Select NF1_Empresa, '
Set @Vsql = @Vsql + @NF
Set @Vsql = @Vsql +  ' as NumFat From Tab_Nota1 Where NF1_Num_Fatura < 64750'
Execute (@Vsql)
GO
 
Valeu !
 
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página