USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Extrair dados de um textbox?
Tamanini
não registrado
ENUNCIADA !
Postada em 06/08/2004 09:03 hs   
Alguém sabe como posso separar os valores abaixo de um textbox:
2-5;8-15;
3;
5-9
 
[]'s,
 
Marcelo Tamanini
   
Tekki
Pontos: 2843 Pontos: 2843 Pontos: 2843
UBERLÂNDIA
MG - BRASIL
ENUNCIADA !
Postada em 06/08/2004 09:29 hs            
Amigos, desculpe mas não compreendi.
Como assim separar? Todos estes valores estão num Text MultiLine?
Quer separar os números?
   
[k]-du
SANTOS
SP - BRASIL
Postada em 06/08/2004 09:30 hs            
eu naum entendi direito o q vc quis dizer...
mas tenta usar a função Mid (text1.text, x, y)
 
x-> onde vc vai querer começar a pegar os valores...
y-> qtd de caracteres que vc quer pegar....
por ex.
      text1.text = "987654321"
      valor = mid (text1.text, 3, 2)
      valor = 65
      valor = mid (text1.text, 4, 3)
      valor = 543
 
senau tiver nada haver... explica um pouco melhor
 
[]'s
cadu
 
     
Tamanini
não registrado
ENUNCIADA !
Postada em 07/08/2004 11:55 hs   
Deixa eu explicar melhor então:
O que eu quero fazer é como a janela de impressão do office como do word por exemplo, que vc digita as páginas que quer ser impressas, só que no meu caso eu irei digitar para saber quais registros quero que seja impressos! Agora deu para compreender?
Eu até consigo separar, mas de uma maneira, se o usuário digitar de um jeito irá gerar erro, como eu poderia fazer um jeito para que separace corretamente? Não deixando que o usuário faça essas besteiras:
1-6-9
1--
;7;
e ainda fazer com que reconheça dessa duas formas esteja correta:
2-7;
2-7
 
[]'s,
 
Marcelo Tamanini
   
Tekki
Pontos: 2843 Pontos: 2843 Pontos: 2843
UBERLÂNDIA
MG - BRASIL
ENUNCIADA !
Postada em 07/08/2004 12:30 hs            
Fiz uma programação parecida com o que você quer.
 
Para testar, abra um novo form e coloque um Textbox com o nome de txtCondicoesDePagamentos
 
Agora use o código :
 
Private Sub txtCondicoesDePagamentos_KeyPress(KeyAscii As Integer)
    If Chr(KeyAscii) = ";" Then
        If Len(txtCondicoesDePagamentos.Text) = 0 Then
            KeyAscii = 0
        ElseIf Right(txtCondicoesDePagamentos.Text, 1) = ";" Then
            KeyAscii = 0
        End If
    End If
    If Not IsNumeric(Chr(KeyAscii)) Then
        If KeyAscii <> 13 And KeyAscii <> 8 And KeyAscii <> 59 Then
            KeyAscii = 0
        End If
    End If
End Sub

Private Sub txtCondicoesDePagamentos_LostFocus()
On Error GoTo FIM
    Dim iQtdePontoVirgula As Integer
    Dim sCodicoesTemp As String
    Dim iArray As Integer
    Dim sParte1 As String
    Dim ArrayCondicoes()
   
    If IsNumeric(Right(txtCondicoesDePagamentos.Text, 1)) Then
        txtCondicoesDePagamentos.Text = txtCondicoesDePagamentos.Text & ";"
    End If
   
    iQtdePontoVirgula = 0
    For i = 1 To Len(txtCondicoesDePagamentos.Text)
        If Not IsNumeric(Mid(txtCondicoesDePagamentos.Text, i, 1)) Then
            iQtdePontoVirgula = iQtdePontoVirgula + 1
        End If
        sCodicoesTemp = sCodicoesTemp & Mid(txtCondicoesDePagamentos.Text, i, 1)
    Next
    If iQtdePontoVirgula <> 0 Then
        ReDim ArrayCondicoes(iQtdePontoVirgula)
    End If
    iArray = 1
    For i = 1 To Len(txtCondicoesDePagamentos.Text)
        If Not IsNumeric(Mid(txtCondicoesDePagamentos.Text, i, 1)) Then
            ArrayCondicoes(iArray) = sParte1
            iArray = iArray + 1
            sParte1 = ""
        Else
            sParte1 = sParte1 & Mid(txtCondicoesDePagamentos.Text, i, 1)
        End If
    Next
   
    If Right(txtCondicoesDePagamentos.Text, 1) = ";" Then
        txtCondicoesDePagamentos.Text = Left(txtCondicoesDePagamentos.Text, Len(txtCondicoesDePagamentos.Text) - 1)
    End If
   
    For i = 1 To iQtdePontoVirgula
        If i > 1 Then
            If (CDbl(ArrayCondicoes(i)) < CDbl(ArrayCondicoes(i - 1))) Or (CDbl(ArrayCondicoes(i)) = CDbl(ArrayCondicoes(i - 1))) Then
                If CDbl(ArrayCondicoes(i)) < CDbl(ArrayCondicoes(i - 1)) Then
                    Call Sub_ParamMsgBox(("As condições de pagamentos devem ser em ordem crescente." _
                    & vbCrLf & vbCrLf & "Exemplo : 10;20;30;90" _
                    & vbCrLf & vbCrLf & "Obs: O valor " & ArrayCondicoes(i - 1) & " é menor que " & ArrayCondicoes(i)) & ".", False, False, True, False, True, False, False): Pub_aFoco = 3: frmMsgBox.Show 1
                    txtCondicoesDePagamentos.SetFocus
                Else
                    Call Sub_ParamMsgBox(("As condições de pagamentos devem ser em ordem crescente." _
                    & vbCrLf & vbCrLf & "Exemplo : 10;20;30;90" _
                    & vbCrLf & vbCrLf & "Obs: O valor " & ArrayCondicoes(i - 1) & " esta repetido."), False, False, True, False, True, False, False): Pub_aFoco = 3: frmMsgBox.Show 1
                    txtCondicoesDePagamentos.SetFocus
                End If
                Exit Sub
            End If
        End If
    Next
FIM:
    If Err Then
        Call Sub_ParamMsgBox(("E R R O !" & vbCrLf & vbCrLf & "Número.......: " & Format(Err.Number) & vbCrLf & "Mensagem..: " & Error), False, False, True, False, True, False, False):  Pub_aFoco = 3: frmMsgBox.Show 1
        Err.Clear
    End If
End Sub
 
'---------------------
 
 
Isto já vai te dar uma idéia e acho que com as devidas alterações lhe será útil.
Neste exemplo estou validando somente o ; você terá de colocar um or e validar o -
   
Tamanini
não registrado
ENUNCIADA !
Postada em 07/08/2004 13:53 hs   
Vlw, deu para ter uma boa idéia mesmo, mas ainda estou com dúvida!
No lostfocus do textbox terei que fazer um código separado para o traço(-), já que não posso ter valores como:
2-
3-7-9
E ainda tenho que saber quando é para ser impressos do registro x até(-) y e apenas(;) o registro x, como:
3-5;9;34-47;50-53;
5;9;19-23;27;
 
[]'s,
 
Marcelo Tamanini
   
Página(s): 1/6      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página