FUNCAO NAO EXERCE SUA FUNCAO

ADRIANOM 13/01/2014 12:00:49
#432983
Prezados,

Após ter aquele probleminha com as aspas, penso ter solucionado....

... agora parto para outra dúvida...

é a seguinte... tenho meu formulário para adicionar novos funcionários, e dentre todos os campos, tenho o de endereço.
Gostaria de que, quando clicar no botão OK... (salvar), o programa - além de exercer a função de salvar - buscasse o registro na tabela [Ô]ENDERECO[Ô], e averiguasse que: [Ô]Se o registro não foi encontrado, ele irá salvar o que foi digitado no cboEndereco. Casao encontre, não fará nada[Ô].

Segue o código com o fragmento das funções. O problema (o ato de não adicionar o endereço inexistente) está na função [Ô]SalvarEndereco[Ô]. Não há erro, porém ele simplesmente não insere nada no banco de dados... HELPPPP!!!!!!


Citação:


Private Sub CarregarEndereco()
With ConConexao
.ActiveConnection = CONEXAO
.CommandType = adCmdText
.CommandText = [Ô]SELECT ENDERECO FROM ENDERECO ORDER BY ENDERECO;[Ô]
Set RSEnderecos = .Execute
End With
Do While Not RSEnderecos.EOF
cboEndereco.AddItem RSEnderecos!Endereco
RSEnderecos.MoveNext
Loop
If cboEndereco.ListCount < 1 Then Exit Sub
cboEndereco.ListIndex = 0
cboEndereco.Text = [Ô][Ô]
RSEnderecos.Close
End Sub



Sub SalvarEndereco()
[ô][ô]acrescentará um novo endereço no caso de não existir um registro com o mesmo
[ô]varrerá todo o registro, primeiramente, na busca pelo endereço digitado
[ô]verifica se nada foi digitado para evitar de ficar inserindo campos vazios
If cboEndereco.Text = [Ô][Ô] Then

Exit Sub

Else

Set CNN = New ADODB.Connection
CNN.Open CONEXAO
CNN.CursorLocation = adUseClient
Set RSEnderecos = New ADODB.Recordset
RSEnderecos.Open [Ô]SELECT * FROM ENDERECO WHERE ENDERECO Like [ô][Ô] & cboEndereco.Text & [Ô]%[ô] Order By ENDERECO[Ô], CNN, adOpenDynamic, adLockOptimistic
If RSEnderecos.RecordCount = 0 Then
[ô]Adicionar novo endereço
SQLEndereco = SQLEndereco & [Ô][Ô]
SQLEndereco = SQLEndereco & [Ô]INSERT INTO ENDERECO([Ô]
SQLEndereco = SQLEndereco & [Ô]ENDERECO[Ô]
SQLEndereco = SQLEndereco & [Ô]VALUES([Ô]
SQLEndereco = SQLEndereco & [Ô][ô][Ô] & cboEndereco.Text & [Ô][ô])[Ô]
End If

End If

End Sub


Sub Salvar()

If txtNome.Text = [Ô][Ô] Then
MsgBox [Ô]Favor preencher o campo [ô]NOME[ô] deste módulo.[Ô], vbCritical, [Ô]GWorks Softs[Ô]
txtNome.SetFocus
Exit Sub
Else
[ô]Salva os dados
sSQL = sSQL & [Ô][Ô]
sSQL = sSQL & [Ô]INSERT INTO FUNCIONARIOS([Ô]
sSQL = sSQL & [Ô]CODIGO,NOME,[Ô]
sSQL = sSQL & [Ô]ENDERECO,[Ô]
sSQL = sSQL & [Ô]NUMERO,BAIRRO,CIDADE,[Ô]
sSQL = sSQL & [Ô]TELEFONE,CELULAR,[Ô]
sSQL = sSQL & [Ô]ADMISSAO,DEMISSAO,ATIVO,OBSERVACAO)[Ô]
sSQL = sSQL & [Ô]VALUES([Ô]
sSQL = sSQL & [Ô][ô][Ô] & txtCodigo.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & txtNome.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & cboEndereco.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & txtNumero.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & cboBairro.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & cboCidade.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & IIf(txtTel.ClipText = [Ô][Ô], Empty, txtTel.Text) & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & IIf(txtCel.ClipText = [Ô][Ô], Empty, txtCel.Text) & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & IIf(txtAdmissao.ClipText = [Ô][Ô], Empty, VBA.Format(txtAdmissao.Text, [Ô]yyyy/mm/dd[Ô])) & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & IIf(txtDemissao.ClipText = [Ô][Ô], Empty, VBA.Format(txtDemissao.Text, [Ô]yyyy/mm/dd[Ô])) & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & IIf(chkFuncionario.Value = vbChecked, 1, 0) & [Ô][ô][Ô] & [Ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & txtObservacao.Text & [Ô][ô])[Ô]
With ConConexao
.ActiveConnection = CONEXAO
.CommandType = adCmdText
.CommandText = sSQL
.Execute
End With

[ô]Altera o campo seqlogin
Set RSSEQ = New ADODB.Recordset
RSSEQ.Open [Ô]SELECT * FROM SEQ[Ô], CNN, adOpenStatic, adLockOptimistic
SQL = [Ô]UPDATE SEQ Set SEQFUNCIONARIOS=[ô][Ô] & txtCodigo & [Ô][ô][Ô]
CNN.BeginTrans
CNN.Execute SQL
CNN.CommitTrans


[ô]Faz uso da função para adicionar novo endereço,
[ô]caso o mesmo ainda não tenha sido inserido.
Call SalvarEndereco

frmFuncionarios.LoadEntries
Unload Me
End If

End Sub

MARCELO.TREZE 13/01/2014 12:24:08
#432985
Resposta escolhida
Bom vamos lá primeiro evite o like no busca, segundo acredito que o recordcount não esteja funcionando retornando sempre zero (encontrando ou não registro, tente o seguinte:

Set CNN = New ADODB.Connection
CNN.Open CONEXAO
CNN.CursorLocation = adUseClient
Set RSEnderecos = New ADODB.Recordset
RSEnderecos.Open [Ô]SELECT * FROM ENDERECO WHERE ENDERECO =[ô][Ô] & cboEndereco.Text & [Ô][ô][Ô], CNN, adOpenDynamic, adLockOptimistic
If (RSEnderecos.BOF = True And RSEnderecos.EOF = True) Then
[ô]Adicionar novo endereço
SQLEndereco = SQLEndereco & [Ô][Ô]
SQLEndereco = SQLEndereco & [Ô]INSERT INTO ENDERECO([Ô]
SQLEndereco = SQLEndereco & [Ô]ENDERECO[Ô]
SQLEndereco = SQLEndereco & [Ô]VALUES([Ô]
SQLEndereco = SQLEndereco & [Ô][ô][Ô] & cboEndereco.Text & [Ô][ô])[Ô]
End If
ADRIANOM 13/01/2014 13:40:34
#432990
Grande Brother Marcelo Treze.... sumiu ein!!

Bem, sua ajuda me encaminhou 96% dentro do meu código. Dessa forma, consegui inseri; porém quando adicionava outro usuário com o mesmo endereço, ele gerava erro na função insert....

Assim, utilizei as suas linhas de código de maneira alterada. Ficou assim:

Citação:


Set CNN = New ADODB.Connection
CNN.Open CONEXAO
CNN.CursorLocation = adUseClient
Set RSEnderecos = New ADODB.Recordset
RSEnderecos.Open [Ô]SELECT * FROM ENDERECO WHERE ENDERECO =[ô][Ô] & cboEndereco.Text & [Ô][ô][Ô], CNN, adOpenDynamic, adLockOptimistic
If RSEnderecos.RecordCount = 0 Then
[ô]Adicionar novo endereço
SQLEndereco = SQLEndereco & [Ô][Ô]
SQLEndereco = SQLEndereco & [Ô]INSERT INTO ENDERECO([Ô]
SQLEndereco = SQLEndereco & [Ô] ENDERECO)[Ô]
SQLEndereco = SQLEndereco & [Ô] VALUES([Ô]
SQLEndereco = SQLEndereco & [Ô][ô][Ô] & cboEndereco.Text & [Ô][ô])[Ô]
CNN.BeginTrans
CNN.Execute SQLEndereco
CNN.CommitTrans
RSEnderecos.Close
End If



No mais, muito obrigado!
Tópico encerrado , respostas não são mais permitidas