ORDENAR DADOS NO COMBOBOX
Minha rotina para carregar o ComboBox:
Private Sub CarregaComboPeriodo()
Set RsComboPeriodo = New ADODB.Recordset
If RsComboPeriodo.State = 1 Then RsComboPeriodo.Close
If ChkComboPeriodo.Value = True Then
Sql = [Ô]Select Distinct Right(Mes,4) AS Ano FROM Dados[Ô]
Else
Sql = [Ô]Select Distinct Mes FROM Dados[Ô]
End If
Set RsComboPeriodo = ConexaoCartao.Execute(Sql)
With RsComboPeriodo
If Not .BOF And Not .EOF Then
.MoveFirst
Me.ComboPeriodo.Clear
For i = 1 To .RecordCount
If ChkComboPeriodo.Value = True Then
[ô]Me.ComboPeriodo.AddItem Right(!Ano, 4)
Me.ComboPeriodo.AddItem !Ano
.MoveNext
Else
Me.ComboPeriodo.AddItem UCase(!Mes)
.MoveNext
End If
Next
End If
.Close
Set RsComboPeriodo = Nothing
End With
End Sub
Considerando o carregamento apos o ELSE, fica assim:
ABRIL/2009
DEZEMBRO/2008
FEVEREIRO/2009
JANEIRO/2009
EXISTE MANEIRA DE CARREGAR PERSONALIZADO, OU SEJA:
DEZEMBRO/2008
JANEIRO/2009
FEVEREIRO/2009
ABRIL/2009
SALIENTO Q O CAMPO MES é TEXTO.
GRATO
Private Sub CarregaComboPeriodo()
Set RsComboPeriodo = New ADODB.Recordset
If RsComboPeriodo.State = 1 Then RsComboPeriodo.Close
If ChkComboPeriodo.Value = True Then
Sql = [Ô]Select Distinct Right(Mes,4) AS Ano FROM Dados[Ô]
Else
Sql = [Ô]Select Distinct Mes FROM Dados[Ô]
End If
Set RsComboPeriodo = ConexaoCartao.Execute(Sql)
With RsComboPeriodo
If Not .BOF And Not .EOF Then
.MoveFirst
Me.ComboPeriodo.Clear
For i = 1 To .RecordCount
If ChkComboPeriodo.Value = True Then
[ô]Me.ComboPeriodo.AddItem Right(!Ano, 4)
Me.ComboPeriodo.AddItem !Ano
.MoveNext
Else
Me.ComboPeriodo.AddItem UCase(!Mes)
.MoveNext
End If
Next
End If
.Close
Set RsComboPeriodo = Nothing
End With
End Sub
Considerando o carregamento apos o ELSE, fica assim:
ABRIL/2009
DEZEMBRO/2008
FEVEREIRO/2009
JANEIRO/2009
EXISTE MANEIRA DE CARREGAR PERSONALIZADO, OU SEJA:
DEZEMBRO/2008
JANEIRO/2009
FEVEREIRO/2009
ABRIL/2009
SALIENTO Q O CAMPO MES é TEXTO.
GRATO
If ChkComboPeriodo.Value = True Then
Sql = [Ô]Select Distinct Right(Mes,4) AS Ano FROM Dados Order By Mes, Ano[Ô]
Else
Sql = [Ô]Select Distinct Mes FROM Dados Order By Mes, Ano[Ô]
End If
Sql = [Ô]Select Distinct Right(Mes,4) AS Ano FROM Dados Order By Mes, Ano[Ô]
Else
Sql = [Ô]Select Distinct Mes FROM Dados Order By Mes, Ano[Ô]
End If
KERPLUNK, VOU EXPLICAR MELHOR. NA TABELA EXISTE O CAMPO MES ONDE EU GRAVO O TEXTO, EX.:
DEZEMBRO/2008
NÃO EXISTE UM CAMPO ANO, AQUI EU FAÇO A PESQUISA:
Else
Sql = [Ô]Select Distinct Mes FROM Dados[Ô]
E CARREGA O COMBO:
ABRIL/2009
DEZEMBRO/2008
FEVEREIRO/2009
JANEIRO/2009
ORDENADO ALFABETICAMENTE, A PERGUNTA é: SERIA POSSIVEL ORDENAR ESSE COMBO BASEANDO-SE NO TEXTO DEPOIS DA (/)? FICANDO:
DEZEMBRO/2008
JANEIRO/2009
FEVEREIRO/2009
ABRIL/2009
DEZEMBRO/2008
NÃO EXISTE UM CAMPO ANO, AQUI EU FAÇO A PESQUISA:
Else
Sql = [Ô]Select Distinct Mes FROM Dados[Ô]
E CARREGA O COMBO:
ABRIL/2009
DEZEMBRO/2008
FEVEREIRO/2009
JANEIRO/2009
ORDENADO ALFABETICAMENTE, A PERGUNTA é: SERIA POSSIVEL ORDENAR ESSE COMBO BASEANDO-SE NO TEXTO DEPOIS DA (/)? FICANDO:
DEZEMBRO/2008
JANEIRO/2009
FEVEREIRO/2009
ABRIL/2009
Não. Vc vai ter que incluir um campo contendo o número do mês para fazer a ordenação corretamente.
Mas se vc não tem o campo com o ano, o que [Ô]Me.ComboPeriodo.AddItem !Ano[Ô] faz??
Mas se vc não tem o campo com o ano, o que [Ô]Me.ComboPeriodo.AddItem !Ano[Ô] faz??
Citação:Mas se vc não tem o campo com o ano, o que [Ô]Me.ComboPeriodo.AddItem !Ano[Ô] faz??
AQUI:
If ChkComboPeriodo.Value = True Then
Sql = [Ô]Select Distinct Right(Mes,4) AS Ano FROM Dados[Ô]
NO SELECT ESTOU PEGANDO PARTE DO TEXTO, OU SEJA, DEZEMBRO/2008, PEGO SOMENTE O 2008 (ANO) é O APELIDO DE (MES).
SERA Q NINGUEM TEM UMA GABIARRA PRA RESOLVER ESSE PROBLEMA?
Bom, eu acho que fazer uma gambi pra isso seria mais difÃcil e passÃvel de erros do que simplesmente inserir um campo com a data aÃ...
Até teria uma mais simples se o mês(ainda que num campo texto) estivesse numérico, daria pra fazer um cast de alguma maneira, mas do jeito que tá vai ficar difÃcil
Até teria uma mais simples se o mês(ainda que num campo texto) estivesse numérico, daria pra fazer um cast de alguma maneira, mas do jeito que tá vai ficar difÃcil
irenko porque vc não melhora isso colocando ano em um combo e mes em outro
Amigos, parecia impossivel mas consegui resolver. Primeiro criei uma nova tabela com um campo com todos os meses e um campo com os respectivos numeros de 1 a 12, seguindo a sugestão do KERPLUNK e principalmente LVFIOROT. Testei a sugestão do LVFIOROT, porem repetia os meses e usando o Distinct o mesmo entrava em conflito com o Order By, ai fiz dessa forma:
Sql = [Ô]SELECT Dados.[Mes],Periodo.[Meses],Periodo.[Numero] FROM (Dados INNER JOIN Periodo ON LEFT(Dados.[Mes], LEN(Dados.[Mes])-5) = Periodo.[Meses]) GROUP BY Dados.Mes,Periodo.Meses,Periodo.Numero ORDER BY Right(Dados.[Mes],4) + [Ô][Ô]/[Ô][Ô] + Periodo.[Numero];[Ô]
substistui o Distinct pelo Group By e........ Na Mosca!!
Evidentimente graças ao colega LVFIOROT.
Obrigado a todos.
Sql = [Ô]SELECT Dados.[Mes],Periodo.[Meses],Periodo.[Numero] FROM (Dados INNER JOIN Periodo ON LEFT(Dados.[Mes], LEN(Dados.[Mes])-5) = Periodo.[Meses]) GROUP BY Dados.Mes,Periodo.Meses,Periodo.Numero ORDER BY Right(Dados.[Mes],4) + [Ô][Ô]/[Ô][Ô] + Periodo.[Numero];[Ô]
substistui o Distinct pelo Group By e........ Na Mosca!!
Evidentimente graças ao colega LVFIOROT.
Obrigado a todos.
Tópico encerrado , respostas não são mais permitidas