PEGAR PARTE DE UM TEXTO
Com a rotina abaixo carrego um combobox:
Private Sub CarregaComboPeriodo()
Set RsComboPeriodo = New ADODB.Recordset
If RsComboPeriodo.State = 1 Then RsComboPeriodo.Close
[ô]ChkComboPeriodo
Sql = [Ô]Select Distinct Mes FROM Dados ORDER BY Mes[Ô]
Set RsComboPeriodo = ConexaoCartao.Execute(Sql)
With RsComboPeriodo
If Not .BOF And Not .EOF Then
.MoveFirst
Me.ComboPeriodo.Clear
For i = 1 To .RecordCount
Me.ComboPeriodo.AddItem UCase(!Mes)
.MoveNext
Next
End If
.Close
Set RsComboPeriodo = Nothing
End With
O ComoBox é carregado da seguinte forma:
DEZEMBRO/2008
JANEIRO/2011
OUTUBRO/2008
Coloquei um CheckBox e se ele for igual true entao carrego o combobox somente com o ano, pergunto:
como faço para pegar o ano a partir da (/) na rotina?
Private Sub CarregaComboPeriodo()
Set RsComboPeriodo = New ADODB.Recordset
If RsComboPeriodo.State = 1 Then RsComboPeriodo.Close
[ô]ChkComboPeriodo
Sql = [Ô]Select Distinct Mes FROM Dados ORDER BY Mes[Ô]
Set RsComboPeriodo = ConexaoCartao.Execute(Sql)
With RsComboPeriodo
If Not .BOF And Not .EOF Then
.MoveFirst
Me.ComboPeriodo.Clear
For i = 1 To .RecordCount
Me.ComboPeriodo.AddItem UCase(!Mes)
.MoveNext
Next
End If
.Close
Set RsComboPeriodo = Nothing
End With
O ComoBox é carregado da seguinte forma:
DEZEMBRO/2008
JANEIRO/2011
OUTUBRO/2008
Coloquei um CheckBox e se ele for igual true entao carrego o combobox somente com o ano, pergunto:
como faço para pegar o ano a partir da (/) na rotina?
tenta assim:
A idéia é usar a função Right
Private Sub CarregaComboPeriodo()
Set RsComboPeriodo = New ADODB.Recordset
If RsComboPeriodo.State = 1 Then RsComboPeriodo.Close
[ô]ChkComboPeriodo
Sql = [Ô]Select Distinct Mes FROM Dados ORDER BY Mes[Ô]
Set RsComboPeriodo = ConexaoCartao.Execute(Sql)
With RsComboPeriodo
If Not .BOF And Not .EOF Then
.MoveFirst
Me.ComboPeriodo.Clear
For i = 1 To .RecordCount
If Check1.Value = True Then
Me.ComboPeriodo.AddItem Right(UCase(!Mes), 4)
.MoveNext
Else
Me.ComboPeriodo.AddItem UCase(!Mes)
.MoveNext
End If
Next
End If
.Close
Set RsComboPeriodo = Nothing
End With
A idéia é usar a função Right
Dim Mes As String
Mes = [Ô]DEZEMBRO/2008[Ô]
MsgBox (Right(Mes, 4))
right não dara certo pois cada mes possui um numero de caracteres diferentes
use o split
exemplo
Dim Ano() as String
Ano = Split([Ô]dezembro/2008[Ô],[Ô]/[Ô])
msgbox Ano(1) [ô] resultado 2008
e
msgbox Ano(0) [ô]igual a dezembro
use o split
exemplo
Dim Ano() as String
Ano = Split([Ô]dezembro/2008[Ô],[Ô]/[Ô])
msgbox Ano(1) [ô] resultado 2008
e
msgbox Ano(0) [ô]igual a dezembro
Citação::
right não dara certo pois cada mes possui um numero de caracteres diferentes
use o split
exemplo
Dim Ano() as String
Ano = Split([Ô]dezembro/2008[Ô],[Ô]/[Ô])
msgbox Ano(1) [ô] resultado 2008
e
msgbox Ano(0) [ô]igual a dezembro
A função Right vai me retorna os 4 últimos caracteres.
Ou seja, não importa quantas letras houverem no mês, sempre irá me retornar somente o ano.
Citação:right não dara certo pois cada mes possui um numero de caracteres diferentes
Pelo contrário. é a solução exata para o problema. Ele pega os caracteres a partir da direita. Desta forma, não importa o que vem depois (antes, no caso).
desculpe, fiz confusão vc tem razão, não sei onde estava minha cabeça, rigth funciona bem
Desse forma também funcionaria:
Right([Ô]DEZEMBRO/2011[Ô], Len([Ô]DEZEMBRO/2011[Ô]) - InStr([Ô]DEZEMBRO/2011[Ô], [Ô]/[Ô])) OU
Mid([Ô]DEZEMBRO/2011[Ô], InStr([Ô]DEZEMBRO/2011[Ô], [Ô]/[Ô]) +1, Len([Ô]DEZEMBRO/2011[Ô]))
Só adaptar qual achar melhor..
Espero que ajude..
Right([Ô]DEZEMBRO/2011[Ô], Len([Ô]DEZEMBRO/2011[Ô]) - InStr([Ô]DEZEMBRO/2011[Ô], [Ô]/[Ô])) OU
Mid([Ô]DEZEMBRO/2011[Ô], InStr([Ô]DEZEMBRO/2011[Ô], [Ô]/[Ô]) +1, Len([Ô]DEZEMBRO/2011[Ô]))
Só adaptar qual achar melhor..
Espero que ajude..
Citação::
desculpe, fiz confusão vc tem razão, não sei onde estava minha cabeça, rigth funciona bem
rsrsr, só podia ter feito confusão mesmo!
Logo você, mestre em VB6.
Abraços Marcelo
JONATHAN, SUA SUGESTÃO CAIU COMO UMA LUVA! VALEU!
Tópico encerrado , respostas não são mais permitidas