UPDATE NAO FUNCIONA. O QUE FALTA EM MEU CODIGO?

RICK 03/02/2010 16:34:53
#333524
PREZADOS, BOA TARDE.

TENHO UM FORMULÁRIO EM VBA EXCEL(2003) COM UM OBJETO MULTIPAGE.
ESTOU ACRESCENTANDO UMA ABA PARA CONSULTA/ALTERAÇÕES DE REGISTROS.

O MEU UPDATE NÃO ESTÁ FUNCIONANDO. E NÃO DÁ MENSAGEM DE ERRO.

O BANCO DE DADOS é ACCESS(2003). CONSIGO CONSULTAR OS REGISTROS SEM NENHUM PROBLEMA,
MAS O UPDATE NÃO FUNCIONA.

ABAIXO O MEU CÓDIGO PARA MELHOR COMPREENSÃO:

[ô]A INSTRUÇÃO:

gsql = [Ô][Ô]
gsql = [Ô]UPDATE TabelaM SET Situacao = [Ô] & [Ô][ô][Ô] & cmbsituacao.Text & [Ô][ô] [Ô]
gsql = gsql & [Ô] and Oper = [Ô] & [Ô][ô][Ô] & cmbOperacional.Text & [Ô][ô] [Ô]
gsql = gsql & [Ô] WHERE idCache = [Ô] & rv!idCache & [Ô] [Ô]

[ô]RESULTADO NO IMMEDIATE(APARENTEMENTE ESTÁ CERTO)

?gsql
UPDATE TabelaM SET Situacao = [ô]RECUSADO[ô] and Oper = [ô]NÃO IDENTIFICADO[ô] WHERE idCache = 172



[ô]ABAIXO A FUNÇÃO QUE EXECUTA O SQL

On Error Resume Next

Set rs = New ADODB.Recordset


rs.Open gsql, db, adOpenKeyset, adLockReadOnly

If Err Then
MsgBox Err.Description, vbCritical, [Ô]Erro[Ô]
Err.Clear
Exit sub
End if


[ô]ESTÁ FALTANDO ALGUMA COISA?

OBS:
-TENHO PERMISSÕES PARA LER E ALTERAR NO BANCO.
-UTILIZO adOpenKeyset, adLockReadOnly POIS EM OUTRA CONSULTA PRECISO DO VALOR DO rv.RecordCount...


QUALQUER SUGESTÃO é BEM-VINDA.

AGRADEÇO A ATENÇÃO.

ATT.

RICK
TECLA 03/02/2010 16:41:11
#333525

UPDATE TabelaM
SET Situacao = [ô]RECUSADO[ô],
Oper = [ô]NÃO IDENTIFICADO[ô]
WHERE idCache = 172
RICK 03/02/2010 16:47:28
#333527
TECLA.

ALTEREI, MAS AGORA INDICOU O SEGUINTE ERRO: [Ô]A OPERAÇÃO DEVE USAR UMA CONSULTA ATUALIZÁVEL[Ô].

O QUE SIGNIFICA?

OBRIGADO PELA ATENÇÃO.

ATT.

RICK
LUIS.FLAVIO 03/02/2010 18:00:19
#333536
Amigo é a forma como você está abrindo a RECORDSET, abra da seguinte forma abaixo.

rs.Open gsql, db, adOpenKeyset, adLockOptimistic
TECLA 03/02/2010 18:03:10
#333537
sSQL = [Ô]UPDATE TabelaM SET Situacao = [ô]RECUSADO[ô], Oper = [ô]NÃO IDENTIFICADO[ô] WHERE idCache  = 172[Ô]
db.Execute sSQL
MsgBox [Ô]Atualização efetuada com sucesso![Ô], , [Ô]Atualização[Ô]
RICK 04/02/2010 11:39:40
#333602
LUIS FLAVIO.

JÁ TENTEI COM O adLockOptimistic, MAS NADA ACONTECE.

TECLA.

EXECUTEI A SUA DICA E A MSGBOX EXIBIU A MENSAGEM, PORéM, O REGISTRO NÃO FOI ATUALIZADO....

O ESTRANHO é QUE QUANDO EXECUTO UM SELECT ESPECÍFICO gsql = [Ô]SELECT * FROM CrivoCache WHERE idCache = 172 [Ô] E GUARDO O RETORNO DE UM CAMPO EM UMA VARIÁVEL COMO: LOK = rs!nomeCliente, TENHO O RETORNO DO CAMPO SEM NENHUM PROBLEMA, EX: [Ô]ROBSON ANDRADE NUNES[Ô].

E PIOR AINDA é QUE EXECUTEI A QUERY DE ATUALIZAÇÃO EM UMA CONSULTA EM MODO SQL NO ACCESS E O REGISTRO é ATUALIZADO SEM PROBLEMAS...


ESTOU REVENDO TODAS AS ABAS QUE ACESSAM O BANCO, ACREDITO QUE SEJA ALGUM TIPO DE CONFLITO, POIS HÁ VÁRIOS CURSORES EXECUTANDO CONSULTAS DIVERSAS EM UMA FUNÇÃO AMARRADA E REPLETA DE RECORDSETS E TALVEZ ISSO ESTEJA TRAVANDO A TABELA PARA ATUALIZAÇÕES.

[Ô]TODO ESSE ATRASO POR UM SIMPLES UPDATE[Ô]


AGRADEÇO AS DICAS. AGUARDO NOVAS SUGESTÕES.

ATT.

RICK.

LUIS.FLAVIO 04/02/2010 12:04:42
#333606
Amigo tente assim:

SET Rs = db.EXECUTE(sSQL)


Mas dá uma verificado no critério WHERE que você está fazendo, ele não está encontrando ou não está atualizando?
RICK 04/02/2010 12:14:50
#333608
LUIS FLAVIO.

EXECUTEI A INSTRUÇÃO E [Ô]PASSOU RETO[Ô], SEM NENHUMA ALTERAÇÃO...

COM UM gsql = [Ô]SELECT * FROM CrivoCache WHERE idCache = 172 [Ô] ELE ENCONTRA O REGISTRO...

A INSTRUÇÃO UPDATE é EXECUTADA SEM PROBLEMAS EM MODO SQL EM UMA CONSULTA DO ACCESS. O REGISTRO é ALTERADO...

ESTOU DESENHANDO OUTRO FORMULÁRIO E TENTAR A ATUALIZAÇÃO FECHANDO TODAS AS CONEXÕES, EXCETO A DA NOVA APLICAÇÃO..., ESSAS MÚLTIPLAS ABAS ESTÃO CONFUSAS DEMAIS E O ANTIGO PROGRAMADOR NÃO LEMBRA COMO FUNCIONA O FLUXO....

SE FUNCIONAR, PENSAREI EM OUTRA AMARRAÇÃO(APESAR DE NÃO SER O IDEAL)


OBRIGADO PELA ATENÇÃO.

ATT.

RICK
RICK 04/02/2010 13:42:10
#333617
PREZADOS.

DEPOIS DE MUITA PESQUISA ENCONTREI A SOLUÇÃO NO SITE http://msdn.microsoft.com:

BASTAVA UM db.Execute [Ô]COMMIT[Ô]

SÓ HAVIA VISTO ESSES COMANDOS EM PROCEDURES, MAS DEU CERTO....


OBRIGADO PELAS SUGESTÕES E ATENÇÃO.

ENCERRO O TÓPICO.


ATT.

RICK
Tópico encerrado , respostas não são mais permitidas