Ir para conteúdo
Fórum Script Brasil

new_rayderss

Membros
  • Total de itens

    57
  • Registro em

  • Última visita

Posts postados por new_rayderss

  1. funcionooo :P

    Achei que o find seguia a mesma idéia do filter, e sabe que olhando aqui, o problema todo foi porque coloquei como click :P

    O que você falo esta certíssimo. Mas aprendi bastante com isso e um novo método para enviar dados de um form para outro.

    E quanto a ocx eu já estou pesquisando sobre isso, achei um tuto do marcoratti sobre o inno vou dar uma lida nele. Criar um setup resolve tudo mesmo, mais queria aprender o batch pelo exemplo de agora eu passo o projeto para alguém no vb ainda sem estar compilado aí a pessoa não tem a ocx ao invés dela registrar, já clicar batch e pronto, evitando possível erro do receptor erra no caso a sintaxe ou não saber o que fazer. :P Estou pesquisando sobre isso tb ^^

    obrigado pela força amigo!!

  2. Bom eu não tenho muito conhecimento em relação a esse banco de dados neste momento, mais creio que não irá influencia.

    Tipo se você estiver usando um componente para conectar um banco de dados (DataControl, Adodc etc.) ou ainda mesmo estiver fazendo tudo via código.

    você add um componente e deixa visible como false. Aí quando você for salvar você chama o update dele tb.

    Exemplo: Um componente data com o nome 'Data1' esse você vinculo com os objetos, beleza. Aí um novo data com o nome Data2.

    Data2.recordset.fields(0) = Data1.recorset.fields(0)
    .
    .
    .
    Data2.recordset.fields(10) = Data1.recorset.fields(8)

    E faz do mesmo jeito até chega no último campo. lembre-se que os números são exemplos, verifica no seu banco de dados a ordem de cada um e não se esqueça que começa pelo 0(zero).

    Se for via código, a idéia é semelhante, só que você não precisa declarar elas num módulo (Variáveis Globais), já que você está usando como apenas um objetivo. Declara no próprio form onde você quer fazer tal ação.

    Qualquer dúvida pode postar. ^^

  3. ???

    você esqueceu de informar qual o nome do campo que você define se é Usuário ou Administrador.

    Mais suponhamos que seja Acesso.

    Então você faz um módulo caso você não tenha ainda no seu projeto. E declare uma variável global.

    Public Acesso As String
    Aí no form do login do seu projeto você faz assim..
    Acesso = .Fields(?) 'Substitua ? pelo campo que for no seu banco de dados.
    Exemplo: Eu tenho Usuario, Senha e Acesso no seu banco de dados. Sabendo que começa por zero então no meu exemplo o Acesso será correspondente ao 2. Depois disso, vamos para o MDIForm..
    Private Sub MDIForm_Activate()
    Select Case Acesso
    Case "Usuario"
    ??.enabled = false 
    ??.enabled = false
    Case "Administrador"
    End Select
    End Sub

    Substitua ?? pelo nome do seu menu ou submenu ou qualquer outro objeto que possua a propriedade enabled. Claro que não precisa ficar preso só nisso, são exemplos o intuito desse meu exemplo é para você entende como funciona a permissão. E com mais pratica você verá que é apenas um exemplo de vários que você irá ver por aí.

    beleza? qualquer tipo de dúvida pode postar. ^^

  4. Kuroi você não sabe como mudou o projeto :P aquele lance no momento tirei por questão de teste. Mas estou usando ele para isso agora. observe os forms(ConAnimal e frmAnimal) que deixei aberto que você vai entender.

    E não chamo como vbmodal ou 1 porque o esquema de chamar outro form da erro.

    não está funcionando ainda, vou deixar o projeto que está mais atualizado.

    Aqui esta o projeto conto com sua ajuda ;)

    Projeto

  5. No form que consulta os animais.

    Private Sub dbgAnimal_Click()
    If txtCodCli.Text = "" Then
    MsgBox "Informe o código do cliente", vbOKOnly, "Info da Consulta"
    Exit Sub
    ElseIf Data1.Recordset.RecordCount < 1 Then
    MsgBox "Não há cliente para editar", vbOKOnly, "Info da Consulta"
    Exit Sub
    Else
    dbgAnimal.Col = 3
    frmAnimal.lblAux2.Caption = Data1.Recordset.Fields(3).Value
    frmAnimal.lblCliChama.Caption = "x"
    frmAnimal.Show
    End If
    End Sub
    No form do cadastro do Animal, no active.
    Private Sub Form_Activate()
    If lblCliChama.Caption = "x" Then
    Data1.Recordset.FindFirst "CodigoDoAnimal = " & lblAux2.Caption
    cmdEditar_Click
    Unload ConAnimal
    End If
    End Sub

    Eu tinha feito esse esquema, só que não funciono. Fiz o esquema da label daquele jeito mesmo que você me ensino, mas não obtive sucesso. :(

  6. hm agora não está dando nenhum erro, mais não está filtrando o resultado, ele abre o primeiro registro existente, ou seja estiver filtrado um cliente cujo codigo é 2 ele não considera nem isso e abre o primeiro cujo código é 1.

    Tentei colocar o Find em um e no outro e nada.

    o que pode esta acontecendo?

  7. Sério!! conferi o banco de dados e está certinho.

    quanto ao findfirst eu coloquei assim, no form Cadastro Do Animal

    If lblCliChama.Caption = "x" Then
    cmdEditar_Click
    Data1.Recordset.FindFirst ("CodigoDoAnimal like '*" & Verificar2)
    Unload ConAnimal
    End If

    só que apresenta esse erro, 3077 : Syntax error in String expression.

  8. Sim ele continua mostrando o 1° e em relação a isso..

    não precisa ficar mudando de coluna tb se você for usar esse codigo. mas o q acontece?? ele continua mostrando o primero??

    ai acho q o problema então é otro. tipo olhei aqui no projeto q você tinha me mandado antes. e no load do frmAnimal tem esse codigo aqui:

    Data1Animal.DatabaseName = App.Path & "\BD\db2.mdb"
    Data1Animal.RecordSource = "Animais"
    Data1Animal.RecordsetType = 0
    o q imagino q teja acontecendo é q você seta os dados no textbox, mas assim q o load é chamado, ele carrega o data e vincula com os controles, substituindo o texto q tava antes. alem do mais, se os controles do frmAnimal tão vinculados com o controle data, acho q seria meio errado você editar os textos não?? o mais certo não seria procurar o registro?? exemplo, se o formulario ta apontando pro registro 1. e você edita os textboxs e escreve o mesmo texto do registro 2. ele continua apontando pro registro 1. você ta na verdade editando os dados do registro 1 e não apontando pro 2. alias, isso ta acontecendo na sua consulta de clientes no projeto q eu tenho aqui, não sei se você corrigiu. pode fazer um teste ai. se você tiver dois clientes, abra o formulario e ele vai apontar pro primero, certo?? clica localizar e no form de consulta, selecione o registro 2. quando você voltar no form do cliente, vai ver todas as informacoes do registro 2, certo?? beleza, então clica em editar e depois gravar. abre la o seu banco. você vai ver agora... você tem 2 registros 2 e nenhum registro 1. porque isso acontece?? porque você não muda o pontero do recordset. so ta mudando os textos, entendeu??
    .. graças aó santo pai não está acontecendo :rolleyes:
    o mais certo q você teria q fazer é: guardar somente o codigo do animal quando ele selecionar no form de consulta. você pode fazer isso com uma variavel global ou tipo igual aquele label q você fez q você punha um x lembra?? so q ai você guarda o codigo no label. mas não pode vincular o label com o data. e depois você usa um findfirst ou um seek pra encontrar o registro de acordo com o codigo, entendeu??
    e quanto a essa idéia é eu fiz tudo só que não sei como posso montar esse findfirst..
    Public corrente2, Per, Pergunta, Usu, Form, Style, [b]Verificar2[/b] As String
    verificar2 é a variável, optei usar variavel porque vou utiliza-la em outro forms que tem a idéia parecida. Aí no fomulário do ConAnimal (onde eu faço a procura do animal)
    Private Sub dbgAnimal_Click()
    If txtCodCli.Text = "" Then
    MsgBox "Informe o código do cliente", vbOKOnly, "Info da Consulta"
    Exit Sub
    ElseIf Data1.Recordset.RecordCount < 1 Then
    MsgBox "Não há cliente para editar", vbOKOnly, "Info da Consulta"
    Exit Sub
    Else
    Verificar2 = 0
    dbgAnimal.Col = 3
       Verificar2 = Data1.Recordset.Fields(3).Value
    frmAnimal.lblCliChama.Caption = "x"
    frmAnimal.Show
    End If
    End Sub
    coloquei como está aí encima. Agora falta o findfirst eu busco aqui nesse ou no do Cadastro do Animal ? e outra coisa eu estou utilizando a ídeia que você me deu. O data1animal esta vinculado com os objetos, e lembra que não podia fazer uma busca no mesmo tempo que peço para editar?
    Private Sub Form_Load()
    Data1Animal.DatabaseName = App.Path & "\db2.mdb"
    Data1Animal.RecordSource = "Animais"
    Data1Animal.RecordsetType = 1
    Data1.DatabaseName = App.Path & "\db2.mdb"
    Data1.RecordSource = "Animais"
    Data1.RecordsetType = 1
    .
    .
    End Sub

    Agora lembro porque setava

    Set frmAnimal.Data1.Recordset = Data1.Recordset.OpenRecordset

    você que me deu essa idéia em alguns posts anteriores que estão neste tópico mesmo.

  9. If txtCodCli.Text = "" Then
    MsgBox "Informe o código do cliente", vbOKOnly, "Info da Consulta"
    Exit Sub
    ElseIf Data1.Recordset.RecordCount < 1 Then
    MsgBox "Não há cliente para editar", vbOKOnly, "Info da Consulta"
    Exit Sub
    Else
    dbgAnimal.Col = 0
       frmAnimal.lblCodCli2.Caption = Data1.Recordset.Fields(0).Value
    dbgAnimal.Col = 1
       frmAnimal.cboNomeCli.Text = Data1.Recordset.Fields(1).Value
    dbgAnimal.Col = 2
       frmAnimal.txtNomeAnim.Text = Data1.Recordset.Fields(2).Value
    dbgAnimal.Col = 3
       frmAnimal.lblCodAnimal2.Caption = Data1.Recordset.Fields(3).Value
    dbgAnimal.Col = 4
       frmAnimal.txtRaca.Text = Data1.Recordset.Fields(4).Value
    dbgAnimal.Col = 5
       frmAnimal.cboPorte.Text = Data1.Recordset.Fields(5).Value
    dbgAnimal.Col = 6
       frmAnimal.txtCor.Text = Data1.Recordset.Fields(6).Value
    dbgAnimal.Col = 7
       frmAnimal.txtPeso.Text = Data1.Recordset.Fields(7).Value
    dbgAnimal.Col = 8
       frmAnimal.cboTipo.Text = Data1.Recordset.Fields(8).Value
    dbgAnimal.Col = 9
       frmAnimal.txtIdade.Text = Data1.Recordset.Fields(9).Value
    dbgAnimal.Col = 10
       frmAnimal.cbGrupo.Text = Data1.Recordset.Fields(10).Value
    dbgAnimal.Col = 11
       frmAnimal.txtMatri.Text = Data1.Recordset.Fields(11).Value
    dbgAnimal.Col = 12
       frmAnimal.txtRenova.Text = Data1.Recordset.Fields(12).Value
    frmAnimal.lblCliChama.Caption = "x"
    frmAnimal.Show
    End If

    Kuroi ainda não foi, tentei colocando o nome do campo, tentei colocando os números, tentei tirando a propriedade value, tentei utilizando isso

    'Set frmAnimal.Data1.Recordset = Data1.Recordset.OpenRecordset

    e não foi.

  10. Primeiro desculpa que copiei o código do clique errado. E sobre o set eu pensava que era necessário para abrir os dados, na verdade foi uma confusão minha, testando sem ele vi que não precisa.

    agora explicando o evento do clique é assim, cada informação na coluna do dbgrid vai ser enviada para determinado campo do formulário do animal.

    O problema é que ele não reconhece a linha que cliquei, filtrei usando o código do cliente, esse cliente tem 2 animais. E quero editar o animal cujo código é 4, porém mesmo clicando na segunda linha ele abre a primeira linha.

    Ps: O dbgrid é só para consultar os resultados eu não posso modificar na nele é apenas para visualizar, caso queira modificar eu clico encima e aí ocorre o envio das informações para o formulário correspondente, no caso o do Cadastro do Animal.

    melhoro?

  11. Private Sub txtCodAnim_Validate(Cancel As Boolean)
    Data1.Refresh
    Data1.Recordset.Filter = "CodigoDoAnimal = " & txtCodAnim.Text & " And Data = (Select Max(Data) From Servico Where CodigoDoAnimal = " & txtCodAnim.Text & ")"
        If Not txtCodAnim.Text = Empty Then
        Set Data1.Recordset = Data1.Recordset.OpenRecordset
        Else
        End If
    End Sub
    kuroi funciono a segunda tentativa!! Obrigado. E sobre o código só foi para teste mesmo, mudei para o certo. == Mas testando um pouco mais essas minhas consultas reparei o seguinte.. Na consulta onde procuro determinado Animal, eu utilizo o codigo do cliente, porque o animal não faz cadastro e sim o cliente. Sendo que o cliente pode ter 2, 3 ou sei lá quantos. Bom 2 podem ser do clubinho aí quando filtro o cliente na hora que eu clica para abrir o cadastro ele só abre o primeiro registro. Se não consegui explicar direito, creio que a imagem vai ajudar. conclianim.png filtrei usando o código do cliente, quero abrir o cadastro do animal cujo código dele é 4. Porém ele só pega o primeiro cadastro mesmo que clique encima do segundo. esse é o código para o clique, ele só funciona quando o usuario filtrar primeiro, caso ele não faça isso só ira aparecer a primeira msg, caso ele filtre e não houver resultado mostra a segunda msg, se houver resultado chega no ponto que falei. Como posso resolver esse problema?
    Private Sub dbgAnimal_Click()
    If txtCodCli.Text = "" Then
    MsgBox "Informe o código do cliente", vbOKOnly, "Info da Consulta"
    Exit Sub
    ElseIf Data1.Recordset.RecordCount < 1 Then
    MsgBox "Não há cliente para editar", vbOKOnly, "Info da Consulta"
    Exit Sub
    Else
    dbgAnimal.Col = 0
       frmAnimal.lblCodCli2.Caption = dbgAnimal.Text
    dbgAnimal.Col = 1
       frmAnimal.cboNomeCli.Text = dbgAnimal.Text
    dbgAnimal.Col = 2
       frmAnimal.txtNomeAnim.Text = dbgAnimal.Text
    dbgAnimal.Col = 3
       frmAnimal.lblCodAnimal2.Caption = dbgAnimal.Text
    dbgAnimal.Col = 4
       frmAnimal.txtRaca.Text = dbgAnimal.Text
    dbgAnimal.Col = 5
       frmAnimal.cboPorte.Text = dbgAnimal.Text
    dbgAnimal.Col = 6
       frmAnimal.txtCor.Text = dbgAnimal.Text
    dbgAnimal.Col = 7
       frmAnimal.txtPeso.Text = dbgAnimal.Text
    dbgAnimal.Col = 8
       frmAnimal.cboTipo.Text = dbgAnimal.Text
    dbgAnimal.Col = 9
       frmAnimal.txtIdade.Text = dbgAnimal.Text
    dbgAnimal.Col = 10
       frmAnimal.cbGrupo.Text = dbgAnimal.Text
    dbgAnimal.Col = 11
       frmAnimal.txtMatri.Text = dbgAnimal.Text
    dbgAnimal.Col = 12
       frmAnimal.txtRenova.Text = dbgAnimal.Text
    frmAnimal.lblCliChama.Caption = "x"
    frmAnimal.Show
    End If
    End Sub

  12. Private Sub txtCodAnim_Validate(Cancel As Boolean)
    Data1.Refresh
    'Data1.Recordset.Filter = "CodigoDoCliente = " & txtCodAnim.Text
    SQL = "Select * From Servico Where CodigoDoCliente = " & txtCodAnim & " And Data = (Select Max(Data) From Servico Where CodigoDoCliente = " & txtCodAnim & ")"
        If Not txtCodAnim.Text = Empty Then
        Set Data1.Recordset = Data1.Recordset.OpenRecordset
        Else
        End If
    End Sub

    eu coloquei assim, só que ele não seleciona o resultado. Esse Max no data é isso mesmo?

    olha essa imagem, o cliente marco duas consultas, eu queria pegar a última.

    cons_cnv.png

  13. Bom a 1° dúvida consegui resolver, não sei explicar porque ele só pegava o dia. Era algo assim eu digitava 28/02/2008 aí dava certo, referente ao dia, hoje são 27 se eu colocar 27/01/2008, aceitava. Mas consegui resolver e implementei nessa mesma rotina.


    'Verificador de data completo, onde ele ver o máximo de dias que cada mês possui.
    'Verifica também se a data informada é ultrapassada.
    Public Function VerificaData(Maskara As TextBox)

    Dim Data As String
    Dim Dia As String
    Dim Mes As String
    Dim Ano As String
    Dim Fevereiro As Integer

    Data = Maskara.Text
    Dia = Mid(Data, 1, 2)
    Mes = Mid(Data, 4, 2)
    Ano = Mid(Data, 7, 4)

    'Verificando os meses que podem ter até o dia 31
    If (Mes = 1) Or (Mes = 3) Or (Mes = 5) Or (Mes = 7) Or (Mes = 8) Or (Mes = 10) Or (Mes = 12) Then
    If (Dia < 1) Or (Dia > 31) Then
    MsgBox "Dia inválido", vbCritical + vbOKOnly, "Erro no campo"
    Maskara.SetFocus
    Exit Function
    End If
    End If

    'Verificando o mes de fevereiro
    If (Mes = 2) Then
    If (Dia > 30) Then
    MsgBox "O mês de fevereiro vai até dia 29", vbCritical + vbOKOnly, "Erro no campo"
    Maskara.SetFocus
    Exit Function
    End If
    Fevereiro = Ano Mod 4
    If (Fevereiro <> 0) And (Dia = 29) Then
    MsgBox "Dia inválido, o mês é fevereiro e não é ano bissexto", vbCritical + vbOKOnly, "Erro no campo"
    Maskara.SetFocus
    Exit Function
    End If
    End If

    'Verificar os meses que não podem ter dia até 31 e sim até 30
    If (Mes = 2) Or (Mes = 4) Or (Mes = 6) Or (Mes = 9) Or (Mes = 11) Then
    If (Dia < 1) Or (Dia > 30) Then
    MsgBox ("Dia inválido, o mês é só até o dia 30"), vbCritical + vbOKOnly, "Erro no campo"
    Maskara.SetFocus
    Exit Function
    End If
    End If

    'Verificar os meses 1 A 12
    If (Mes < 1) Or (Mes > 12) Then
    MsgBox "Mês invalido", vbCritical + vbOKOnly, "Erro no campo"
    Maskara.SetFocus
    Exit Function
    End If

    'Verifica se o ano já passou, senão caso o ano seja o atual verifica se a dia _
    ou mês são ultrapassados.
    If (Ano < Year(Date)) Then
    MsgBox "Data Ultrapassada", vbCritical + vbOKOnly, "Erro no campo"
    Maskara.Text = ""
    Maskara.SetFocus
    ElseIf (Ano = Year(Date)) And ((Mes < Month(Date)) Or (Dia < Day(Date))) Then
    MsgBox "Data Ultrapassada", vbCritical + vbOKOnly, "Erro no campo"
    Maskara.Text = ""
    Maskara.SetFocus
    Exit Function
    End If
    End Function
    [/codebox]

    E no segundo caso, é que eu queria que ficasse alternando de Bom Dia ou Boa Tarde ou Boa Noite para Seja Bem Vindo.

    Só que estava colocando no load do form e assim não conseguiria. Aí depois de você ter postado para colocar o código no timer eu pensei eu posso usar o outro para fazer isso. Aí deu certo!!

    [code]Private Sub Timer1_Timer() MDIForm1.StatusBar1.Panels(4).Text = Format(Now, "HH:MM:SS") MDIForm1.StatusBar1.Panels(4).ToolTipText = Format(Date, "long date") 'Saúda o usuário conforme a hora do dia. If Time >= "00:00:00" And Time < "11:59:59" Then     MDIForm1.StatusBar1.Panels(1).Text = "Bom Dia" ElseIf Time >= "12:00:00" And Time < "17:59:59" Then     MDIForm1.StatusBar1.Panels(1).Text = "Boa Tarde" Else     MDIForm1.StatusBar1.Panels(1).Text = "Boa Noite" End If End Sub Private Sub Timer2_Timer() If Time >= "00:00:00" And Time < "23:59:59" Then     MDIForm1.StatusBar1.Panels(1).Text = "Seja Bem Vindo!!!" End If End Sub[/code]

    o Timer2 eu coloquei o intervalo como 10000, aí fica mudando no caso agora Boa Noite para Seja Bem Vindo!!!.

    Espero que minha dúvidas ajudem outra pessoas também!! E obrigado kuroi pela força!!

  14. Ainda não funciono mais ta valendo a dica, vou da uma reformulada nos meus ifs :P Mas para não perder a viagem

    tenho duas perguntas.. a 1° é eu digitei uma data em um textbox como posso estipular se ele é menor que a data do sistema?

    "if txtData.Text < Date then" eu achava que era isso só que ele só reconhece os dias não se se é por causa da verificação que estou usando


    Public Function VerificaData(Maskara As TextBox)

    Dim Data As String
    Dim Dia As String
    Dim Mes As String
    Dim Ano As String
    Dim Fevereiro As Integer

    Data = Maskara.Text
    Dia = Mid(Data, 1, 2)
    Mes = Mid(Data, 4, 2)
    Ano = Mid(Data, 7, 4)

    'Verificando os meses que podem ter até o dia 31
    If (Mes = 1) Or (Mes = 3) Or (Mes = 5) Or (Mes = 7) Or (Mes = 8) Or (Mes = 10) Or (Mes = 12) Then
    If (Dia < 1) Or (Dia > 31) Then
    MsgBox "Dia inválido", vbCritical + vbOKOnly, "Erro no campo"
    Maskara.SetFocus
    Exit Function
    End If
    End If

    'Verificando o mes de fevereiro
    If (Mes = 2) Then
    If (Dia > 30) Then
    MsgBox "O mês de fevereiro vai até dia 29", vbCritical + vbOKOnly, "Erro no campo"
    Maskara.SetFocus
    Exit Function
    End If
    Fevereiro = Ano Mod 4
    If (Fevereiro <> 0) And (Dia = 29) Then
    MsgBox "Dia inválido, o mês é fevereiro e não é ano bissexto", vbCritical + vbOKOnly, "Erro no campo"
    Maskara.SetFocus
    Exit Function
    End If
    End If

    'Verificar os meses que não podem ter dia até 31 e sim até 30
    If (Mes = 2) Or (Mes = 4) Or (Mes = 6) Or (Mes = 9) Or (Mes = 11) Then
    If (Dia < 1) Or (Dia > 30) Then
    MsgBox ("Dia inválido, o mês é só até o dia 30"), vbCritical + vbOKOnly, "Erro no campo"
    Maskara.SetFocus
    Exit Function
    End If
    End If

    'Verificar os meses 1 A 12
    If (Mes < 1) Or (Mes > 12) Then
    MsgBox "Mês invalido", vbCritical + vbOKOnly, "Erro no campo"
    Maskara.SetFocus
    Exit Function
    End If
    [/Codebox]

    Eu tenho no load de um MDIForm1

    [code]'Saúda o usuário conforme a hora do dia. If Time >= "00:00:00" And Time < "11:59:59" Then     MDIForm1.StatusBar1.Panels(1).Text = "Bom Dia" ElseIf Time >= "12:00:00" And Time < "17:59:59" Then     MDIForm1.StatusBar1.Panels(1).Text = "Boa Tarde" Else     MDIForm1.StatusBar1.Panels(1).Text = "Boa Noite" End If[/code]

    eu queria que ficasse alternando para Seja Bem Vindo! e a saudação do determinado tempo. Eu tenho já tenho dois componentes Timer, só que não sei como posso estipular esse periodo.

    obrigado desde já!!

  15. Eu aqui denovo com consulta :P

    Bom preciso saber como posso fazer o seguinte exemplo..

    tal cliente j realizou 3 serviços

    24/05/2008, 25/07/2008, 10/10/2008

    aí realizo a pesquisa apenas pedindo o codigo, sendo que no resultado da pesquisa só quero as informações do serviço mais recente ou seja a última realizada.

    como faço isso?

  16. Vlw cara funciono essa parte direitinho!

    Mas tem uma coisa que não estou conseguindo resolver...

    ' Específico do Cep - ínicio
    Private Sub txtCep_Change()
    If txtCep.Text = "" Then
    txtCep.MaxLength = 8
    ElseIf lblAux.Caption = "V" Then
    txtCep.MaxLength = 10
    End If
    If Len(txtCep.Text) = 8 And txtCep.MaxLength = 8 Then
    txtCidade.SetFocus
    End If
    End Sub
    
    Private Sub txtCep_LostFocus()
    If lblAux.Caption = "V" Then
    Else
        If Len(txtCep) < 8 And txtCep.MaxLength = 8 Then '(InStr(txtCep, ".") <> 1) And (InStr(txtCep, "-") <> 1) Then
            txtCep.SetFocus
            If Not txtNome = Empty Then
            MsgBox "Cep incompleto do profissional " & txtNome & ".", vbOKOnly, "Campo Incompleto"
            txtCep.SetFocus
            Exit Sub
            Else
            MsgBox "Cep incompleto do profissional.", vbOKOnly, "Campo Imcompleto"
            txtCep.SetFocus
            Exit Sub
            End If
        ElseIf (InStr(txtCep, ".") <> 1) And (InStr(txtCep, "-") <> 1) And txtCep.MaxLength = 8 Then
        txtCep.MaxLength = 10
        txtCep = Format(txtCep, "00\.000\-000")
        End If
    
    '===============
    
        If (txtCep.MaxLength = 10) And (InStr(txtCep, ".") <> 1) And (InStr(txtCep, "-") <> 1) And Not (IsNumeric(txtCep) = 8) _
        Or (txtCep.MaxLength = 10) And (InStr(txtCep, ".") <> 1) And (InStr(txtCep, "-") <> 0) And Not (IsNumeric(txtCep) = 9) _
        Or (txtCep.MaxLength = 10) And (InStr(txtCep, ".") <> 0) And (InStr(txtCep, "-") <> 1) And Not (IsNumeric(txtCep) = 9) Then
        txtCep = Format(txtCep, "00\.000\-000")
        Else 
        MsgBox "O campo foi anulado informe-o novamente", vbCritical + vbOKOnly, "Campo Anulado"
        txtCep.SetFocus
        txtCep.Text = ""
        Exit Sub
        End If
    End If
    End Sub
    
    '===============
    
    Private Sub txtCep_KeyPress(KeyAscii As Integer)
    If lblAux.Caption = "V" Then
    Else
    If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 Then
    KeyAscii = 0
    MsgBox "Digite apenas números", vbInformation, "Info do CEP"
    End If
    End If
    End Sub
    ' Específico do Cep - fim

    "'===============" depois dessa linha que acontece o problema. Ele só esta lendo aqui ..

    If (txtCep.MaxLength = 10) And (InStr(txtCep, ".") <> 1) And (InStr(txtCep, "-") <> 1) And Not (IsNumeric(txtCep) = 8) _

    Or (txtCep.MaxLength = 10) And (InStr(txtCep, ".") <> 1) And (InStr(txtCep, "-") <> 0) And Not (IsNumeric(txtCep) = 9) _

    depois ele não considera até aqui "'==============="

    não consego compreender.

  17. "If Len(txtCep) < 8 Then" como vou agrupar isso com essa linha? porque eu tentei e não deu muito certo. Tipo essa parte queria ativar só quando não tivesse nem ponto e nem o traço.

    E o right funciono legal.

    e uma outra coisinha..

    If KeyAscii < 47 Or KeyAscii > 57 Then
    KeyAscii = 0
    MsgBox "Digite apenas números!", vbInformation, "Info da Identidade"
    End If

    esse código eu achei ai na internet e add esse msgbox, só que tem um problema, eu não queria que teclas como backspace e space ficasse bloqueada. porque só aceita números, tem como especificar alguma teclas?

  18. Ops isso eu coloquei no código sim, acabei apagando quando coloquei no tópico.

    Tipo existe um jeito de ver se a pontos na caixa de texto? e tb ver se apagaram o último n°?

    Deixa explicar o que pensei..

    No primeiro if eu queria que ele fosse ativado só se não tivesse pontos ou traço.

    E no if que tem a msg "..campo anulado.." que ele reconhecesse o último número, porque ele só não da a msg quando eu apago o último n°.

    deu para entender?

×
×
  • Criar Novo...