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
|
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?
|
|
|
|
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
|
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
|
|
|
|