ERRO 3075 - OPERACAO NAO PERMITIDA

EVERSON.PASETTO 07/11/2010 16:49:41
#356846
Estou tendo este erro em um projeto meu..

O estranho é que só porque esqueci de dar um close em uma rotina.. ao salvar deu este erro..

rstconsulta.Open [Ô]select count(*) from Compromisso WHERE conta_nomeuser =[Ô] & fConvValorSQL(txtNomeUser.Text, E_Texto), cnnBanco
If rstconsulta.Fields(0) > 0 Then
intresp = MsgBox([Ô]Confirma o Pagamento da conta :[Ô] & TxtNomeConta.Text & [Ô]?[Ô], vbQuestion + vbYesNoCancel, [Ô]Atenção[Ô])
If intresp = vbYes Then
Pagamento = [Ô]1[Ô]
End If
End If
rstconsulta.Close

Neste codigo.. esqueci da ultima linha..

Agora toda vez que tendo executar o programa.. da esta mensagem de erro..
Ja tentei criar rotina para corrigir e dar um close.. mas então.. ele da pau em todas rotina Open.. close..

'Tenho um Backup do bando de dados Access.. e quando troco.. e tento executar.. ele executa normal..

Porque este erro? Pelo visto deu um pau no banco de dados.. e não no programa..
Como faço para corrigir o banco de dados ?

Obrigado e até +
MOREIRA 07/11/2010 17:10:15
#356847

acho é porque sua recordset nao está setada..

veja se não é isso

[txt-color=#e80000][txt-size=5]Set rstconsulta = New ADODB.Recordset[/txt-size][/txt-color]
rstconsulta.Open [Ô]select count(*) from Compromisso WHERE conta_nomeuser =[Ô] & fConvValorSQL(txtNomeUser.Text, E_Texto), cnnBanco
If rstconsulta.Fields(0) > 0 Then
intresp = MsgBox([Ô]Confirma o Pagamento da conta :[Ô] & TxtNomeConta.Text & [Ô]?[Ô], vbQuestion + vbYesNoCancel, [Ô]Atenção[Ô])
If intresp = vbYes Then
Pagamento = [Ô]1[Ô]
End If
End If
rstconsulta.Close

MARCELO.TREZE 07/11/2010 17:15:32
#356848
e feche assim

rstconsulta.Close
Set rstconsulta = Nothing
EVERSON.PASETTO 07/11/2010 18:12:04
#356850
Pessoal.. este é o meu codigo

Public Function fSalvarDados() As Boolean
Dim rstconsulta As New ADODB.Recordset
Dim vResp, SQL As String

If txtUsuario.Caption = [Ô][Ô] Then
MsgBox [Ô]Alteração não permitida[Ô]
Exit Function
End If

txtNomeUser.Text = [Ô][Ô]
If txtNomeUser.Text = [Ô][Ô] Then
txtNomeUser.Text = (txtUsuario.Caption + mskVencimento + txtValor + TxtNomeConta.Text + txtUsuario)
End If

If Me.txtAuxilia.Text <> [Ô]ContaPaga[Ô] Then
If fDadosValidos Then

[ô]Inicio da rotina que tira os espaços
TxtNomeConta.Text = Trim(TxtNomeConta.Text)
txtValor.Text = Trim(txtValor)
txtObs.Text = Trim(txtObs)
[ô]Fim da rotina que tira os espaços
If txtAuxilia.Text <> [Ô]ContaPaga[Ô] Then
[ô]verifica se já existe um cliente cadastrado no sistema com este nome
rstconsulta.Open [Ô]select count(*) from Compromisso WHERE conta_nomeuser =[Ô] & fConvValorSQL(txtNomeUser.Text, E_Texto), cnnBanco
[ô]conta se ja existe a Distribuidora
If rstconsulta.Fields(0) > 0 Then
MsgBox [Ô]Já existe um conta com esse nome[Ô], vbInformation, [Ô]Atenção[Ô]
Call sGravaRepetido
End If

[ô]Se ele nao encontrar o registro entao chama para gravar
If rstconsulta.Fields(0) = 0 Then
[ô]chama para gravar
Call sGravaConta
End If
End If
End If
End If

If txtAuxilia.Text = [Ô]ContaPaga[Ô] Then
rstconsulta.Open [Ô]select count(*) from Compromisso WHERE conta_nomeuser =[Ô] & fConvValorSQL(txtNomeUser.Text, E_Texto), cnnBanco
If rstconsulta.Fields(0) > 0 Then
intresp = MsgBox([Ô]Confirma o Pagamento da conta :[Ô] & TxtNomeConta.Text & [Ô]?[Ô], vbQuestion + vbYesNoCancel, [Ô]Atenção[Ô])
If intresp = vbYes Then
Pagamento = [Ô]1[Ô]
End If
End If
rstconsulta.Close
Set rstconsulta = Nothing
If intresp = vbYes Then
Call sGravaHistorico
End If
End If

End Function

Agora fora isto... quando o programa vai fazer a conexão com o bando de dados da este erro.. 3075..
Se eu trocar o banco de dados por uma outra copia.. ele passa.. funciona direito..
EVERSON.PASETTO 07/11/2010 18:16:45
#356852
Creio que o problema pode ser outro.. sem nada a ver com o codigo..
Pois ao trocar o banco de dados.. ele funciona normal.. acho que ouve um corrompimento no banco de dados do Access e agora ele fica como se tivesse aberto.. ????

Nunca vi este erro..

Dentro dele tem umas tabelas..

Cliente. Compromisso..

Ja recriei novamente.. e o erro continua..
E o estranho que copiei todas as tabelas da outra que esta funcioando..

Minha curiosidade é entender o que aconteceu com o banco de dados..
Uso o Access do Office XP..

LUIZCOMINO 07/11/2010 22:42:21
#356862
Tenta assim amigo


Public Function fSalvarDados() As Boolean
Dim rstconsulta As New ADODB.Recordset
Dim vResp, SQL As String

If txtUsuario.Caption = [Ô][Ô] Then
MsgBox [Ô]Alteração não permitida[Ô]
Exit Function
End If

txtNomeUser.Text = [Ô][Ô]
If txtNomeUser.Text = [Ô][Ô] Then
txtNomeUser.Text = (txtUsuario.Caption + mskVencimento + txtValor + TxtNomeConta.Text + txtUsuario)
End If

If Me.txtAuxilia.Text <> [Ô]ContaPaga[Ô] Then
If fDadosValidos Then

[ô]Inicio da rotina que tira os espaços
TxtNomeConta.Text = Trim(TxtNomeConta.Text)
txtValor.Text = Trim(txtValor)
txtObs.Text = Trim(txtObs)
[ô]Fim da rotina que tira os espaços
If txtAuxilia.Text <> [Ô]ContaPaga[Ô] Then
[ô]verifica se já existe um cliente cadastrado no sistema com este nome
cnnBanco
rstconsulta.Open [Ô]select count(*) from Compromisso WHERE conta_nomeuser =[Ô] & fConvValorSQL(txtNomeUser.Text, E_Texto),
[ô]conta se ja existe a Distribuidora
If rstconsulta.Fields(0) > 0 Then
MsgBox [Ô]Já existe um conta com esse nome[Ô], vbInformation, [Ô]Atenção[Ô]
Call sGravaRepetido
rstconsulta.close
End If

[ô]Se ele nao encontrar o registro entao chama para gravar
If rstconsulta.Fields(0) = 0 Then
[ô]chama para gravar
Call sGravaConta
rstconsulta.close
End If
End If
End If
End If

If txtAuxilia.Text = [Ô]ContaPaga[Ô] Then
cnnBanco
rstconsulta.Open [Ô]select count(*) from Compromisso WHERE conta_nomeuser =[Ô] & fConvValorSQL(txtNomeUser.Text, E_Texto),
If rstconsulta.Fields(0) > 0 Then
intresp = MsgBox([Ô]Confirma o Pagamento da conta :[Ô] & TxtNomeConta.Text & [Ô]?[Ô], vbQuestion + vbYesNoCancel, [Ô]Atenção[Ô])
If intresp = vbYes Then
Pagamento = [Ô]1[Ô]
rstconsulta.close
End If
End If


If intresp = vbYes Then
Call sGravaHistorico
rstconsulta.Close
End If
End If

End Function
EVERSON.PASETTO 08/11/2010 13:34:38
#356895
Luiz..
Obrigado pelo codigo..

Mas entretando o problema no projeto esta no codigo.. e sim no banco de dados.. que ficou corrompido..

Embora ja testei novamente o codigo antigo.. e um outro banco de dados do access. (Ainda bem que eu tinha uma copia de segurança do banco no meu pen drive )..

O codigo acessa normal.. mas se eu volto a botar o banco antigo.. volta a dar problema..

E olha que ja copiei a tabela do outro banco que funciona.. substitui pelo que esta dando problema.. e mesmo assim o banco continua a dizer que esta aberto..
Tópico encerrado , respostas não são mais permitidas