SELECIONAR INTERVALOS COM ;

WATZECK 28/09/2014 23:03:00
#441580
Boa noite galera, tudo bem?

Estou com uma dúvida, e não sei se isso é possível, mas se for e alguém puder me ajudar, ficarei muito grato.

A dúvida é o seguinte, eu tenho um form onde eu seleciono um intervalo de números para imprimir, por exemplo do nº X até o número Y, até ai tudo bem, funciona perfeitamente.
O que eu gostaria de fazer é o seguinte, selecionar em um único TextBox vários números separando-os com [Ô]ponto e virgula[Ô], igual fazemos no Word.
Por exemplo: 5; 7; 10; 15; 17-20 e assim sucessivamente.
O que eu tenho atualmente são 2 TextBox, onde eu coloco por exemplo o nº 15 em um TextBox, e o nº 17 no outro TextBox, onde irá me trazer 3 itens do banco, porém acontece as vezes de eu precisar imprimir números intercalados, conforme mencionado acima, e como cabem 3 dados (nº) por folha A4 gostaria de selecioná-los separando-os com ponto e vírgula, para não gastar folha a toa imprimindo um por um.

Obs.: A forma que eu possuo atualmente irá continuar, porém gostaria de dar mais essa opção para visualização/impressão selecionando a opção por um RadioButton por exemplo.

Se isso for possível e alguém puder me ajudar eu agradeço.
Estou usando Visual Studio 2010 com Banco Access - VB.NET - Windows Form (Desktop)
GUIMORAES 29/09/2014 08:57:48
#441582
faz um split e um for para percorrer o mesmo.

ex:
for i = 0 to ubound(split(txtImprimir.text,[Ô];[Ô]))
linhaAtual = split(txtImprimir.text,[Ô];[Ô])(i)
[ô]Aqui você faz o que precisa com a linha
next
FFCOUTO 29/09/2014 11:19:59
#441588
Esta função resolve o seu problema

Public Function GerarLista(ByVal pag As String) As String
On Local Error GoTo errHandle
Dim i As Integer, j As Long
Dim novaLista As String
Dim rVal1() As String, rVal2() As String

novaLista = [Ô][Ô]
rVal1() = Split(pag, [Ô];[Ô])

For i = LBound(rVal1) To UBound(rVal1)
If InStr(1, rVal1(i), [Ô]-[Ô]) > 0 Then
rVal2() = Split(rVal1(i), [Ô]-[Ô])

For j = CLng(rVal2(0)) To CLng(rVal2(1))
novaLista = novaLista & j & [Ô], [Ô]
Next
Else
notaLista = novaLIsta & rVal1(i) & [Ô], [Ô]
End If
Next

novaLista = Left$(Trim(novaLista), Len(Trim(novaLista)) - 1)
GerarLista = novaLista
Exit Function

errHandle:
GerarLista = [Ô][Ô]
End Function


Para usar:
Private Sub Command1_Click()
Dim listaPag As String
listaPag = GerarLista([Ô]5;7;10;15;17-20[Ô])
End Sub
Faça seu login para responder