SELECT CASE

MAICONLS 09/06/2005 18:34:20
#88111
Boa noite, eu tenho um form para cadastro de clientes no mesmo tem uma Toolbar com um botao denominado NOVO outro denominado ALTERAR e outro SALVAR...Tenho um módulo chamado MODgeral e neste modulo tem uma variavel publica chamada ContCliente as String

Agora analizem só.

Qunado clico na Toolbar no botão de novo ele me limpa todos os campos e seta a variavél ContCliente como NOVO então eu gostaria que quando fosse clicado no botão SALVAR ele me verificasse se a variavél esta como NOVO se caso positivo então me salva as informações como um novo cadastro.

Mas quando eu clicar no botão ALTERAR ele vai me setar a variavél ContCliente como ALTERAR, neste caso quando eu clicar no botão SALVAR eu gostaria que ao invés de me adicionar um novo registro ele apenas me atualizasse os dados do registro que ja esta na tela.

Tem como se fazer isto ? Estou postando o código para análise..


Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)

Select Case Button.Index

Case 1
frmprocurar1.Show vbModal

Case 2

txtnomecliente.Text = ""
txtcpf.Text = ""
txtrg.Text = ""
txtorgaoemissor.Text = ""
txtnascimento.Text = ""
cbosexo.ListIndex = -1
cboestadocivil.ListIndex = -1
txtenderecoresidencial.Text = ""
txtbairro.Text = ""
txtcidade.Text = ""
txtuf.Text = ""
txtcep.Text = ""
cboresidencia.ListIndex = -1
txttemporesidencia.Text = ""
txtfoneresidencial.Text = ""
txtfonecelular.Text = ""
txtobservacoes.Text = ""
lblid.Caption = ""


txtnomecliente.BackColor = &H80000005
txtcpf.BackColor = &H80000005
txtrg.BackColor = &H80000005
txtorgaoemissor.BackColor = &H80000005
txtnascimento.BackColor = &H80000005
cbosexo.BackColor = &H80000005
cboestadocivil.BackColor = &H80000005
txtenderecoresidencial.BackColor = &H80000005
txtbairro.BackColor = &H80000005
txtcidade.BackColor = &H80000005
txtuf.BackColor = &H80000005
txtcep.BackColor = &H80000005
cboresidencia.BackColor = &H80000005
txttemporesidencia.BackColor = &H80000005
txtfoneresidencial.BackColor = &H80000005
txtfonecelular.BackColor = &H80000005
txtobservacoes.BackColor = &H80000005

txtnomecliente.Enabled = True
txtcpf.Enabled = True
txtrg.Enabled = True
txtorgaoemissor.Enabled = True
txtnascimento.Enabled = True
cbosexo.Enabled = True
cboestadocivil.Enabled = True
txtenderecoresidencial.Enabled = True
txtbairro.Enabled = True
txtcidade.Enabled = True
txtuf.Enabled = True
txtcep.Enabled = True
cboresidencia.Enabled = True
txttemporesidencia.Enabled = True
txtfoneresidencial.Enabled = True
txtfonecelular.Enabled = True
txtobservacoes.Enabled = True

txtnomecliente.SetFocus
Toolbar1.Buttons(1).Enabled = False
Toolbar1.Buttons(2).Enabled = False
Toolbar1.Buttons(3).Enabled = False
Toolbar1.Buttons(4).Enabled = True
Toolbar1.Buttons(5).Enabled = False
Toolbar1.Buttons(6).Enabled = True
Toolbar1.Buttons(7).Enabled = False
Contcliente = novo




Case 4 (ESTE é O CASE DO BOTÃO SALVAR)







Case 6

txtnomecliente.Text = ""
txtcpf.Text = ""
txtrg.Text = ""
txtorgaoemissor.Text = ""
txtnascimento.Text = ""
cbosexo.ListIndex = -1
cboestadocivil.ListIndex = -1
txtenderecoresidencial.Text = ""
txtbairro.Text = ""
txtcidade.Text = ""
txtuf.Text = ""
txtcep.Text = ""
cboresidencia.ListIndex = -1
txttemporesidencia.Text = ""
txtfoneresidencial.Text = ""
txtfonecelular.Text = ""
txtobservacoes.Text = ""
lblid.Caption = ""

txtnomecliente.Enabled = False
txtcpf.Enabled = False
txtrg.Enabled = False
txtorgaoemissor.Enabled = False
txtnascimento.Enabled = False
cbosexo.Enabled = False
cboestadocivil.Enabled = False
txtenderecoresidencial.Enabled = False
txtbairro.Enabled = False
txtcidade.Enabled = False
txtuf.Enabled = False
txtcep.Enabled = False
cboresidencia.Enabled = False
txttemporesidencia.Enabled = False
txtfoneresidencial.Enabled = False
txtfonecelular.Enabled = False
txtobservacoes.Enabled = False

txtnomecliente.BackColor = &H80000000
txtcpf.BackColor = &H80000000
txtrg.BackColor = &H80000000
txtorgaoemissor.BackColor = &H80000000
txtnascimento.BackColor = &H80000000
cbosexo.BackColor = &H80000000
cboestadocivil.BackColor = &H80000000
txtenderecoresidencial.BackColor = &H80000000
txtbairro.BackColor = &H80000000
txtcidade.BackColor = &H80000000
txtuf.BackColor = &H80000000
txtcep.BackColor = &H80000000
cboresidencia.BackColor = &H80000000
txttemporesidencia.BackColor = &H80000000
txtfoneresidencial.BackColor = &H80000000
txtfonecelular.BackColor = &H80000000
txtobservacoes.BackColor = &H80000000
Toolbar1.Buttons(1).Enabled = True
Toolbar1.Buttons(2).Enabled = True
Toolbar1.Buttons(3).Enabled = False
Toolbar1.Buttons(4).Enabled = False
Toolbar1.Buttons(5).Enabled = False
Toolbar1.Buttons(6).Enabled = False
Toolbar1.Buttons(7).Enabled = True
Contcliente = 0




Case 7
Unload Me

End Select
End Sub
MAICONLS 09/06/2005 19:08:28
#88113
Consegui fazer funcionar, mas agora tenho outro problema, antes de salvar ou atualizar tenho que verificar se não existe nenhum campo do form em branco...Ai vai o codigo como ficou se alguem tiver alguma idéia de como posso fazer a validação...Por favor ajude...Obrigado.

O código abaixo é do select caso da toolbar, no caso o botão 4 é para salvar os dados.



Case 4

Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset

If Contcliente = "novo" Then

Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=x:\Data.mdb;Jet OLEDB:Database Password=tmonrsr2308s;"
Rs.Open "SELECT * FROM CadClientes", Cnn, adOpenKeyset, adLockOptimistic

Rs.AddNew
Rs.Fields("NomeCliente") = txtnomecliente.Text
Rs.Fields("Cpf") = txtcpf.Text
Rs.Fields("Rg") = txtrg.Text
Rs.Fields("OrgaoEmissor") = txtorgaoemissor.Text
Rs.Fields("Nascimento") = txtnascimento.Text
Rs.Fields("Sexo") = cbosexo.Text
Rs.Fields("EstadoCivil") = cboestadocivil.Text
Rs.Fields("Enderecoresidencial") = txtenderecoresidencial.Text
Rs.Fields("Bairro") = txtbairro.Text
Rs.Fields("Cidade") = txtcidade.Text
Rs.Fields("Uf") = txtuf.Text
Rs.Fields("Cep") = txtcep.Text
Rs.Fields("TipoResidencia") = cboresidencia.Text
Rs.Fields("TempoResidencia") = txttemporesidencia.Text
Rs.Fields("TelefoneResidencial") = txtfoneresidencial.Text
Rs.Fields("TelefoneCelular") = txtfonecelular.Text
Rs.Fields("Observacoes") = txtobservacoes.Text
Rs.Update

Rs.Close
Set Rs = Nothing
Cnn.Close
Set Cnn = Nothing

MsgBox "Cliente cadastrado com sucesso!", vbInformation, " Atenção!"

txtnomecliente.Text = ""
txtcpf.Text = ""
txtrg.Text = ""
txtorgaoemissor.Text = ""
txtnascimento.Text = ""
cbosexo.ListIndex = -1
cboestadocivil.ListIndex = -1
txtenderecoresidencial.Text = ""
txtbairro.Text = ""
txtcidade.Text = ""
txtuf.Text = ""
txtcep.Text = ""
cboresidencia.ListIndex = -1
txttemporesidencia.Text = ""
txtfoneresidencial.Text = ""
txtfonecelular.Text = ""
txtobservacoes.Text = ""
lblid.Caption = ""

Else

Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=x:\Data.mdb;Jet OLEDB:Database Password=tmonrsr2308s;"
Rs.Open "SELECT * FROM CadClientes Where Id = " & lblid.Caption, Cnn, adOpenKeyset, adLockOptimistic

Rs.Fields("NomeCliente") = txtnomecliente.Text
Rs.Fields("Cpf") = txtcpf.Text
Rs.Fields("Rg") = txtrg.Text
Rs.Fields("OrgaoEmissor") = txtorgaoemissor.Text
Rs.Fields("Nascimento") = txtnascimento.Text
Rs.Fields("Sexo") = cbosexo.Text
Rs.Fields("EstadoCivil") = cboestadocivil.Text
Rs.Fields("Enderecoresidencial") = txtenderecoresidencial.Text
Rs.Fields("Bairro") = txtbairro.Text
Rs.Fields("Cidade") = txtcidade.Text
Rs.Fields("Uf") = txtuf.Text
Rs.Fields("Cep") = txtcep.Text
Rs.Fields("TipoResidencia") = cboresidencia.Text
Rs.Fields("TempoResidencia") = txttemporesidencia.Text
Rs.Fields("TelefoneResidencial") = txtfoneresidencial.Text
Rs.Fields("TelefoneCelular") = txtfonecelular.Text
Rs.Fields("Observacoes") = txtobservacoes.Text
Rs.Update

MsgBox "Cadastro alterado com sucesso!", vbInformation, " Atenção!"

txtnomecliente.Text = ""
txtcpf.Text = ""
txtrg.Text = ""
txtorgaoemissor.Text = ""
txtnascimento.Text = ""
cbosexo.ListIndex = -1
cboestadocivil.ListIndex = -1
txtenderecoresidencial.Text = ""
txtbairro.Text = ""
txtcidade.Text = ""
txtuf.Text = ""
txtcep.Text = ""
cboresidencia.ListIndex = -1
txttemporesidencia.Text = ""
txtfoneresidencial.Text = ""
txtfonecelular.Text = ""
txtobservacoes.Text = ""
lblid.Caption = ""

Rs.Close
Set Rs = Nothing
Cnn.Close
Set Cnn = Nothing


End If
USUARIO.EXCLUIDOS 09/06/2005 21:50:40
#88127
Cara tenho uma rotininha têta pra vc:
Preste atenção...

Public Function limpar(Form As Form)
Dim txt As Control

For Each txt In Form.Controls
If TypeOf txt Is TextBox Then txt.text = ""
Next txt

end function

então vc poder colocar um botão que chame essa procedure:
por exemplo: limpar(form1).....isso vai limpar todos os text box do formulário, vai te economizar todas essas linhas de código, e o mesmo esquema pode ser feito para ver se tem alguma coisa em branco, olhe só ....

Public Function branco(Form As Form)as boolean
Dim txt As Control
branco = false

For Each txt In Form.Controls
If TypeOf txt Is TextBox Then
if txt.text = "" then branco = true
end if
Next txt

end function


viu? agora vc coloca assim em um botão:

if branco(form1)=true then
msgbox "existe campos em branco !"
exit sub
end if

se tiver alguma coisa em branco em alguma textbox ele vai dar a mensagem e sair da rotina!


falou amigo, espero ter ajudado... ATE +
MAICONLS 10/06/2005 10:04:47
#88190
Mas o problema é que eu não posso somente verificar se estão somente em branco, eu tenho que validar eles, por exemplo validar cpf, telefone etc...
USUARIO.EXCLUIDOS 10/06/2005 10:42:54
#88197
Resposta escolhida
maiconls algumas dicas utilize o select case para chamas functions ou subs
exemplo:
select case button.index
case 1
suarotina
case 2
suarotina2
case 3
suarotina3
case 4
if checacampos = true then
if contcliente = "novo"
call incluir
else
call salvar
end if
else
msgbox "campos invalidos"
end if
end select


Public Funtion ChecaCampos()as boolean
ChecaCampos = false
rotinaparachecarcampos
'se deu algum erro voce da um exit function o que vai deixar a function como false entao
'vai chamar a msgbox de erro de campos
'se tudo ocorreu bem muda para true o que permite chamar a rotina para incluir ou salvar
ChecaCampos = true
End Function
Tópico encerrado , respostas não são mais permitidas