Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nereu1301

[Resolvido] Nao acessa tabela

Recommended Posts

Refiz n vezes todas as linhas e não consigo entender porque não está aceitando a entrada de dados. Ele tá pulando para a linha errselecao. Por favor me ajudem.

 

Private Sub TxtCodCliente_LostFocus()
Dim cnnComando As New ADODB.Command
Dim rsSelecao As New ADODB.Recordset
Dim vInclusao As Boolean
	On Error GoTo errSelecao
	'verifica se foi digitado codigo valido
	If Val(TxtCodCliente.Text) = 0 Then
		MsgBox "Não foi digitado um código válido, verifique.", vbExclamation + vbOKOnly + vbApplicationModal, "Erro"
		Exit Sub
	End If
	Screen.MousePointer = vbHourglass
	With cnnComando
		.ActiveConnection = cnnCetecInfServiços
		.CommandType = adCmdText
		'monta o comando select para selecionar o registro na tabela.
		.CommandText = "SELECT * FROM Clientes WHERE Codigo_Cliente = " & TxtCodCliente.Text & ";"
		Set rsSelecao = .Execute
	End With
	With rsSelecao
		If .EOF And .BOF Then
			'se recorset estiver vazio nao retona registro com o codigo
			LimparDados
			'identifica a operaçao como inclusao
			vInclusao = True
		Else
			'senao atribui ao campo os dados do registro
			TxtNomeCliente.Text = !Nome
			TxtTel.Text = !Telefone
			TxtCidade.Text = !Cidade
			TxtDataInicioServico.Text = !Data_Inicio_Servico
			TxtHoraInicioServico.Text = !Hora_Inicio_Servico
			TxtProduto.Text = !Produto
			TxtMotivo.Text = !Motivo_Chamada
			TxtObs.Text = Empty & !Obs
			'identifica a operacao como alteracao:
			vInclusao = False
			'Habilita o botao excluir
			Toolbarl.Buttons(3).Enabled = True
		End If
	End With
	'desabilita a digitacao do campo codigo
	TxtCodCliente.Enabled = False
		
Saida:
	'elimina o comand e o recorset da memoria:
	Set rsSelecao = Nothing
	Set cnnComando = Nothing
	Screen.MousePointer = vbDefault
	Exit Sub
	
errSelecao:
	With Err
		If .Number <> 0 Then
			MsgBox "Houve um erro na recuperacao do registro solicitado.", vbExclamation + vbOKOnly + vbApplicationModal, "Aviso"
		   .Number = 0
		   GoTo Saida
		End If
	End With
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em qual linha gerou o erro e qual foi o erro gerado. Isso ajuda MUITO a descobrir a causa.

 

Abraços!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que ele escreveu não sabe qual foi o erro por causa do tratamento de erro.

 

nereu1301, faça o seguinte, ou retire a linha on error goto errSelecao ou clique com o botão direito do mouse sobre seu código, vá em toggle e selecione break on all error.

 

Isso fará com que o tratamento de erro não funcione e você possa nos dizer qual é a verdadeira linha que está dando erro e qual a descrição do mesmo.

 

Ficamos no aguardo.

 

Ah, bem vindo ao fórum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que ele escreveu não sabe qual foi o erro por causa do tratamento de erro.

 

nereu1301, faça o seguinte, ou retire a linha on error goto errSelecao ou clique com o botão direito do mouse sobre seu código, vá em toggle e selecione break on all error.

 

Isso fará com que o tratamento de erro não funcione e você possa nos dizer qual é a verdadeira linha que está dando erro e qual a descrição do mesmo.

 

Ficamos no aguardo.

 

Ah, bem vindo ao fórum.

Antecipadamente agradeço pela boa receptividade.

Amigo,

 

A linha que dá erro é

.activeConnectiton=cnnCetecInServiços

O erro que retorna é "Run_Time error 3709

A operaçao sol requer um objeto ole db sesseion......

 

num módulo tenho

Option Explicit
Public cnnCetecInfServiços As New ADODB.Connection

e no formSplash tenho

Private Sub Tmr1_Timer()
	On Error GoTo errConexão
	Dim cnnCetecInfServiços As New ADODB.Connection
	cnnCetecInfServiços.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
										   "Data Source=" & App.Path & "\CetecInfServiços.mdb;"
	cnnCetecInfServiços.Open
	Unload Me
	MDIFrm1.Show
	Exit Sub
errConexão:
	With Err
		If .Number <> 0 Then
			MsgBox "Houve erro na conexão com o Banco de Dados." & _
			vbCrLf & "O Sistema será encerrado.", vbCritical, vbOKOnly, "Erro de Conexão"
			.Number = 0
			Set cnnCetecInfServiços = Nothing
			End
		End If
	End With
End Sub

Fico no aguardo

Abraços

Nereu

Compartilhar este post


Link para o post
Compartilhar em outros sites

a linha correta de erro é

.ActiveConnection = cnnCetecInfServiços

 

ficou faltando uma letra na linha passada anteriormente

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu form splash

retire a declaração da variavel cnnCetecInfServiços .

 

Private Sub Tmr1_Timer()
	On Error GoTo errConexão 
	Dim cnnCetecInfServiços As New ADODB.Connection '<---- Retirar
	cnnCetecInfServiços.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
										   "Data Source=" & App.Path & "\CetecInfServiços.mdb;"
	cnnCetecInfServiços.Open
	Unload Me
	MDIFrm1.Show
	Exit Sub
errConexão:
	With Err
		If .Number <> 0 Then
			MsgBox "Houve erro na conexão com o Banco de Dados." & _
			vbCrLf & "O Sistema será encerrado.", vbCritical, vbOKOnly, "Erro de Conexão"
			.Number = 0
			Set cnnCetecInfServiços = Nothing
			End
		End If
	End With
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Scorpio!

Matou de cara. Valeu.

Muitissimo obrigado.

 

Se não for pedir demais, poderia me explicar porque essa variavel impedia o processo?

 

Nereu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entende sobre escopo de variaveis?

 

A sua variavel publica no módulo atende o projeto todo. Como você declarou outra dentro de uma sub, você iria utilizar ela em vez da publica.

Nâo sei explicar direito :lol:

 

Você estava utilizando a variavel da Sub em vez da variavel do módulo.

 

Ve se você entende essa imagem.

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.