Ir para conteúdo
Fórum Script Brasil
  • 0

Ordenar Posicoes


ramon

Pergunta

Como alterar este codigo para ser apresentado numa listbox ou ser armazenado numa matriz pois não estou conseguindo

alguém poderia me ajudar, pois sinceramente não conheco nada de banco de dados

Private Sub Form_Load() 
Dim i  As Integer 

Dim rsDesconectado As ADODB.Recordset 
Set rsDesconectado = New ADODB.Recordset 

rsDesconectado.Fields.Append "Time", adChar, 40 
rsDesconectado.Fields.Append "Pontos", adInteger 
rsDesconectado.Fields.Append "SaldoGols", adInteger 


rsDesconectado.ActiveConnection = Nothing 
rsDesconectado.CursorLocation = adUseClient 

rsDesconectado.Open 

rsDesconectado.AddNew 
rsDesconectado("Time").Value = "Grêmio" 
rsDesconectado("Pontos") = 3 
rsDesconectado("SaldoGols") = 1 

rsDesconectado.AddNew 
rsDesconectado("Time").Value = "Santástico Futebol Show" 
rsDesconectado("Pontos") = 9 
rsDesconectado("SaldoGols") = 13 

rsDesconectado.AddNew 
rsDesconectado("Time").Value = "Juventude" 
rsDesconectado("Pontos") = 4 
rsDesconectado("SaldoGols") = -3 

rsDesconectado.AddNew 
rsDesconectado("Time").Value = "Caxias" 
rsDesconectado("Pontos") = 4 
rsDesconectado("SaldoGols") = 1 

rsDesconectado.Sort = ("Pontos desc, SaldoGols desc") 

Set MSHFlexGrid1.DataSource = rsDesconectado 
rsDesconectado.Close 
Set rsDesconectado = Nothing 

End Sub 

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Existem diversas maneiras de se comportar os dados apresentados em um vetor ou em uma matriz. Seguem duas maneiras, sendo a primeira utilizando um tipo definido pelo usuário (Registro) e um vetor; a segunda já cria um vetor de vetores (o que pode ser considerada uma matriz):

'No General Declarations do Form (ou em um módulo, trocando o "Private" por "Public")
Private Type Registro
    Time As String
    Pontos As Integer
    SaldoGols As Integer
End Type

'Criando o vetor e preenchendo-o
    Dim dados(3) As Registro
    
    dados(0).Time = "Grêmio"
    dados(0).Pontos = 3
    dados(0).SaldoGols = 1

    dados(1).Time = "Santástico Futebol Show"
    dados(1).Pontos = 9
    dados(1).SaldoGols = 13
    
    dados(2).Time = "Juventude"
    dados(2).Pontos = 4
    dados(2).SaldoGols = -3
    
    dados(3).Time = "Caxias"
    dados(3).Pontos = 4
    dados(3).SaldoGols = 1
    dados = Array(Array("Grêmio", 3, 1), _
                  Array("Santástico Futebol Show", 9, 13), _
                  Array("Juventude", 4, -3), _
                  Array("Caxias", 4, 1))

Certo? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Não eu quero em vez de apresentar os dados numa MSHFlexGrid1.DataSource

passar ela para uma matriz

Como alterar esta parte do codigo

Set MSHFlexGrid1.DataSource = rsDesconectado 
rsDesconectado.Close 
Set rsDesconectado = Nothing 

Link para o comentário
Compartilhar em outros sites

  • 0
Não eu quero em vez de apresentar os dados numa MSHFlexGrid1.DataSource

passar ela para uma matriz

Como alterar esta parte do codigo

Set MSHFlexGrid1.DataSource = rsDesconectado 
rsDesconectado.Close 
Set rsDesconectado = Nothing 
Ah sim, perdão. Não tinha entendido o que você queria. Mas, então, é só fazer:
Dim dados()
quantidade = 0
With rsDesconectado
    .MoveFirst
    Do While Not .EOF
        ReDim v(.Fields.Count - 1)
        qt = 0
        For Each f In .Fields
            v(qt) = f.Value
            qt = qt + 1
        Next f
        ReDim Preserve dados(quantidade)
        dados(quantidade) = v
        quantidade = quantidade + 1
        .MoveNext
    Loop
End With

No lugar de "Set MSHFlexGrid1.DataSource = rsDesconectado" e você terá a matriz dados preenchida (igual ao segundo exemplo do meu outro post).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Cara não funcionou aqui

Coloquei o Debug.print para testar o que tem dentro da matriz dados e da erro

Como você fez? Lembre-se que é um vetor de vetores e não uma matriz propriamente. Eu fiz o teste assim:

    For Each informação In dados
        For Each dado In informação
            Debug.Print dado
        Next dado
    Next informação

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Sim agora funcionou

Gostaria claro se fose possivel uma breve explicação dos codigos que você postou

For Each informação In dados
       For Each dado In informação
           Debug.Print dado
       Next dado
   Next informação

O que o each e o in fazem

Link para o comentário
Compartilhar em outros sites

  • 0

Sim agora funcionou

Gostaria claro se fose possivel uma breve explicação dos codigos que você postou

For Each informação In dados
       For Each dado In informação
           Debug.Print dado
       Next dado
   Next informação

O que o each e o in fazem

O For Each... Next é uma alternativa (mais pragmática na utilização, na minha opinião) ao For... Next (eu simplesmente não conseguiria viver sem o For Each... tongue.gif ).

Para esclarecimentos sobre o For Each... Next, dê uma olhada neste post (do meio para baixo): http://scriptbrasil.com.br/forum/index.php...=0entry249402

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Com que eu faria para remover os dados do banco de dados pois preciso fazer um laco de 4 vezes sendo que cada vez eu terei que apagar os dados que forem guardados

Pois tenho 4 divisoes de 10 times então entro com os 10 primeiros valores faco o sorteio apresento ela na 1°listbox agora quero apagar os valores do bd para entrar os novos 10 valores que sera apresentado na 2° listbox

Bom resumindo so presizo saber como apagar os valores para depois colocar outros

Link para o comentário
Compartilhar em outros sites

  • 0
Com que eu faria para remover os dados do banco de dados pois preciso fazer um laco de 4 vezes sendo que cada vez eu terei que apagar os dados que forem guardados

Pois tenho 4 divisoes de 10 times então entro com os 10 primeiros valores faco o sorteio apresento ela na 1°listbox agora quero apagar os valores do bd para entrar os novos 10 valores que sera apresentado na 2° listbox

Bom resumindo so presizo saber como apagar os valores para depois colocar outros

Qual BD???? Você não está utilizando recordsets *desconectados*??? No caso acima, basta destruir o recordset (o que já é feito no final rotina) e criá-lo novamente ao chamar a rotina (o que já é feito no começo dela).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
então basta repetir o processo colcando um laco

Basicamente sim. Você só vai ter que colocar assim:

for blábláblá
  Set rsDesconectado = New ADODB.Recordset

  '... restante da rotina

Porque é naquela linha ali que ele vai criar o objeto.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...