Inversão de lista

Fórum para discussão de temas diversos sobre o Father.

Moderador: Leandro Esteves

Regras do fórum
=============

Antes de postar sua dúvida, por favor leia as regras de utilização do fórum.
Gonzaga
Mensagens: 123
Registrado em: 23 Jul 2013, 10:32

Inversão de lista

Mensagem por Gonzaga » 08 Nov 2015, 13:55

Ola amigos.
Preciso de uma função e agradeço muito quem puder ajudar.
É o seguinte:
A função precisa inverter a ordem de uma lista, assim:

de:
1-dlfkjdslkfjsdkfjslfsj
2-ldfjsljfskldfj lsdkjf s
3-erwerwrwrwerw
4-sldfjlsfjsldjfs
5-sldfjlsdfjsdkfj

para:
5-sldfjlsdfjsdkfj
4-sldfjlsfjsldjfs
3-erwerwrwrwerw
2-ldfjsljfskldfj lsdkjf s
1-dlfkjdslkfjsdkfjslfsj

Achei vários sites que fazem isso, mas preciso colocar direto no programa.
Obrigado.

andremartini
Mensagens: 193
Registrado em: 24 Out 2012, 13:17
Contato:

Re: Inversão de lista

Mensagem por andremartini » 09 Nov 2015, 08:20

explica melhor ... esta sua lista está numa tabela, num array ... você vai colocar esta lista num grid, etc?

Gonzaga
Mensagens: 123
Registrado em: 23 Jul 2013, 10:32

Re: Inversão de lista

Mensagem por Gonzaga » 09 Nov 2015, 12:18

Explicando melhor:
É uma lista em TXT deliminado por ; (ponto e vírgula).
Exporto o TXT pelo Father mas tenho que usar um programa da internet (site) que inverte a lista, porque pelo recurso do Father não tem como escolher a ordem da lista, embora haja um campo onde você escolhe a ordem, mas não funciona. E agora para ajudar, a release 9 está gerando o txt totalmente defeituoso, cheio de caracteres estranhos. Segundo o Suporte, vai ser corrigido. Até que isso aconteça, o que preciso é inverter a ordem do TXT, ou seja a primeira linha ir para a última linha e a última linha ir para a primeira. Imagino que possa ser um botão para escolher o arquivo TXT e logo em seguida acionar a rotina.
Se puder ajudar, agradeço muitíssimo.
Gonzaga

Gonzaga
Mensagens: 123
Registrado em: 23 Jul 2013, 10:32

Re: Inversão de lista

Mensagem por Gonzaga » 09 Nov 2015, 12:23

Esqueci, gostaria de saber qual o seu relacionamento com a empresa dos links que você postou.

andremartini
Mensagens: 193
Registrado em: 24 Out 2012, 13:17
Contato:

Re: Inversão de lista

Mensagem por andremartini » 09 Nov 2015, 14:58

mais uma dúvida, cada registro da tabela é uma linha no txt?

respondendo: sou o proprietário da IS2

andremartini
Mensagens: 193
Registrado em: 24 Out 2012, 13:17
Contato:

Re: Inversão de lista

Mensagem por andremartini » 09 Nov 2015, 15:08

lista de produtos ordenada pelo código (cada produto em uma linha)

Código: Selecionar todos

  Dim intNumArea As Integer 'número da área do arquivo
  Dim rstProdutos As Recordset 'tabela de produtos
  Dim strLinha As String 'linha do arquivo texto
  
  intNumArea = FreeFile 'pega uma area livre
  Set rstProdutos = vgDb(0).OpenRecordSet("Select [Código do produto], [Descrição Do produto] From Produtos Order By [Código do produto]")
  If rstProdutos.RecordCount > 0 Then
    rstProdutos.MoveFirst
    Open vgDirEXE & "lista.txt" For Output As intNumArea
    
    Do While Not rstProdutos.EOF
      strLinha = strLinha + LPad(rstProdutos![Código Do produto], 13, "0") + ";"
      strLinha = strLinha + LTrim(RTrim(rstProdutos![Descrição Do produto])) + String(80 - Len(LTrim(RTrim(rstProdutos![Descrição Do produto]))), " ")
      
      Print #intNumArea, strLinha
      strLinha = ""
      rstProdutos.MoveNext
    Loop
    Close #intNumArea
  End If
  subFinalizaRst rstProdutos

andremartini
Mensagens: 193
Registrado em: 24 Out 2012, 13:17
Contato:

Re: Inversão de lista

Mensagem por andremartini » 09 Nov 2015, 15:10

lista de produtos ordenada pelo código (todos produtos na mesma linha)

Código: Selecionar todos

  Dim intNumArea As Integer 'número da área do arquivo
  Dim rstProdutos As Recordset 'tabela de produtos
  Dim strLinha As String 'linha do arquivo texto
  
  intNumArea = FreeFile 'pega uma area livre
  Set rstProdutos = vgDb(0).OpenRecordSet("Select top 10 [Código do produto], [Descrição Do produto] From Produtos Order By [Código do produto]")
  If rstProdutos.RecordCount > 0 Then
    rstProdutos.MoveFirst
    Open vgDirEXE & "lista.txt" For Output As intNumArea
    
    Do While Not rstProdutos.EOF
      strLinha = strLinha + LPad(rstProdutos![Código Do produto], 13, "0") + ";"
      strLinha = strLinha + LTrim(RTrim(rstProdutos![Descrição Do produto])) + String(80 - Len(LTrim(RTrim(rstProdutos![Descrição Do produto]))), " ")
      
      rstProdutos.MoveNext
    Loop
    Print #intNumArea, strLinha
    strLinha = ""
    Close #intNumArea
  End If
  subFinalizaRst rstProdutos

Jose Carlos Buosi
Mensagens: 78
Registrado em: 15 Ago 2011, 23:21

Re: Inversão de lista

Mensagem por Jose Carlos Buosi » 10 Nov 2015, 08:39

Gonzaga - tudo bem !!

A questão de caracteres estranhos na criação do arquivo TXT pelo Father, você ja reportou ao HelpDesk?

Também estou com esse problema e não estou conseguindo entrar no HelpDesk.

Abraços
Jose cArlos

Gonzaga
Mensagens: 123
Registrado em: 23 Jul 2013, 10:32

Re: Inversão de lista

Mensagem por Gonzaga » 10 Nov 2015, 12:33

Esse problema dos caracteres estranhos na geração do TXT pelo Father3 foi reportado sim, não no HelpDesk mas pelo Almeida da SSITecnologia. Ele me passou essa informação, já estavam ciente do problema e que haveria uma correção. Esses problemas de arrumar uma coisa e desmanchar outra que já estava funcionando não é incomum no departamento de desenvolvimento do Father, já aconteceu mais de uma vez.
Também não consegui entrar mais no HelpDesk porque o período de acesso gratuito venceu. Agora tem que pagar 150,00 por mês. Talvez você não tenha conseguido entrar mais pelo mesmo motivo, se adquiriu a licença do Father3.

Gonzaga
Mensagens: 123
Registrado em: 23 Jul 2013, 10:32

Re: Inversão de lista

Mensagem por Gonzaga » 10 Nov 2015, 12:54

Caro André Martini
Depois que atualizei o Father3 com a release 9 não consegui mais obter uma lista TXT. Ela é gerada com caracteres estranhos conforme relatei. Então arrumei uma função parecida com essa que você postou e gerei o TXT corretamente. Acontece que quando é gerado, tem um campo DATA cuja data mais velha fica na primeira linha e a data mais nova fica na última linha. O que preciso é inverter essa lista para que a data mas recente fique em primeiro lugar. Vou dar uma estudada no código que você postou. Se eu conseguir gerar o TXT já na ordem desejada, da data mais nova para a data mais velha, fica nota dez.
Obrigado por sua colaboração.

Responder

Quem está online

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