BLOQUEIO DE TEXT BOX

FRATA 21/09/2016 21:55:39
#467250
Prezados colegas; boa noite!
Estou enviando abaixo o código de um pequeno aplicativo de cadastro de clientes.
Acontece que quando clico em novo; ele deveria abrir o formulário com todos os
campos bloqueados, e só ficarem desbloqueados depois de eu confirmar o cadastro
de um noco cliente. Porém ele só abre bloqueado os dois primeiros campos, que são:
nome e endereço.
Será que alguém sabe me dizer o que está acontecendo com meu código.
Antecipadamente agradeço pela atenção.

[ô]declarando os objetos necessários
[ô]command e recordset para interagir com o BD
[ô]e declarando variavel para utilizar msgbox
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim vinfo As Integer

Private Sub Command1_Click()
If MsgBox([Ô]Deseja sair do programa ?[Ô], vbYesNo, [Ô]CADASTRO DE CLIENTES[Ô]) = vbYes Then
End
Else

End If







End Sub

Private Sub Command3_Click()
If MsgBox([Ô]Você deseja sair do programa ?[Ô], vbYesNo, [Ô]Confirmação[Ô]) = vbYes Then
End
Else

End If
End Sub

[ô]chamando a sub que carrega a lista com os dados do BD
Private Sub Form_Load()
preenche_list


End Sub

[ô]descarregando os objetos command e recordset quando
[ô]fechar o form e limpando os arquivos temp criados
Private Sub Form_Unload(Cancel As Integer)
Set cmd = Nothing
Set rs = Nothing
Set cnnreceitas = Nothing

If Dir([Ô]c:*.tmp[Ô]) <> [Ô][Ô] Then
On Error Resume Next
Kill [Ô]c:*.tmp[Ô]
End If

End Sub

[ô]quando der duplo click na lista
[ô]filtra as informações no BD e joga nos campos
[ô]para alterar
Private Sub List_receitas_DblClick()
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
With rs
.Filter = [Ô] nome like [ô][Ô] & List_receitas.Text & [Ô][ô][Ô]
Frame_cadastro.Visible = True
Frame_Localizar.Visible = False
Toolbar1.Visible = False
Toolbar2.Visible = True
travar_campos
Text_cod = !cod
Text_nome = !nome
Text_endereco = !endereco
Text_numero = !numero
Text_complemento = !complemento
Text_bairro = !bairro
Text_cidade = !cidade
Text_cep = !CEP
Text_estado = !estado
Text_obs = !obs
Text_cpf = !cpf
Text_rg = !rg
Text_cnpj = !cnpj
Text_ie = !ie
Text_wa = !wa
Text_ep = !ep
Text_es = !es
Text_codtel = !codtel
Text_tel = !tel
Text_codcel = !codcel
Text_cel = !cel



End With
End Sub

[ô]codigo que faz a busca na List quando é digitado
[ô]na text
Private Sub Text1_Change()
On Error GoTo trataerro

With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
With rs
.Filter = [Ô] nome like [ô]%[Ô] & Text1.Text & [Ô]%[ô][Ô]
If .BOF And .EOF Then
MsgBox ([Ô]Sequencia de caracteres não encontrada na lista[Ô])
Text1 = [Ô][Ô]

Else
List_receitas = rs!nome
End If
End With

trataerro:

With Err
If .Number <> 0 Then
.Number = 0

End If
End With

End Sub

[ô]faz as alterações entre as toolbar e os frames
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Index
Case 1
Text1 = [Ô][Ô]
Toolbar1.Visible = False
Toolbar2.Visible = True
Frame_cadastro.Visible = True
Frame_Localizar.Visible = False
Case 2
Frame_Localizar.Visible = True

End Select
End Sub

[ô]chama os procedimentos de gravar, inserir ou retornar
[ô]para o outro frame
Private Sub Toolbar2_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Index
Case 1
NOVO
Case 2
Gravar
Case 3
If Text_cod.Text <> [Ô][Ô] Then
liberar_campos
Else
MsgBox ([Ô]Escolha um cadastro na lista através do menu Localizar, dê duplo click no cadastro a ser alterado[Ô])
End If
Case 4
excluir
Case 5
Toolbar2.Visible = False
Toolbar1.Visible = True
Frame_cadastro.Visible = False
limpar_campos
preenche_list
End Select
End Sub

[ô]subprocedimento que prepara a inserção de um novo
[ô]registro no BD
Private Sub NOVO()


vinfo = MsgBox([Ô]Deseja inserir novo cadastro?[Ô], vbYesNo + vbQuestion, [Ô]CADASTRO DE CLIENTES[Ô])
If vinfo = vbYes Then



With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select max(cod) as Mcod from receitas[Ô]
Set rs = .Execute
End With
With rs
If IsNull(rs!Mcod) Then
Text_cod.Text = 1
Else
limpar_campos
preenche_list
Text_cod.Text = !Mcod + 1
End If



End With
Text_nome.Locked = False
Text_endereco.Locked = False
Text_numero.Locked = False
Text_complemento.Locked = False
Text_bairro.Locked = False
Text_cidade.Locked = False
Text_cep.Locked = False
Text_estado.Locked = False
Text_obs.Locked = False
Text_cpf.Locked = False
Text_rg.Locked = False
Text_cnpj.Locked = False
Text_ie.Locked = False
Text_wa.Locked = False
Text_ep.Locked = False
Text_es.Locked = False
Text_wa.Locked = False
Text_codtel.Locked = False
Text_tel.Locked = False
Text_codcel.Locked = False
Text_cel.Locked = False

Text_nome.SetFocus
End If
End Sub

[ô]subprocedimento para gravar um registro novo
[ô]ou alterar um registro existente
Private Sub Gravar()
[ô]se houver campos em branco informa ao usuario
If Text_nome.Text = [Ô][Ô] Or _
Text_endereco.Text = [Ô][Ô] Then
MsgBox ([Ô]é necessário cadastrar nome e endereço, verifique[Ô])

Else [ô]se não, faz a busca no BD

With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
With rs
.Filter = [Ô]cod = [Ô] & Text_cod.Text & [Ô] [Ô]
If .BOF And .EOF Then [ô]se não achar identifica
[ô]como inclusão

With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]insert into receitas[Ô] & _
[Ô](cod, nome, endereco, numero, complemento, bairro, cidade, cep, estado, obs, cpf, rg,cnpj, ie, wa, ep, es, codtel, tel, codcel, cel )values([ô][Ô] & _
Text_cod.Text & [Ô][ô],[ô][Ô] & _
Text_nome & [Ô][ô],[ô][Ô] & _
Text_endereco.Text & [Ô][ô],[ô][Ô] & _
Text_numero.Text & [Ô][ô],[ô][Ô] & _
Text_complemento.Text & [Ô][ô],[ô][Ô] & _
Text_bairro.Text & [Ô][ô],[ô][Ô] & _
Text_cidade.Text & [Ô][ô],[ô][Ô] & _
Text_cep.Text & [Ô][ô],[ô][Ô] & _
Text_estado.Text & [Ô][ô],[ô][Ô] & _
Text_cpf.Text & [Ô][ô],[ô][Ô] & _
Text_rg.Text & [Ô][ô],[ô][Ô] & _
Text_cnpj.Text & [Ô][ô],[ô][Ô] & _
Text_ie.Text & [Ô][ô],[ô][Ô] & _
Text_wa.Text & [Ô][ô],[ô][Ô] & _
Text_ep.Text & [Ô][ô],[ô][Ô] & _
Text_es.Text & [Ô][ô],[ô][Ô] & _
Text_codtel.Text & [Ô][ô],[ô][Ô] & _
Text_tel.Text & [Ô][ô],[ô][Ô] & _
Text_codcel.Text & [Ô][ô],[ô][Ô] & _
Text_cel.Text & [Ô][ô],[ô][Ô] & _
Text_obs.Text & [Ô][ô]);[Ô]
.Execute [ô]grava


vinfo = MsgBox([Ô]Cadastro salvo com sucesso![Ô], vbOKOnly, [Ô]CADASTRO DE CLIENTES[Ô])

limpar_campos
travar_campos
preenche_list

End With

Else [ô]se achar o registro identifica como alteração

Dim comandoSQL As String
comandoSQL = [Ô] update receitas set [Ô] & _
[Ô]nome = [ô][Ô] & Text_nome.Text & [Ô][ô],[Ô] & _
[Ô]endereco = [ô][Ô] & Text_endereco.Text & [Ô][ô],[Ô] & _
[Ô]numero = [ô][Ô] & Text_numero.Text & [Ô][ô],[Ô] & _
[Ô]complemento = [ô][Ô] & Text_complemento.Text & [Ô][ô],[Ô] & _
[Ô]bairro = [ô][Ô] & Text_bairro.Text & [Ô][ô],[Ô] & _
[Ô]cidade = [ô][Ô] & Text_cidade.Text & [Ô][ô],[Ô] & _
[Ô]cep = [ô][Ô] & Text_cep.Text & [Ô][ô],[Ô] & _
[Ô]estado = [ô][Ô] & Text_estado.Text & [Ô][ô], [Ô] & _
[Ô]cpf = [ô][Ô] & Text_cpf.Text & [Ô][ô], [Ô] & _
[Ô]rg = [ô][Ô] & Text_rg.Text & [Ô][ô], [Ô] & _
[Ô]cnpj = [ô][Ô] & Text_cnpj.Text & [Ô][ô], [Ô] & _
[Ô]es = [ô][Ô] & Text_es.Text & [Ô][ô], [Ô] & _
[Ô]codtel = [ô][Ô] & Text_codtel.Text & [Ô][ô], [Ô] & _
[Ô]tel = [ô][Ô] & Text_tel.Text & [Ô][ô], [Ô] & _
[Ô]ep = [ô][Ô] & Text_ep.Text & [Ô][ô], [Ô] & _
[Ô]codcel = [ô][Ô] & Text_codcel.Text & [Ô][ô], [Ô] & _
[Ô]wa = [ô][Ô] & Text_wa.Text & [Ô][ô], [Ô] & _
[Ô]cel = [ô][Ô] & Text_cel.Text & [Ô][ô], [Ô] & _
[Ô]ie = [ô][Ô] & Text_ie.Text & [Ô][ô], [Ô] & _
[Ô]obs = [ô][Ô] & Text_obs.Text & [Ô][ô] [Ô] & _
[Ô]where cod = [Ô] & Text_cod.Text & [Ô];[Ô]
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = comandoSQL
.Execute
End With
vok = MsgBox([Ô]Alterações salvas com sucesso![Ô], vbOKOnly, [Ô]Aterar cadastro[Ô])

limpar_campos
travar_campos
preenche_list



End If
End With
End If
End Sub

[ô]subprocedimento que carrega a lista com os registros
[ô]do BD quando executado no evento Load do Form
Private Sub preenche_list()

With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
Do While Not rs.EOF
If Not IsNull(rs!nome) Then
List_receitas.AddItem rs!nome
End If
rs.MoveNext
Loop

End Sub

[ô]subprocedimento que quando chamado limpa os controles
[ô]do form
Private Sub limpar_campos()

Text_nome.Text = [Ô][Ô]
Text_cod.Text = [Ô][Ô]
Text_endereco.Text = [Ô][Ô]
Text_numero.Text = [Ô][Ô]
Text_complemento.Text = [Ô][Ô]
Text_bairro.Text = [Ô][Ô]
Text_cidade.Text = [Ô][Ô]
Text_cep.Text = [Ô][Ô]
Text_estado.Text = [Ô][Ô]
Text_obs.Text = [Ô][Ô]
Text_cpf.Text = [Ô][Ô]
Text_rg.Text = [Ô][Ô]
Text_cnpj.Text = [Ô][Ô]
Text_ie.Text = [Ô][Ô]
Text_ep.Text = [Ô][Ô]
Text_es.Text = [Ô][Ô]
Text_codtel.Text = [Ô][Ô]
Text_tel.Text = [Ô][Ô]
Text_wa.Text = [Ô][Ô]
Text_tel.Text = [Ô][Ô]
Text_codcel.Text = [Ô][Ô]
Text_cel.Text = [Ô][Ô]
List_receitas.Clear

End Sub

[ô]subprocedimento que trava os textbox
Private Sub travar_campos()

Text_nome.Locked = True
Text_endereco.Locked = True
Text_numero.Locked = True
Text_complemento.Locked = True
Text_bairro.Locked = True
Text_cidade.Locked = True
Text_cep.Locked = True
Text_estado.Locked = True
Text_obs.Locked = True
Text_cpf.Locked = True
Text_cnpj.Locked = True
Text_rg.Locked = True
Text_ie.Locked = True
Text_ep.Locked = True
Text_es.Locked = True
Text_wa.Locked = True
Text_codtel.Locked = True
Text_tel.Locked = True
Text_tel.Locked = True
Text_codcel.Locked =
KERPLUNK 21/09/2016 22:30:27
#467260
Resposta escolhida
Amigo, assim fica complicado. Seria bom colocar só a parte que deveria bloquear. Não é necessário colocar o código todo. Até onde vi, o que deveria fazer o que você quer é a sub [Ô]Travar_Campos[Ô]
JONATHANSTECKER 22/09/2016 05:33:36
#467268
Ficou realmente muito confuso de entender a situação, é necessário ser mais especifico para que possamos auxiliar.

Mas pelo que parece, você quer travar todos os campos ao clicar no botão novo, então basta fazer como o KERPLUNK indicou.
Inclua o método [Ô]travar_campos[Ô] dentro do evento click do botão novo.
FRATA 22/09/2016 07:12:07
#467269
Oi Bom dia; primeiramente obrigado pela atenção!
Acho que ficou meio confuso sim.
O que acontece é o seguinte:
Na interface inicial exite um toolbar com um botão chamado novo.
Quando eu clico nesse botão abre um formulário para eu inserir
um novo contato, e abre com os dois primeiros campos bloqueados
Eu preciso que ele abra com todos os campos bloqueados.
é só isso.
Bom dia e obrigado uma vez mais pela gentileza e atenção.
OMAR2011 22/09/2016 07:38:12
#467270
A minha resposta é a mesma com mais um pitaco.
Feche o tópico e abra outro no VB6/VBA.
KERPLUNK 22/09/2016 08:32:50
#467273
Citação:

:
Oi Bom dia; primeiramente obrigado pela atenção!
Acho que ficou meio confuso sim.
O que acontece é o seguinte:
Na interface inicial exite um toolbar com um botão chamado novo.
Quando eu clico nesse botão abre um formulário para eu inserir
um novo contato, e abre com os dois primeiros campos bloqueados
Eu preciso que ele abra com todos os campos bloqueados.
é só isso.
Bom dia e obrigado uma vez mais pela gentileza e atenção.


Pois então, o que você precisa fazer é a depuração do método executado no botão. Execute passo a passo a rotina dele.
FRATA 22/09/2016 09:54:58
#467278
Oi KERPLUNK...bom dia!
Não sei exatamente como fazer isso.
Sou novo nessa linguagem.
Obrigado, amigo!
KERPLUNK 22/09/2016 10:07:03
#467279
é bem simples. Seu código roda linha por linha. Vá até a sub em que deseja que o código pare. Na primeira linha de código dela, ou até mesmo na linha de declaração da sub, pressione F9. A linha toda deve ficar vermelha, aí é só rodar seu código. Quando você chegar na parte em que está marcado, o Visual Studio vai parar a execução exatamente na linha que você marcou. Aí, basta ir pressionando F8 e o seu código vai rodar de linha em linha e você pode ir vendo o efeito dele.
FRATA 22/09/2016 10:17:12
#467280
Prezado KERPLUNK:
Fiz a depuração como você havia indicado e funcionou perfeitamente.
Obrigado!
Parabéns pela seu comentário bastante didático e pelo seu conhecimento
na linguagem.
Grande abraço!!!
Tópico encerrado , respostas não são mais permitidas