Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Irenko

Select

Recommended Posts

Set TbResumo = New ADODB.Recordset
If TbResumo.State = 1 Then TbResumo.Close
With TbResumo
    .CursorType = adOpenStatic
    .CursorLocation = adUseClient
    .LockType = adLockPessimistic
    
    .Source = "SELECT DadosCT.Cliente,IIf(Len([DadosCT].[Numero])>4,Left([DadosCT].[Numero],Len([DadosCT].[Numero])-2),[DadosCT].[Numero]) AS Contrato FROM DadosCT GROUP BY  IIf(Len([DadosCT].[Numero])>4,Left([DadosCT].[Numero],Len([DadosCT].[Numero])-2),[DadosCT].[Numero]),DadosCT.Cliente;"
    .ActiveConnection = BancoSobra
    .Open
    If .BOF = True And .EOF = True Then Exit Sub
    
    Grid.Rows = .RecordCount + 1
    'Row = 0
    Do Until .EOF = True
        Row = Row + 1
        Grid.Col = 0
        
        Grid.Row = Row
        Grid.TextMatrix(Row, 0) = !Contrato
        Grid.TextMatrix(Row, 1) = !Cliente
        Grid.TextMatrix(Row, 2) = !Descricao


.MoveNext
Loop
End With

Pessoal, com o select acima eu faço uma junção do texto, exemplo:

 

135013

135015

135020

 

no Grid só vai aparecer 1350.

 

Agora preciso juntar a Descrição de cada codigo, exemplo:

 

135013 xxxxxxxxx

135015 yyyyyyyyy

135020 zzzzzzzzz

 

no grid tem q aparecer:

 

1350 xxxxxxxxx - yyyyyyyyy - zzzzzzzzz

 

O campo é DadosCT.Descricao.

 

é possivel? O banco é access.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer colocar todas as descrições possíveis para as séries que começam iguais tudo junto né?

 

Acho que somente usando uma query não é possível não, mas o que você pode fazer é montar uma query usando substring e group by. Isso te trará todos os possíveis resultados para uma série igual. Aí depois para fazer aparecer todas as descrições uma na frente da outra, você pode usar um for next para adicionar à sua variável os valores da coluna descrição.

 

Caramba, talvez tenha ficado meio confuso, rs.

Se não entender avise aí.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a demora para ajudar, estive meio ausente do fórum esses dias.

 

Esquece o que disse. Acho que será mais fácil trabalhar com dois recordset, assim:

 

No seu loop tente isso:

 


dim rs2 as new adodb.recordset

Do Until .EOF = True
        Row = Row + 1
        Grid.Col = 0
        
        rs2.open "select DadodCt.descricao from DadosCt where substring(dadosCt.numero,1," & len(!contrato) & ") = '" & !Contrato& "'", BancoSobra
        descricao = ""
        do until rs2.eof
                descricao = descricao & " " & rs2("descricao")
                rs2.movenext
        loop
        rs2.close

        Grid.Row = Row
        Grid.TextMatrix(Row, 0) = !Contrato & descricao
        Grid.TextMatrix(Row, 1) = !Cliente
        'Grid.TextMatrix(Row, 2) = !Descricao


.MoveNext

Isso:

substring(dadosCt.numero,1," & len(!contrato) & ")
Pega partes de uma string. Utilizei len(!contrato) para a hipótese se nem sempre conter 4 casas como deu o exemplo (1350). Mas caso sempre seja 4 casas, pode substituir o len() por 4.

 

Espero que resolva.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.