PEGAR PARTE DE UM TEXTO

IRENKO 15/03/2011 09:19:30
#367993
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?
JONATHANSTECKER 15/03/2011 09:28:50
#367998
Resposta escolhida
tenta assim:

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))
MARCELO.TREZE 15/03/2011 11:11:01
#368014
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

JONATHANSTECKER 15/03/2011 11:33:52
#368019
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.
HIDDEN 15/03/2011 11:37:02
#368020
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).
MARCELO.TREZE 15/03/2011 11:53:50
#368024
desculpe, fiz confusão vc tem razão, não sei onde estava minha cabeça, rigth funciona bem
DRACULA 15/03/2011 11:54:41
#368025
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..
JONATHANSTECKER 15/03/2011 11:55:48
#368026
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
IRENKO 15/03/2011 15:20:01
#368049
JONATHAN, SUA SUGESTÃO CAIU COMO UMA LUVA! VALEU!
Tópico encerrado , respostas não são mais permitidas